Skip to content

Build

Build #201

Workflow file for this run

name: 'Build'
on:
pull_request:
push:
branches:
- 'master'
workflow_dispatch:
env:
GRADLE_OPTS: -Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.welcome=never
GPG_SEC: ${{ secrets.PGP_SEC }}
GPG_PASSWORD: ${{ secrets.PGP_PASSWORD }}
OSSRH_USERNAME: ${{ secrets.SONATYPE_USER }}
OSSRH_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
jobs:
build:
name: 'Build (Java ${{ matrix.java-version }})'
runs-on: ubuntu-latest
strategy:
# We need multiple builds to run even if the 1st one is failing, because
# test failures may be Java-specific (or the tests themselves flaky).
#
# Java 8 is incompatible with `org.ajoberstar.reckon.settings`.
fail-fast: false
matrix:
java-version: [ '8', '11', '17' ]
# A possible workaround for <https://github.com/dorny/test-reporter/issues/168>.
permissions:
checks: write
contents: write
pull-requests: write
statuses: write
# Explicitly granted, necessary for the `publish-github` step.
packages: write
steps:
- uses: actions/checkout@v4
with:
# Fetch Git tags, so that semantic version can be calculated.
# Alternatively, run `git fetch --prune --unshallow --tags` as the
# next step, see
# https://github.com/actions/checkout/issues/206#issuecomment-607496604.
fetch-depth: 0
- name: 'Set up Java ${{ matrix.java-version }}'
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: ${{ matrix.java-version }}
java-package: jdk+fx
- name: 'Execute Gradle build'
id: build
uses: gradle/gradle-build-action@v3
with:
gradle-version: wrapper
arguments: |
--continue
build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# This step needs a Git repository, so it's impossible to extract it
# into a separate job (or, otherwise, we'd need to upload the content
# of the whole `.git` folder as an artifact).
- name: 'JUnit Tests (dorny/test-reporter)'
uses: dorny/test-reporter@v1
if: ${{ always() }}
with:
name: 'JUnit Tests (dorny/test-reporter, Java ${{ matrix.java-version }})'
# Comma-separated values.
path: "**/build/test-results/*/TEST-*.xml"
reporter: java-junit
# Ignore the "Resource not accessible by integration" error when a PR
# originates from a non-collaborator. This is
# <https://github.com/dorny/test-reporter/issues/168> which may be
# potentially fixed with <https://github.com/dorny/test-reporter/pull/174>.
continue-on-error: true
- name: 'Upload test results'
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: xml-test-reports-java${{ matrix.java-version }}
path: |
**/build/test-results/*/TEST-*.xml
retention-days: 1
- name: 'Publish a snapshot to GitHub (Java 8 only)'
id: publish-github
if: ${{ github.event_name == 'push' && github.ref_type == 'branch' && github.ref == 'refs/heads/master' && matrix.java-version == 8 }}
uses: gradle/gradle-build-action@v3
with:
gradle-version: wrapper
arguments: |
-Preckon.stage=snapshot
publishAllPublicationsToGitHubRepository
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish a snapshot to Maven Central (Java 8 only)'
id: publish-sonatype
if: ${{ github.event_name == 'push' && github.ref_type == 'branch' && github.ref == 'refs/heads/master' && matrix.java-version == 8 }}
uses: gradle/gradle-build-action@v3
with:
gradle-version: wrapper
arguments: |
-Preckon.stage=snapshot
publishToSonatype
closeAndReleaseSonatypeStagingRepository
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
report:
name: 'Publish JUnit test results (Java ${{ matrix.java-version }})'
if: ${{ always() }}
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java-version: [ '8', '11', '17' ]
permissions:
checks: write
pull-requests: write
steps:
- uses: actions/download-artifact@v4
if: ${{ always() }}
with:
name: xml-test-reports-java${{ matrix.java-version }}
# Uses Docker, that's why Linux-only.
- name: 'JUnit Tests (EnricoMi/publish-unit-test-result-action)'
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: 'JUnit Tests (EnricoMi/publish-unit-test-result-action, Java ${{ matrix.java-version }})'
files: |
**/build/test-results/*/TEST-*.xml