Files
tasknote/.github/workflows/ci-pr-backend.yml
T
rmcampos f4ed4cacff
Pull Request CI-Frontend / Checks (pull_request) Successful in 5m52s
Pull Request CI-Frontend / Build & Push (pull_request) Failing after 33s
Pull Request CI-Backend / Checks (pull_request) Successful in 6m44s
staging/deploy PR #2 staging ready
Pull Request CI-Backend / Build & Push (pull_request) Successful in 9m26s
fix: docker build job not needed
2026-06-15 13:51:39 -03:00

105 lines
3.7 KiB
YAML

name: Pull Request CI-Backend
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened]
branches:
- 'main'
paths:
- 'server/**/*.java'
- 'server/**/*.xml'
- 'server/pom.xml'
- 'server/**/*.yml'
- '.github/workflows/ci-pr-backend.yml'
jobs:
run-checks:
name: Checks
runs-on: graalvm-25
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Run Check Style
working-directory: ./server
run: ./mvnw --no-transfer-progress checkstyle:check -Dcheckstyle.skip=false
- name: Run build
working-directory: ./server
run: ./mvnw --no-transfer-progress clean compile -DskipTests
- name: Run tests
working-directory: ./server
run: ./mvnw --no-transfer-progress clean verify -P tests --file pom.xml
build-and-push:
name: Build & Push
runs-on: graalvm-25
needs: ["run-checks"]
permissions:
contents: read
deployments: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Set lowercase repo name
id: repo
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Log in to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: lightroasted.vps-kinghost.net
username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build Docker image with Spring Boot
working-directory: ./server
run: |
./mvnw -Pnative -DskipTests spring-boot:build-image \
-Dspring-boot.build-image.imageName=lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:latest
- name: Tag and push Docker image
run: |
docker tag lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:latest lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:candidate
docker tag lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:latest lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:pr-${{ github.event.pull_request.number }}
docker push lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:candidate
docker push lightroasted.vps-kinghost.net/${{ steps.repo.outputs.name }}/api:pr-${{ github.event.pull_request.number }}
- name: Create Gitea deployment for staging
if: ${{ github.event_name == 'pull_request' }}
run: |
curl -s -X POST \
-H "Authorization: token ${{ secrets.REGISTRY_TOKEN }}" \
-H "Content-Type: application/json" \
"https://lightroasted.vps-kinghost.net/api/v1/repos/${{ github.repository }}/statuses/${{ github.event.pull_request.head.sha }}" \
-d "{\"context\": \"staging/deploy\", \"state\": \"success\", \"description\": \"PR #${{ github.event.pull_request.number }} staging ready\", \"target_url\": \"https://tasknote-stg.darkroasted.vps-kinghost.net\"}"