forked from square/dagger
-
Notifications
You must be signed in to change notification settings - Fork 2k
161 lines (158 loc) · 5.32 KB
/
release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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_PLUGIN: '17'
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