Skip to content

chore(build): pin os versions for tests #11690

chore(build): pin os versions for tests

chore(build): pin os versions for tests #11690

Workflow file for this run

# This workflow builds, tests, and releases the modules.
name: Java CI
on:
push:
branches:
- main
pull_request:
jobs:
# build library
build:
name: build (${{matrix.java_version}}, ${{ startsWith(matrix.os, 'windows-') && 'windows-latest' || 'ubuntu-latest' }})
runs-on: ${{ matrix.os }}
strategy:
# always run all tests to avoid having different amounts of tests.
fail-fast: false
matrix:
java_version: ['17', '21']
os: ['ubuntu-22.04', 'windows-2022']
timeout-minutes: 60
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0 # fetch commit log so that Sonar is able to assign committers to issues
- name: Set up JDK ${{ matrix.java_version }}
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4.4.0
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
cache: 'gradle'
- name: Test with Gradle
uses: nick-invision/retry@7152eba30c6575329ac0576536151aca5a72780e # v2
with:
timeout_minutes: 30
max_attempts: 5
retry_wait_seconds: 10
warning_on_retry: false
command: ./gradlew --parallel --continue check -x spotlessCheck
- name: Generate Test Report
if: always()
run: ./gradlew -x test testReport codeCoverageReport
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
if: always()
with:
# keep latest suffix for subsequent workflows
name: ${{ startsWith(matrix.os, 'windows-') && 'windows-latest' || 'ubuntu-latest' }}-${{ matrix.java_version }}-test-results
path: |
build/reports/
*/build/test-results/**/*.xml
*/build/classes/
retention-days: 7
publish-test-results:
name: "Publish Unit Tests Results"
timeout-minutes: 60
needs: build
runs-on: ubuntu-latest
# Don't run for forks and dependabot because of missing secrets
if: (success() || failure()) && !(github.event.pull_request && github.event.pull_request.head.repo.fork) && github.actor != 'dependabot[bot]'
steps:
- name: Download Artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v3
with:
path: artifacts
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@82082dac68ad6a19d980f8ce817e108b9f496c2a # v2.17.1
with:
junit_files: artifacts/**/build/test-results/**/*.xml
# create release and publish the artifacts
semantic-release:
runs-on: ubuntu-latest
timeout-minutes: 60
needs: build
steps:
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
- name: Setup Node.js
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v3
with:
node-version: 14
- name: Set up JDK 17
uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4.4.0
with:
distribution: 'temurin'
java-version: 17
cache: 'gradle'
- name: Install Semantic release
run: |
sudo npm install -g \
[email protected] \
@semantic-release/[email protected] \
@semantic-release/[email protected] \
@semantic-release/[email protected]
- name: Release and Publish
run: semantic-release
env:
GITHUB_TOKEN: ${{ secrets.NEXUS_LOGIN_TOKEN }}