JobmakerSite/build.sh
Ricardo Carneiro 55384f40b7
Some checks are pending
Build and Deploy JobMaker / build (push) Waiting to run
Build and Deploy JobMaker / deploy (push) Blocked by required conditions
Build and Deploy JobMaker / notify (push) Blocked by required conditions
feat: versão inicial + actions
2025-06-17 16:25:23 -03:00

244 lines
5.2 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# build.sh - Script para build e deploy do JobMaker
set -e
echo "🚀 JobMaker Build & Deploy Script"
echo "================================="
# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Função para logs coloridos
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
# Verificar se Docker está instalado
if ! command -v docker &> /dev/null; then
log_error "Docker não está instalado!"
exit 1
fi
# Verificar estrutura de arquivos
log_info "Verificando estrutura de arquivos..."
required_files=(
"index.html"
"en/index.html"
"css/styles.css"
"js/scripts.js"
"assets/img/jobmaker_logo.png"
"Dockerfile"
"nginx.conf"
)
for file in "${required_files[@]}"; do
if [[ ! -f "$file" ]]; then
log_error "Arquivo obrigatório não encontrado: $file"
exit 1
fi
done
log_success "Todos os arquivos obrigatórios encontrados!"
# Build da imagem Docker
log_info "Construindo imagem Docker..."
IMAGE_NAME="jobmaker-website"
IMAGE_TAG="latest"
docker build -t $IMAGE_NAME:$IMAGE_TAG . || {
log_error "Falha no build da imagem Docker!"
exit 1
}
log_success "Imagem Docker construída: $IMAGE_NAME:$IMAGE_TAG"
# Parar container existente se estiver rodando
if docker ps -q -f name=jobmaker-web &> /dev/null; then
log_info "Parando container existente..."
docker stop jobmaker-web || true
docker rm jobmaker-web || true
fi
# Executar novo container
log_info "Iniciando novo container..."
docker run -d \
--name jobmaker-web \
-p 8080:80 \
--restart unless-stopped \
$IMAGE_NAME:$IMAGE_TAG || {
log_error "Falha ao iniciar container!"
exit 1
}
log_success "Container iniciado com sucesso!"
# Verificar se o site está respondendo
log_info "Verificando se o site está respondendo..."
sleep 3
if curl -f http://localhost:8080 &> /dev/null; then
log_success "Site está online! 🎉"
echo ""
echo "📍 URLs disponíveis:"
echo " Português: http://localhost:8080"
echo " English: http://localhost:8080/en/"
echo ""
echo "🐳 Comandos Docker úteis:"
echo " Ver logs: docker logs jobmaker-web"
echo " Parar: docker stop jobmaker-web"
echo " Reiniciar: docker restart jobmaker-web"
echo " Remover: docker rm -f jobmaker-web"
else
log_error "Site não está respondendo!"
echo ""
echo "🔍 Para debug, verifique os logs:"
echo " docker logs jobmaker-web"
exit 1
fi
# Mostrar informações do container
echo ""
log_info "Informações do container:"
docker ps | grep jobmaker-web
echo ""
log_success "Deploy concluído com sucesso! 🚀"
---
#!/bin/bash
# deploy-production.sh - Script para deploy em produção
set -e
echo "🚀 JobMaker Production Deploy"
echo "============================"
# Verificar se estamos na branch main
BRANCH=$(git branch --show-current)
if [[ "$BRANCH" != "main" ]]; then
log_error "Deploy de produção deve ser feito da branch main!"
log_info "Branch atual: $BRANCH"
exit 1
fi
# Verificar se não há mudanças pendentes
if [[ -n $(git status --porcelain) ]]; then
log_error "Há mudanças não commitadas!"
log_info "Commit suas mudanças antes do deploy."
exit 1
fi
# Configurações de produção
REGISTRY="your-registry.com" # Substituir pelo seu registry
IMAGE_NAME="jobmaker-website"
VERSION=$(git rev-parse --short HEAD)
PRODUCTION_TAG="$REGISTRY/$IMAGE_NAME:$VERSION"
LATEST_TAG="$REGISTRY/$IMAGE_NAME:latest"
log_info "Versão: $VERSION"
# Build da imagem
log_info "Construindo imagem para produção..."
docker build -t $PRODUCTION_TAG -t $LATEST_TAG .
# Push para registry
log_info "Enviando imagem para registry..."
docker push $PRODUCTION_TAG
docker push $LATEST_TAG
# Deploy (exemplo para Docker Swarm)
log_info "Fazendo deploy em produção..."
# Criar/atualizar serviço Docker Swarm
docker service create \
--name jobmaker-web \
--publish 80:80 \
--replicas 2 \
--update-parallelism 1 \
--update-delay 10s \
--restart-condition on-failure \
--restart-max-attempts 3 \
$LATEST_TAG || \
docker service update \
--image $LATEST_TAG \
jobmaker-web
log_success "Deploy de produção concluído!"
echo ""
echo "🌐 Site em produção:"
echo " https://jobmaker.com.br"
echo " https://jobmaker.com.br/en/"
---
# docker-compose.yml - Para desenvolvimento local
version: '3.8'
services:
jobmaker-web:
build: .
ports:
- "8080:80"
volumes:
- .:/usr/share/nginx/html:ro
restart: unless-stopped
container_name: jobmaker-web-dev
# Nginx para HTTPS local (desenvolvimento)
nginx-ssl:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx-ssl.conf:/etc/nginx/conf.d/default.conf
- ./ssl/:/etc/ssl/certs/
depends_on:
- jobmaker-web
profiles:
- ssl
---
# .dockerignore
.git
.gitignore
README.md
*.md
.env
.env.*
node_modules
*.log
.DS_Store
Thumbs.db
# Arquivos de desenvolvimento
*.sh
docker-compose.yml
.dockerignore
# Arquivos temporários
*.tmp
*.temp