diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 40997d5..0a201d9 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -7,15 +7,24 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Deploy via SSH + - name: Blue-Green Deploy via SSH uses: appleboy/ssh-action@master with: host: 10.1.1.124 username: juru key: ${{ secrets.SSH_PRIVATE_KEY }} script: | - cd /home/juru/Portal-dias-rota - git pull origin main - npm install --legacy-peer-deps + RELEASE_NAME=release-$(date +%Y%m%d%H%M%S) + RELEASE_PATH=/home/juru/apps/releases/$RELEASE_NAME + + git clone http://10.1.1.124:3000/joelson/Portal-dias-rota.git $RELEASE_PATH + cd $RELEASE_PATH + + npm install npm run build - pm2 restart portal-dias-rota || pm2 start npm --name "portal-dias-rota" -- start \ No newline at end of file + + ln -sfn $RELEASE_PATH /home/juru/apps/current + + pm2 reload portal-dias-rota || pm2 start /home/juru/apps/current/ecosystem.config.js + + ls -dt /home/juru/apps/releases/* | tail -n +5 | xargs rm -rf \ No newline at end of file diff --git a/.gitea/workflows/rollback.yaml b/.gitea/workflows/rollback.yaml index a7cf9b5..fd676b1 100644 --- a/.gitea/workflows/rollback.yaml +++ b/.gitea/workflows/rollback.yaml @@ -1,25 +1,26 @@ -name: Manual Rollback +name: Rollback para Versão Anterior on: - workflow_dispatch: # Permite rodar manualmente pela interface do Gitea - inputs: - commit_hash: - description: 'Hash do commit para retornar' - required: true + workflow_dispatch: # Isso faz aparecer um botão "Run Workflow" no Gitea jobs: rollback: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - - name: Execute Rollback via SSH + - name: Reverter Link Simbólico uses: appleboy/ssh-action@master with: host: 10.1.1.124 username: juru key: ${{ secrets.SSH_PRIVATE_KEY }} script: | - cd /home/juru/Portal-dias-rota - git fetch origin - git reset --hard ${{ github.event.inputs.commit_hash }} - npm install --production - npm run build - pm2 reload portal-dias-rota \ No newline at end of file + PREVIOUS_RELEASE=$(ls -dt /home/juru/apps/releases/* | sed -n '2p') + + if [ -z "$PREVIOUS_RELEASE" ]; then + echo "Erro: Nenhuma versão anterior encontrada!" + exit 1 + fi + + ln -sfn $PREVIOUS_RELEASE /home/juru/apps/current + + pm2 reload portal-dias-rota + echo "Rollback para $PREVIOUS_RELEASE concluído com sucesso!" \ No newline at end of file