Merge branch 'main' of github.com:RMCampos/tasknote #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push API Docker Image | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'server/**/*.java' | |
| - 'server/**/*.xml' | |
| - 'server/pom.xml' | |
| jobs: | |
| build-and-push: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| packages: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set lowercase repo name | |
| id: repo | |
| run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT | |
| - name: Set up Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '21' | |
| cache: 'maven' | |
| - name: Increment version in pom.xml | |
| id: version | |
| working-directory: ./server | |
| run: | | |
| # Extract current version from pom.xml | |
| CURRENT_VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) | |
| echo "Current version: ${CURRENT_VERSION}" | |
| # Increment version | |
| NEW_VERSION=$((CURRENT_VERSION + 1)) | |
| echo "New version: ${NEW_VERSION}" | |
| # Update pom.xml with new version | |
| ./mvnw versions:set -DnewVersion=${NEW_VERSION} -DgenerateBackupFiles=false -q | |
| # Output for later steps | |
| echo "version=${NEW_VERSION}" >> $GITHUB_OUTPUT | |
| - name: Commit version bump | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add server/pom.xml | |
| git commit -m "chore: bump api version to ${{ steps.version.outputs.version }} [skip ci]" | |
| git push | |
| - name: Log in to GitHub Container Registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build Docker image with Spring Boot | |
| working-directory: ./server | |
| run: | | |
| ./mvnw -Pnative -DskipTests spring-boot:build-image \ | |
| -Dspring-boot.build-image.imageName=ghcr.io/${{ steps.repo.outputs.name }}/api:latest | |
| - name: Tag and push Docker image | |
| run: | | |
| docker tag ghcr.io/${{ steps.repo.outputs.name }}/api:latest ghcr.io/${{ steps.repo.outputs.name }}/api:${{ steps.version.outputs.version }} | |
| docker push ghcr.io/${{ steps.repo.outputs.name }}/api:latest | |
| docker push ghcr.io/${{ steps.repo.outputs.name }}/api:${{ steps.version.outputs.version }} | |
| - name: Create and push Git tag | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git tag -a api-v${{ steps.version.outputs.version }} -m "Release API v${{ steps.version.outputs.version }}" | |
| git push origin api-v${{ steps.version.outputs.version }} | |
| - name: Trigger Dokploy deployment | |
| run: curl -X POST "${{ vars.DOKPLOY_WEBHOOK_API }}" |