Internal changes #4927
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: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
env: | |
USE_JAVA_DISTRIBUTION: 'zulu' | |
USE_JAVA_VERSION: '11' | |
# This is required by Gradle 8.0+. | |
USE_JAVA_VERSION_FOR_PLUGIN: '17' | |
# The default Maven 3.9.0 has a regression so we manually install 3.8.7. | |
# https://issues.apache.org/jira/browse/MNG-7679 | |
USE_MAVEN_VERSION: '3.8.7' | |
jobs: | |
validate-latest-dagger-version: | |
name: 'Validate Dagger version' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/prechecks | |
bazel-build: | |
name: 'Bazel build' | |
needs: validate-latest-dagger-version | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/bazel-build | |
bazel-test: | |
name: 'Bazel tests' | |
needs: validate-latest-dagger-version | |
runs-on: | |
group: large-runner-group | |
labels: ubuntu-22.04-16core | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/bazel-test | |
artifact-verification-tests: | |
name: 'Artifact verification tests' | |
needs: bazel-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/artifact-verification-tests | |
artifact-java-local-tests: | |
name: 'Artifact Java local tests' | |
needs: bazel-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/artifact-java-local-tests | |
test-gradle-plugin: | |
name: 'Test Hilt Gradle plugin' | |
needs: bazel-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/test-gradle-plugin | |
artifact-android-local-tests: | |
name: 'Artifact Android local tests (AGP ${{ matrix.agp }})' | |
needs: bazel-build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- agp: '8.1.1' | |
jdk: '17' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/artifact-android-local-tests | |
with: | |
agp: '${{ matrix.agp }}' | |
jdk: '${{ matrix.jdk }}' | |
artifact-android-emulator-legacy-api-tests: | |
name: 'Artifact Android emulator tests (API ${{ matrix.api-level }})' | |
# We only run this on master push (essentially a postsubmit) since these | |
# can take a while to run | |
if: github.event_name == 'push' && github.repository == 'google/dagger' && github.ref == 'refs/heads/master' | |
needs: bazel-build | |
# It's recommended to run emulator tests on macOS | |
# See https://github.com/marketplace/actions/android-emulator-runner | |
runs-on: macos-latest | |
strategy: | |
matrix: # Run on 16 (PreL), 21 (L), and 26 (O). | |
api-level: [16, 21, 26, 30] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/artifact-android-emulator-tests | |
timeout-minutes: 35 | |
with: | |
api-level: '${{ matrix.api-level }}' | |
publish-snapshot: | |
name: 'Publish snapshot' | |
# TODO(bcorso): Consider also waiting on artifact-android-emulator-tests | |
# and artifact-android-emulator-legacy-api-tests after checking flakiness. | |
needs: [ | |
bazel-test, | |
artifact-verification-tests, | |
artifact-java-local-tests, | |
artifact-android-local-tests, | |
test-gradle-plugin | |
] | |
if: github.event_name == 'push' && github.repository == 'google/dagger' && github.ref == 'refs/heads/master' | |
runs-on: ubuntu-latest | |
steps: | |
- name: 'Install Java ${{ env.USE_JAVA_VERSION }}' | |
uses: actions/setup-java@v4 | |
with: | |
distribution: '${{ env.USE_JAVA_DISTRIBUTION }}' | |
java-version: '${{ env.USE_JAVA_VERSION }}' | |
server-id: sonatype-nexus-snapshots | |
server-username: CI_DEPLOY_USERNAME | |
server-password: CI_DEPLOY_PASSWORD | |
- name: 'Check out repository' | |
uses: actions/checkout@v4 | |
- name: 'Cache local Maven repository' | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.m2/repository | |
!~/.m2/repository/com/google/dagger | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- name: 'Cache Bazel files' | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/bazel | |
key: ${{ runner.os }}-bazel-build-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-bazel-build- | |
- name: 'Cache Gradle files' | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: 'Publish latest docs' | |
run: ./util/generate-latest-docs.sh | |
shell: bash | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: 'Publish latest snapshot' | |
run: | | |
util/deploy-all.sh \ | |
"deploy:deploy-file" \ | |
"HEAD-SNAPSHOT" \ | |
"-DrepositoryId=sonatype-nexus-snapshots" \ | |
"-Durl=https://oss.sonatype.org/content/repositories/snapshots" | |
shell: bash | |
env: | |
CI_DEPLOY_USERNAME: ${{ secrets.CI_DEPLOY_USERNAME }} | |
CI_DEPLOY_PASSWORD: ${{ secrets.CI_DEPLOY_PASSWORD }} | |
- name: 'Clean bazel cache' | |
# According to the documentation, we should be able to exclude these via | |
# the actions/cache path, e.g. "!~/.cache/bazel/*/*/external/" but that | |
# doesn't seem to work. | |
run: | | |
rm -rf $(bazel info repository_cache) | |
rm -rf ~/.cache/bazel/*/*/external/ | |
shell: bash | |
build-gradle-plugin-latest-agp: | |
name: 'Build Hilt Gradle plugin against latest AGP version' | |
# We only run this on master push (essentially a postsubmit) since we | |
# don't want this job to prevent merges | |
if: github.event_name == 'push' && github.repository == 'google/dagger' && github.ref == 'refs/heads/master' | |
needs: bazel-build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/build-gradle-plugin | |
with: | |
agp: '+' | |
cleanup-caches: | |
name: 'Clean up GitHub Action caches' | |
# TODO(bcorso): Consider also waiting on artifact-android-emulator-tests | |
# and artifact-android-emulator-legacy-api-tests after checking flakiness. | |
needs: [ | |
bazel-test, | |
artifact-verification-tests, | |
artifact-java-local-tests, | |
artifact-android-local-tests, | |
test-gradle-plugin | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/cleanup-caches |