build: Setup concurrent tests #284
This file contains 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 with Gradle | |
on: | |
workflow_dispatch: | |
inputs: | |
releaseVersion: | |
type: string | |
description: New version for the release. When empty release publishing skipped. | |
default: '' | |
required: true | |
push: | |
branches: [ 'main' ] | |
pull_request: | |
branches: [ 'main' ] | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04, windows-2022] | |
runs-on: ${{ matrix.os }} | |
permissions: | |
actions: write | |
contents: read | |
steps: | |
- name: Change Gradle user home | |
shell: bash | |
if: ${{ startsWith(matrix.os, 'windows') }} | |
run: | | |
GRADLE_USER_HOME=${RUNNER_TEMP}\.gradle | |
mkdir -p "${GRADLE_USER_HOME}" | |
echo "GRADLE_USER_HOME=${GRADLE_USER_HOME}" >> ${GITHUB_ENV} | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Set up JDK | |
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 | |
with: | |
java-version-file: '.java-version' | |
distribution: 'temurin' | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 # v3.5.0 | |
- name: Bump version | |
if: github.event_name == 'workflow_dispatch' && github.event.inputs.releaseVersion != '' | |
run: | | |
./bumpVersion.sh "${RELEASE_VERSION}" | |
env: | |
RELEASE_VERSION: ${{ github.event.inputs.releaseVersion }} | |
- name: Publish Gradle Plugin to Maven Local | |
run: | | |
./gradlew :robolectric-extension-gradle-plugin:publishToMavenLocal --configure-on-demand | |
env: | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD }}' | |
- name: Build with Gradle Wrapper | |
run: | | |
./gradlew build koverXmlReport publish | |
env: | |
JUNIT5_ROBOLECTRIC_EXTENSION_MAVEN_USERNAME: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_MAVEN_USERNAME }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_MAVEN_PASSWORD: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_MAVEN_PASSWORD }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD }}' | |
- name: Publish Gradle Plugin | |
run: | | |
./publishGradlePlugin.sh | |
env: | |
JUNIT5_ROBOLECTRIC_EXTENSION_GRADLE_PLUGIN_PORTAL_KEY: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GRADLE_PLUGIN_PORTAL_KEY }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GRADLE_PLUGIN_PORTAL_SECRET: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GRADLE_PLUGIN_PORTAL_SECRET }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_KEY }}' | |
JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD: '${{ secrets.JUNIT5_ROBOLECTRIC_EXTENSION_GPG_SIGNING_PASSWORD }}' | |
- name: Upload unit test report | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
if: ${{ always() && hashFiles('**/test-results/**/*.xml') != '' }} | |
with: | |
name: ${{ matrix.os }}-unit-test-report | |
path: | | |
${{ github.workspace }}/**/build/reports/tests | |
${{ github.workspace }}/**/build/test-results | |
retention-days: 5 | |
- name: Upload coverage report | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
if: ${{ always() && hashFiles('build/reports/kover/report.xml') != '' }} | |
with: | |
name: ${{ matrix.os }}-kover-report | |
path: ${{ github.workspace }}/build/reports/kover/report.xml | |
retention-days: 5 | |
release: | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
needs: | |
- build | |
if: github.ref_name == github.event.repository.default_branch && github.event_name == 'workflow_dispatch' && github.event.inputs.releaseVersion != '' && !endsWith(github.event.inputs.releaseVersion, 'SNAPSHOT') | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
ref: ${{ github.head_ref }} | |
- name: Create release | |
shell: bash | |
run: | | |
git config --global user.name "${GIT_USER_NAME}" | |
git config --global user.email "${GIT_USER_EMAIL}" | |
./tagRelease.sh "${RELEASE_VERSION}" | |
env: | |
GIT_USER_NAME: ${{ github.actor }} | |
GIT_USER_EMAIL: ${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com | |
RELEASE_VERSION: ${{ github.event.inputs.releaseVersion }} | |
junit: | |
strategy: | |
matrix: | |
os: [ ubuntu-22.04, windows-2022 ] | |
runs-on: ${{ matrix.os }} | |
needs: | |
- build | |
permissions: | |
actions: read | |
checks: write | |
contents: read | |
if: github.repository == 'apter-tech/junit5-robolectric-extension' && github.event_name == 'pull_request' | |
steps: | |
- name: Download unit test report | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: ${{ matrix.os }}-unit-test-report | |
- name: Comment unit test report | |
if: ${{ hashFiles('**/test-results/**/*.xml') != '' }} | |
uses: mikepenz/action-junit-report@db71d41eb79864e25ab0337e395c352e84523afe # v4.3.1 | |
with: | |
report_paths: '**/test-results/**/*.xml' | |
check_name: Unit test report (${{ matrix.os }}) | |
kover: | |
strategy: | |
matrix: | |
os: [ ubuntu-22.04, windows-2022 ] | |
runs-on: ${{ matrix.os }} | |
needs: | |
- build | |
permissions: | |
actions: read | |
checks: write | |
contents: read | |
pull-requests: write | |
if: github.repository == 'apter-tech/junit5-robolectric-extension' && github.event_name == 'pull_request' | |
steps: | |
- name: Download coverage report | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: ${{ matrix.os }}-kover-report | |
- name: Comment branch coverage report to PR | |
uses: mi-kas/kover-report@5f58465b6f395c8fa3adc2665e27250bad87de50 # v1.9 | |
if: ${{ hashFiles('report.xml') != '' }} | |
with: | |
path: ${{ github.workspace }}/report.xml | |
title: Branch Coverage (${{ matrix.os }}) | |
update-comment: true | |
min-coverage-overall: 60 | |
min-coverage-changed-files: 70 | |
coverage-counter-type: BRANCH | |
- name: Comment line coverage report to PR (${{ matrix.os }}) | |
uses: mi-kas/kover-report@5f58465b6f395c8fa3adc2665e27250bad87de50 # v1.9 | |
if: ${{ hashFiles('report.xml') != '' }} | |
with: | |
path: ${{ github.workspace }}/report.xml | |
title: Line Coverage (${{ matrix.os }}) | |
update-comment: true | |
min-coverage-overall: 60 | |
min-coverage-changed-files: 70 | |
coverage-counter-type: LINE |