Skip to content

Build

Build #315

Workflow file for this run

name: Build
on:
push:
branches:
- master
- branch-*
- dogfood-*
pull_request:
workflow_dispatch:
schedule:
- cron: "30 1 * * *" # Run daily at 1:30 AM UTC
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
# Build takes over 30 minutes on "s" and around 5 minutes on "m".
runs-on: github-ubuntu-latest-m # Public repo
name: Build
permissions:
id-token: write # Required for Vault OIDC authentication
contents: write # Required for repository access and tagging
outputs:
build-number: ${{ steps.build-gradle.outputs.BUILD_NUMBER }}
deployed: ${{ steps.build-gradle.outputs.deployed }}
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: jdx/mise-action@5ac50f778e26fac95da98d50503682459e86d566 # v3.2.0
with:
version: 2025.7.12
- name: Install Property Dump Plugin
run: |
mvn -f property-dump-plugin/pom.xml -B install
# SCANGRADLE-306:
# Run setup-gradle to prevent validating the wrapper in
# integrationTests/src/test/resources/AndroidTestingBlueprintWithFeatureModule
- name: Configure Gradle
uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4.4.4
with:
# Parameters matching those invoked by build-gradle
develocity-injection-enabled: false
cache-disabled: true
develocity-plugin-version: '4.0'
validate-wrappers: false
- uses: SonarSource/ci-github-actions/build-gradle@v1
id: build-gradle
with:
deploy-pull-request: true
artifactory-reader-role: private-reader # Override default public-reader
artifactory-deployer-role: qa-deployer # Override default public-deployer
gradle-args: "-Dsonar.sca.exclusions=integrationTests/src/test/resources/**,src/test/projects/**"
build-windows:
name: Build Windows
needs:
- build
runs-on: github-windows-latest-m # Public repo
permissions:
id-token: write # Required for Vault OIDC authentication
contents: write # Required for repository access and tagging
env:
BUILD_NUMBER: ${{ needs.build.outputs.build-number }}
steps:
- name: Configure Long Paths
run: git config --global core.longpaths true
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: jdx/mise-action@5ac50f778e26fac95da98d50503682459e86d566 # v3.2.0
with:
version: 2025.7.12
- name: Build
run: |
./gradlew --no-daemon --info --stacktrace --console plain build -DbuildNumber="$BUILD_NUMBER"
qa:
strategy:
fail-fast: false
matrix:
item:
# Make sure to move `&latest-gradle-version` when adding a new test case with a new version.
- gradle_version: &latest-gradle-version "9.2.1"
- gradle_version: "9.1.0"
- gradle_version: "9.0.0"
- gradle_version: "8.13"
- gradle_version: "8.13"
android_gradle_version: "8.13.0"
- gradle_version: "8.4"
- gradle_version: "8.4"
android_gradle_version: "8.3.0"
- gradle_version: "8.0"
- gradle_version: "7.6.4"
- gradle_version: "7.5.1"
android_gradle_version: "7.1.0"
name: >
QA Gradle ${{ matrix.item.gradle_version }}
${{ matrix.item.android_gradle_version && format(' Android {0}', matrix.item.android_gradle_version) || '' }}
needs:
- build
runs-on: 'github-ubuntu-latest-m'
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: ./.github/actions/qa
with:
gradle-version: ${{ matrix.item.gradle_version }}
android-gradle-version: ${{ matrix.item.android_gradle_version || 'NOT_AVAILABLE' }}
qa-windows:
name: QA Windows
needs:
# Note, that QA Windows runs the binary built on Linux, so we do not need to depend on build-windows.
- build
runs-on: 'github-windows-latest-m'
permissions:
id-token: write
contents: write
steps:
# Windows needs this.
- name: Configure Long Paths
run: git config --global core.longpaths true
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: ./.github/actions/qa
with:
gradle-version: *latest-gradle-version
android-gradle-version: 'NOT_AVAILABLE'