name: Build & Test on: workflow_call: outputs: artifact-name: description: "Uploaded artifact name for downstream jobs" value: ${{ jobs.build.outputs.artifact-name }} jobs: build: name: Build & Test runs-on: ubuntu-latest timeout-minutes: 20 permissions: contents: read outputs: artifact-name: ${{ steps.meta.outputs.artifact-name }} steps: - name: Checkout source uses: actions/checkout@v6 - name: Set up JDK 21 uses: actions/setup-java@v5 with: distribution: temurin java-version: "21" cache: gradle - name: Set up Gradle uses: gradle/actions/setup-gradle@v6 - name: Set artifact name id: meta run: echo "artifact-name=build-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_OUTPUT" - name: Run CI quality gate run: ./gradlew clean check bootJar --stacktrace --no-daemon - name: Upload build artifacts if: always() uses: actions/upload-artifact@v7 with: name: ${{ steps.meta.outputs.artifact-name }} path: | build/libs/*.jar build/reports/detekt/** build/reports/ktlint/** build/reports/jacoco/** build/reports/** build/test-results/** build/jacoco/** retention-days: 7 if-no-files-found: error