| name: Dagger Release |
| |
| on: |
| workflow_dispatch: |
| inputs: |
| dagger_release_version: |
| description: 'The Dagger version to use in this release.' |
| required: true |
| |
| env: |
| USE_JAVA_DISTRIBUTION: 'zulu' |
| USE_JAVA_VERSION: '11' |
| # This is required by Gradle 8.0+. |
| USE_JAVA_VERSION_FOR_GRADLE_PLUGIN: '17' |
| # Required by JDK Toolchain Configuration |
| USE_JAVA_VERSION_FOR_GRADLE: '18' |
| DAGGER_RELEASE_VERSION: "${{ github.event.inputs.dagger_release_version }}" |
| # 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' |
| |
| # TODO(bcorso):Convert these jobs into local composite actions to share with the |
| # continuous integration workflow. |
| 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 }}' |
| publish-artifacts: |
| name: 'Publish Artifact' |
| needs: [ |
| bazel-test, |
| artifact-verification-tests, |
| artifact-java-local-tests, |
| artifact-android-local-tests, |
| test-gradle-plugin |
| ] |
| 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-staging |
| server-username: CI_DEPLOY_USERNAME |
| server-password: CI_DEPLOY_PASSWORD |
| gpg-private-key: ${{ secrets.CI_GPG_PRIVATE_KEY }} |
| gpg-passphrase: CI_GPG_PASSPHRASE |
| - 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 artifacts |
| run: | |
| util/deploy-all.sh \ |
| "gpg:sign-and-deploy-file" \ |
| "${{ env.DAGGER_RELEASE_VERSION }}" \ |
| "-DrepositoryId=sonatype-nexus-staging" \ |
| "-Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/" |
| shell: bash |
| env: |
| CI_DEPLOY_USERNAME: ${{ secrets.CI_DEPLOY_USERNAME }} |
| CI_DEPLOY_PASSWORD: ${{ secrets.CI_DEPLOY_PASSWORD }} |
| CI_GPG_PASSPHRASE: ${{ secrets.CI_GPG_PASSPHRASE }} |
| - name: 'Set git credentials' |
| run: | |
| git config --global user.email "[email protected]" |
| git config --global user.name "Dagger Team" |
| shell: bash |
| - name: 'Publish tagged release' |
| run: util/publish-tagged-release.sh ${{ env.DAGGER_RELEASE_VERSION }} |
| shell: bash |
| - name: 'Publish tagged docs' |
| run: util/publish-tagged-docs.sh ${{ env.DAGGER_RELEASE_VERSION }} |
| shell: bash |
| env: |
| GH_TOKEN: ${{ github.token }} |
| - 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 |