OneConversorTemplate/.gitea/workflows/deploy.yml
Ricardo Carneiro c06c34a5c9
Some checks failed
Deploy ASP.NET MVC to OCI / build-and-deploy (push) Failing after 2m36s
fix: runner name
2025-06-02 21:44:27 -03:00

106 lines
3.7 KiB
YAML

name: Deploy ASP.NET MVC to OCI
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
build-and-deploy:
runs-on: localACDC
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: registry.redecarneir.us
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/arm64
push: true
tags: |
registry.redecarneir.us/onlyoneaccesstemplate:latest
registry.redecarneir.us/onlyoneaccesstemplate:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Deploy to OCI Server
uses: appleboy/ssh-action@v1.0.3
with:
host: 129.146.116.218
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
script: |
# Login no registry Docker
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login registry.redecarneir.us -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
# Para qualquer container que esteja usando a porta 80
echo "=== Verificando containers na porta 80 ==="
CONTAINERS_PORT_80=$(docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" | grep ':80->' | awk '{print $2}' || true)
if [ ! -z "$CONTAINERS_PORT_80" ]; then
echo "Parando containers na porta 80: $CONTAINERS_PORT_80"
echo "$CONTAINERS_PORT_80" | xargs -r docker stop
echo "$CONTAINERS_PORT_80" | xargs -r docker rm
else
echo "Nenhum container encontrado na porta 80"
fi
# Para o container anterior da aplicação (se existir)
docker stop onlyoneaccesstemplate || true
docker rm onlyoneaccesstemplate || true
# Remove imagem antiga
docker rmi registry.redecarneir.us/onlyoneaccesstemplate:latest || true
# Puxa nova imagem
docker pull registry.redecarneir.us/onlyoneaccesstemplate:latest
# Executa o novo container na porta 80
docker run -d \
--name onlyoneaccesstemplate \
--restart unless-stopped \
-p 80:8080 \
-p 443:8081 \
-e ASPNETCORE_ENVIRONMENT=Production \
-e ASPNETCORE_URLS="http://+:8080;https://+:8081" \
registry.redecarneir.us/onlyoneaccesstemplate:latest
# Limpa imagens não utilizadas
docker image prune -f
# Verifica se o container está rodando
docker ps | grep onlyoneaccesstemplate
# Testa se a aplicação está respondendo na porta 80
sleep 10
curl -f http://localhost:80 || echo "Aplicação pode estar inicializando..."
- name: Verify deployment
uses: appleboy/ssh-action@v1.0.3
with:
host: 129.146.116.218
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
script: |
echo "=== Status dos containers ==="
docker ps -a | grep onlyoneaccesstemplate
echo "=== Logs da aplicação (últimas 20 linhas) ==="
docker logs onlyoneaccesstemplate --tail 20
echo "=== Teste de conectividade ==="
curl -I http://localhost:80 || echo "Aplicação ainda não está acessível"