diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 015ed923..3fa250d4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,29 +5,45 @@ on: # - main jobs: + push-to-registry: + name: Push to DockerHub Registry + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: "zulu" + + - name: Login to DockerHub + run: echo ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin + + - name: Build and push Docker image + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api . + docker push ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api + deploy: name: Deploy to Azure VM runs-on: ubuntu-latest + needs: push-to-registry environment: name: azure-production - url: ${{ vars.AZURE_VM_IP }} + url: https://api.mandacarubroker.com.br/docs steps: - name: Set up Azure CLI uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - - name: Connect to Azure VM and run Docker + - name: Save SSH private key to file run: | echo "${{ secrets.SSH_PRIVATE_KEY }}" > private_key chmod 400 private_key - - name: Echo environment variables - run: | - echo ${{ vars.AZURE_VM_IP }} - echo ${{ vars.AZURE_VM_USER }} - echo ${{ vars.MANDACARU_SQL_INIT_MODE }} - echo ${{ vars.MANDACARU_API_PORT }} - - - name: Deploy to Azure VM + - name: Deploy to Azure VM and run Docker run: ssh -o StrictHostKeyChecking=no -i private_key ${{ vars.AZURE_VM_USER }}@${{ vars.AZURE_VM_IP }} 'sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api || true && sudo docker stop mandacarubroker-api || true && docker rm mandacarubroker-api || true && docker run --log-opt labels=applications,environment --restart unless-stopped --name mandacarubroker-api -e MANDACARU_POSTGRES_HOST=${{ secrets.MANDACARU_POSTGRES_HOST }} -e MANDACARU_POSTGRES_PORT=${{ secrets.MANDACARU_POSTGRES_PORT }} -e MANDACARU_POSTGRES_DB=${{ secrets.MANDACARU_POSTGRES_DB }} -e MANDACARU_POSTGRES_USER=${{ secrets.MANDACARU_POSTGRES_USER }} -e MANDACARU_POSTGRES_PASSWORD=${{ secrets.MANDACARU_POSTGRES_PASSWORD }} -e MANDACARU_SQL_INIT_MODE=${{ vars.MANDACARU_SQL_INIT_MODE }} -e MANDACARU_JWT_SECRET=${{ secrets.MANDACARU_JWT_SECRET }} -e MANDACARU_API_PORT=${{ vars.MANDACARU_API_PORT }} -p ${{ vars.MANDACARU_API_PORT }}:8080 -d ${{ secrets.DOCKERHUB_USERNAME }}/mandacarubroker-api'