build #22294
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 | |
on: | |
push: | |
branches: | |
- main | |
pull_request: { } | |
schedule: | |
- cron: '13/15 * * * *' | |
workflow_dispatch: | |
inputs: | |
min: | |
required: false | |
description: Min Gradle version | |
max: | |
required: false | |
description: Max Gradle version | |
defaults: | |
run: | |
shell: bash | |
env: | |
GRADLE_OPTS: -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Dorg.gradle.warning.mode=all -Dhttp.keepAlive=false -Dsun.net.client.defaultConnectTimeout=15000 -Dsun.net.client.defaultReadTimeout=600000 -Dsun.net.http.retryPost=false -Dsun.io.useCanonCaches=false -Djava.awt.headless=true -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false | |
jobs: | |
retrieve-gradle-versions: | |
if: ${{ !startsWith(github.event.head_commit.message, '[skip ci]') && !startsWith(github.event.head_commit.message, '[push-back]') }} | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
concurrency: retrieve-gradle-versions | |
outputs: | |
gradle-versions: ${{ steps.create-output.outputs.result }} | |
steps: | |
- name: Retrieve Gradle versions | |
id: retrieve-gradle-versions | |
uses: remal-github-actions/retrieve-gradle-versions@v1 | |
with: | |
min: '3.0, ${{ github.event.inputs.min }}' | |
max: '${{ github.event.inputs.max }}' | |
- name: Select Gradle versions | |
id: select-gradle-versions | |
env: | |
VERSIONS: ${{ steps.retrieve-gradle-versions.outputs.allAndRC }} | |
run: | | |
echo "result=$VERSIONS" >> $GITHUB_OUTPUT | |
- name: Retrieve Maven artifact versions - Local Groovy | |
id: retrieve-maven-artifact-versions-local-groovy | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: local-groovy | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Retrieve Maven artifact versions - Gradle API | |
id: retrieve-maven-artifact-versions-gradle-api | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: gradle-api | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Retrieve Maven artifact versions - Gradle Test Kit | |
id: retrieve-maven-artifact-versions-gradle-test-kit | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: gradle-test-kit | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Filter Gradle versions | |
id: filter-gradle-versions | |
uses: actions/github-script@v7 | |
if: ${{ steps.retrieve-maven-artifact-versions-local-groovy.outcome == 'success' || steps.retrieve-maven-artifact-versions-gradle-api.outcome == 'success' || steps.retrieve-maven-artifact-versions-gradle-test-kit.outcome == 'success' }} | |
env: | |
GRADLE_VERSIONS_JSON: ${{ steps.select-gradle-versions.outputs.result }} | |
LOCAL_GROOVY_MAVEN_ARTIFACT_VERSIONS_JSON: ${{ steps.retrieve-maven-artifact-versions-local-groovy.outputs.unstable }} | |
GRADLE_API_MAVEN_ARTIFACT_VERSIONS_JSON: ${{ steps.retrieve-maven-artifact-versions-gradle-api.outputs.unstable }} | |
GRADLE_TEST_KIT_MAVEN_ARTIFACT_VERSIONS_JSON: ${{ steps.retrieve-maven-artifact-versions-gradle-test-kit.outputs.unstable }} | |
with: | |
script: | | |
const { GRADLE_VERSIONS_JSON, LOCAL_GROOVY_MAVEN_ARTIFACT_VERSIONS_JSON, GRADLE_API_MAVEN_ARTIFACT_VERSIONS_JSON, GRADLE_TEST_KIT_MAVEN_ARTIFACT_VERSIONS_JSON } = process.env | |
const gradleVersions = JSON.parse(GRADLE_VERSIONS_JSON) | |
const localGroovyMavenArtifactVersions = JSON.parse(LOCAL_GROOVY_MAVEN_ARTIFACT_VERSIONS_JSON) | |
const gradleApiMavenArtifactVersions = JSON.parse(GRADLE_API_MAVEN_ARTIFACT_VERSIONS_JSON) | |
const gradleTestKitMavenArtifactVersions = JSON.parse(GRADLE_TEST_KIT_MAVEN_ARTIFACT_VERSIONS_JSON) | |
const mavenArtifactVersions = localGroovyMavenArtifactVersions.concat(gradleApiMavenArtifactVersions).concat(gradleTestKitMavenArtifactVersions) | |
mavenArtifactVersions.forEach(version => { | |
if (!localGroovyMavenArtifactVersions.includes(version)) return | |
if (!gradleApiMavenArtifactVersions.includes(version)) return | |
if (!gradleTestKitMavenArtifactVersions.includes(version)) return | |
const index = gradleVersions.indexOf(version) | |
if (index >= 0) { | |
core.info(`Version ${version} has already been fully published`) | |
gradleVersions.splice(index, 1) | |
} | |
}) | |
return gradleVersions | |
- name: Create output | |
id: create-output | |
uses: actions/github-script@v7 | |
env: | |
FILTER_OUTPUT: ${{ steps.filter-gradle-versions.outputs.result }} | |
SELECT_OUTPUT: ${{ steps.select-gradle-versions.outputs.result }} | |
with: | |
script: | | |
const { FILTER_OUTPUT, SELECT_OUTPUT } = process.env | |
let versions = [] | |
if ('${{ steps.filter-gradle-versions.outcome }}' === 'success') { | |
versions = JSON.parse(FILTER_OUTPUT) | |
} else { | |
versions = JSON.parse(SELECT_OUTPUT) | |
} | |
versions.reverse() | |
if (!versions.length) { | |
core.info('No versions to publish') | |
versions.push('') // versions array can't be ampty, as it causes 'build' stage to fail | |
} | |
return versions | |
populate-cache: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
concurrency: populate-cache | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle/wrapper/**', '**/*.gradle') }} | |
path: | | |
~/.gradle | |
- name: Setup Java 8 | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 8 | |
distribution: zulu | |
- name: Create cache content | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
env: | |
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Dorg.gradle.warning.mode=all -Dsun.net.client.defaultConnectTimeout=15000 -Dsun.net.client.defaultReadTimeout=600000 -Dsun.io.useCanonCaches=false -Djava.awt.headless=true -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false | |
run: | | |
sed -i 's/-all\.zip/-bin.zip/' gradle/wrapper/gradle-wrapper.properties | |
./gradlew help | |
build: | |
if: ${{ needs.retrieve-gradle-versions.outputs.gradle-versions != '[""]' }} | |
needs: | |
- retrieve-gradle-versions | |
- populate-cache | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: true | |
max-parallel: 1 | |
matrix: | |
gradle-version: ${{ fromJSON(needs.retrieve-gradle-versions.outputs.gradle-versions) }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
key: ${{ runner.os }}-gradle-${{ hashFiles('gradle/**', '**/*.gradle') }} | |
path: | | |
~/.gradle | |
- name: Setup Java 8 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 8 | |
distribution: zulu | |
- name: Build | |
run: | | |
echo "Build for Gradle ${{ matrix.gradle-version }}" | |
sed -i 's/-all\.zip/-bin.zip/' gradle/wrapper/gradle-wrapper.properties | |
./gradlew publishToMavenLocal "-Pgradle-version=${{ matrix.gradle-version }}" | |
- name: Retrieve Maven artifact versions - Local Groovy | |
id: retrieve-maven-artifact-versions-local-groovy | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: local-groovy | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Publish - Local Groovy | |
if: ${{ github.event_name != 'pull_request' && !contains(fromJSON(steps.retrieve-maven-artifact-versions-local-groovy.outputs.unstable), matrix.gradle-version) }} | |
env: | |
PUBLISH_USER: ${{ github.actor }} | |
PUBLISH_PASSWORD: ${{ secrets.WRITE_PACKAGES_TOKEN }} | |
run: | | |
echo "Publish for Gradle ${{ matrix.gradle-version }} - Local Groovy" | |
./gradlew publishLocalGroovyPublicationToGitHubRepository "-Pgradle-version=${{ matrix.gradle-version }}" | |
- name: Retrieve Maven artifact versions - Gradle API | |
id: retrieve-maven-artifact-versions-gradle-api | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: gradle-api | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Publish - Gradle API | |
if: ${{ github.event_name != 'pull_request' && !contains(fromJSON(steps.retrieve-maven-artifact-versions-gradle-api.outputs.unstable), matrix.gradle-version) }} | |
env: | |
PUBLISH_USER: ${{ github.actor }} | |
PUBLISH_PASSWORD: ${{ secrets.WRITE_PACKAGES_TOKEN }} | |
run: | | |
echo "Publish for Gradle ${{ matrix.gradle-version }} - Gradle API" | |
./gradlew publishGradleApiPublicationToGitHubRepository "-Pgradle-version=${{ matrix.gradle-version }}" | |
- name: Retrieve Maven artifact versions - Gradle Test Kit | |
id: retrieve-maven-artifact-versions-gradle-test-kit | |
uses: remal-github-actions/retrieve-maven-artifact-versions@v1 | |
with: | |
group: name.remal.gradle-api | |
name: gradle-test-kit | |
repository: https://maven.pkg.github.com/remal-gradle-api/packages | |
user: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Publish - Gradle Test Kit | |
if: ${{ github.event_name != 'pull_request' && !contains(fromJSON(steps.retrieve-maven-artifact-versions-gradle-test-kit.outputs.unstable), matrix.gradle-version) }} | |
env: | |
PUBLISH_USER: ${{ github.actor }} | |
PUBLISH_PASSWORD: ${{ secrets.WRITE_PACKAGES_TOKEN }} | |
run: | | |
echo "Publish for Gradle ${{ matrix.gradle-version }} - Gradle Test Kit" | |
./gradlew publishGradleTestKitPublicationToGitHubRepository "-Pgradle-version=${{ matrix.gradle-version }}" |