name: Docker CI/CD on: push: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v4 ## Login no Docker Hub - name: Log in to Docker Hub run: echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin ## Converter github.actor para minúsculas e salvar em variável - name: Convert GitHub Username to Lowercase run: echo "GITHUB_ACTOR_LOWER=$(echo ${{ github.actor }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV ## Login no GitHub Container Registry (GHCR) - name: Log in to GitHub Container Registry (GHCR) run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin ## Build e Tag da Imagem Docker - name: Build and Tag Docker Image run: | docker build -t link70/vendaweb:latest . docker tag link70/vendaweb:latest link70/vendaweb:$(date +%Y%m%d%H%M) docker tag link70/vendaweb:latest ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:latest docker tag link70/vendaweb:latest ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:$(date +%Y%m%d%H%M) ## Push da Imagem para o Docker Hub - name: Push Docker Image to Docker Hub run: | docker push link70/vendaweb:latest docker push link70/vendaweb:$(date +%Y%m%d%H%M) ## Push da Imagem para o GHCR - name: Push Docker Image to GitHub Container Registry (GHCR) run: | docker push ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:latest docker push ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:$(date +%Y%m%d%H%M) deploy: runs-on: ubuntu-latest needs: build steps: - name: SSH into Server and Deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} password: ${{ secrets.SERVER_PASSWORD }} script: | docker login ghcr.io -u "$GITHUB_ACTOR_LOWER" -p "${{ secrets.GITHUB_TOKEN }}" docker pull ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:latest docker stop vendaweb || true docker rm vendaweb || true docker run -d --name vendaweb -p 80:80 ghcr.io/$GITHUB_ACTOR_LOWER/vendaweb:latest