Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 27d6317

Browse files
committed
refactor(ci): introduce a composite workflow
1 parent 13a2da9 commit 27d6317

12 files changed

+105
-226
lines changed

.github/renovate.json5

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
"helpers:pinGitHubActionDigests",
66
],
77
"branchConcurrentLimit": 15,
8+
"github-actions": {
9+
"fileMatch": [
10+
".github/reusable-workflows/.+\\.ya?ml$",
11+
],
12+
},
813
"packageRules": [
914
{
1015
matchDatasources: [
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: 'Setup Gradle'
2+
description: 'Checks out the repository and sets up Java and Gradle'
3+
inputs:
4+
token:
5+
description: 'token input for actions/checkout'
6+
required: false
7+
default: ${{ github.token }}
8+
fetch-depth:
9+
description: 'fetch-depth input for actions/checkout'
10+
required: false
11+
default: 1
12+
ref:
13+
description: 'ref input for actions/checkout'
14+
required: false
15+
java-version:
16+
description: 'java-version input for actions/setup-java'
17+
required: false
18+
default: 20
19+
gradle-version:
20+
description: 'gradle-version input for actions/setup-java'
21+
required: false
22+
cache-read-only:
23+
description: 'cache-read-only input for gradle/actions/setup-gradle'
24+
required: false
25+
default: ${{ github.event.repository != null && github.ref_name != github.event.repository.default_branch }}
26+
dependency-graph:
27+
description: 'dependency-graph input for gradle/actions/setup-gradle'
28+
required: false
29+
default: 'disabled'
30+
runs:
31+
using: "composite"
32+
steps:
33+
- name: Checkout repository
34+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
35+
with:
36+
fetch-depth: ${{ inputs.fetch-depth }}
37+
ref: ${{ inputs.ref }}
38+
token: ${{ inputs.token }}
39+
40+
- name: Set up JDK
41+
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
42+
with:
43+
distribution: temurin
44+
java-version: ${{ inputs.java-version }}
45+
46+
- name: Copy CI gradle.properties
47+
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
48+
49+
- name: Setup Gradle
50+
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
51+
with:
52+
add-job-summary: always
53+
cache-read-only: ${{ inputs.cache-read-only }}
54+
dependency-graph: ${{ inputs.dependency-graph }}
55+
gradle-home-cache-cleanup: true
56+
gradle-version: ${{ inputs.gradle-version }}
57+
validate-wrappers: true

.github/workflows/codeql_analysis.yml

+3-13
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,8 @@ jobs:
2121
contents: read
2222
security-events: write
2323
steps:
24-
- name: Checkout repository
25-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
26-
27-
- name: Set up JDK
28-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
29-
with:
30-
distribution: temurin
31-
java-version: 20
24+
- name: Setup build environment
25+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
3226

3327
- name: Initialize CodeQL
3428
uses: github/codeql-action/init@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
@@ -38,11 +32,7 @@ jobs:
3832
queries: +security-extended
3933

4034
- name: Build project
41-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
42-
with:
43-
gradle-home-cache-cleanup: true
44-
cache-read-only: true
45-
arguments: assembleNonFreeRelease
35+
run: ./gradlew assembleNonFreeRelease
4636

4737
- name: Perform CodeQL Analysis
4838
uses: github/codeql-action/analyze@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10

.github/workflows/deploy_github_releases.yml

+4-16
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,16 @@ jobs:
99
name: Build release binaries
1010
runs-on: ubuntu-latest
1111
steps:
12-
- name: Checkout repository
13-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
14-
15-
- name: Set up JDK
16-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
17-
with:
18-
distribution: temurin
19-
java-version: 20
12+
- name: Setup build environment
13+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
2014

2115
- name: Decrypt secrets
2216
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
2317
env:
2418
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
2519

26-
- name: Copy CI gradle.properties
27-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
28-
2920
- name: Build release binaries
30-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
31-
with:
32-
arguments: :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease
33-
gradle-home-cache-cleanup: true
21+
run: ./gradlew :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease
3422
env:
3523
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
3624

@@ -103,7 +91,7 @@ jobs:
10391

10492
- name: Get the version
10593
id: get_version
106-
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/}
94+
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
10795

10896
- name: Upload Non-Free Release Apk
10997
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2

.github/workflows/deploy_library_releases.yml

+3-12
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,11 @@ jobs:
88
publish-release:
99
runs-on: ubuntu-latest
1010
steps:
11-
- name: Checkout repository
12-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
13-
14-
- name: Set up JDK
15-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
16-
with:
17-
distribution: temurin
18-
java-version: 20
11+
- name: Setup build environment
12+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
1913

2014
- name: Upload binaries
21-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
22-
with:
23-
arguments: --no-configuration-cache :autofill-parser:publishAllPublicationsToMavenCentralRepository
24-
gradle-home-cache-cleanup: true
15+
run: ./gradlew --no-configuration-cache :autofill-parser:publishAllPublicationsToMavenCentralRepository
2516
env:
2617
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_PUBLISH_USERNAME }}
2718
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PUBLISH_PASSWORD }}

.github/workflows/deploy_snapshot.yml

+4-16
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,23 @@ jobs:
1818
runs-on: ubuntu-latest
1919
if: "!contains(github.event.head_commit.message, '[ci skip]')"
2020
steps:
21-
- name: Checkout repository
22-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
21+
- name: Setup build environment
22+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
2323
with:
2424
fetch-depth: 0
25-
26-
- name: Set up JDK
27-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
28-
with:
29-
distribution: temurin
30-
java-version: 20
25+
dependency-graph: generate-and-submit
3126

3227
- name: Decrypt secrets
3328
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
3429
env:
3530
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
3631

37-
- name: Copy CI gradle.properties
38-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
39-
4032
- name: Build release app
41-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
33+
run: ./gradlew collectFreeReleaseApks collectNonFreeReleaseApks bundleFreeRelease bundleNonFreeRelease -PsentryUploadMappings
4234
env:
4335
SNAPSHOT: "true"
4436
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
4537
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
46-
with:
47-
arguments: collectFreeReleaseApks collectNonFreeReleaseApks bundleFreeRelease bundleNonFreeRelease -PsentryUploadMappings
48-
gradle-home-cache-cleanup: true
49-
dependency-graph: generate-and-submit
5038

5139
- name: Clean secrets
5240
run: scripts/signing-cleanup.sh

.github/workflows/draft_new_release.yml

+2-12
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,16 @@ jobs:
3232
echo "PR_BASE=release-${BRANCH_VERSION}" >> $GITHUB_ENV
3333
echo "PR_HEAD=release-prep" >> $GITHUB_ENV
3434
35-
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
35+
- name: Setup build environment
36+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
3637
with:
3738
ref: ${{ env.CHECKOUT_REF }}
3839

39-
- name: Set up JDK
40-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
41-
with:
42-
distribution: temurin
43-
java-version: 20
44-
4540
- name: Update changelog
4641
uses: thomaseizinger/keep-a-changelog-new-release@77ac767b2f7f6edf2ee72ab3364ed26667086f96 # 3.0.0
4742
with:
4843
version: ${{ github.event.milestone.title }}
4944

50-
- name: Setup Gradle caching
51-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
52-
with:
53-
gradle-home-cache-cleanup: true
54-
5545
- name: Initialize git config and commit changes
5646
shell: bash
5747
run: |

.github/workflows/pull_request.yml

+15-85
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,11 @@ jobs:
1515
check-codestyle:
1616
runs-on: ubuntu-latest
1717
steps:
18-
- name: Checkout repository
19-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
20-
with:
21-
fetch-depth: 0
22-
23-
- name: Set up JDK
24-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
25-
with:
26-
distribution: temurin
27-
java-version: 20
28-
29-
- name: Copy CI gradle.properties
30-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
18+
- name: Setup build environment
19+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
3120

3221
- name: Check codestyle
33-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
34-
with:
35-
arguments: ktfmtCheck
36-
gradle-home-cache-cleanup: true
22+
run: ./gradlew ktfmtCheck
3723

3824
- name: Upload Kotlin build report
3925
if: "${{ always() }}"
@@ -45,25 +31,11 @@ jobs:
4531
unit-tests:
4632
runs-on: ubuntu-latest
4733
steps:
48-
- name: Checkout repository
49-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
50-
with:
51-
fetch-depth: 0
52-
53-
- name: Set up JDK
54-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
55-
with:
56-
distribution: temurin
57-
java-version: 20
58-
59-
- name: Copy CI gradle.properties
60-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
34+
- name: Setup build environment
35+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
6136

6237
- name: Run unit tests
63-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
64-
with:
65-
arguments: test -PslimTests
66-
gradle-home-cache-cleanup: true
38+
run: ./gradlew test -PslimTests
6739

6840
- name: (Fail-only) Upload test report
6941
if: "${{ failure() }}"
@@ -82,25 +54,11 @@ jobs:
8254
build-apks:
8355
runs-on: ubuntu-latest
8456
steps:
85-
- name: Checkout repository
86-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
87-
with:
88-
fetch-depth: 0
89-
90-
- name: Set up JDK
91-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
92-
with:
93-
distribution: temurin
94-
java-version: 20
95-
96-
- name: Copy CI gradle.properties
97-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
57+
- name: Setup build environment
58+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
9859

9960
- name: Build debug APKs
100-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
101-
with:
102-
arguments: assembleFreeDebug assembleNonFreeDebug assembleNonFreeRelease
103-
gradle-home-cache-cleanup: true
61+
run: ./gradlew assembleFreeDebug assembleNonFreeDebug assembleNonFreeRelease
10462

10563
- name: Upload Kotlin build report
10664
if: "${{ always() }}"
@@ -112,25 +70,11 @@ jobs:
11270
check-api:
11371
runs-on: ubuntu-latest
11472
steps:
115-
- name: Checkout repository
116-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
117-
with:
118-
fetch-depth: 0
119-
120-
- name: Set up JDK
121-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
122-
with:
123-
distribution: temurin
124-
java-version: 20
125-
126-
- name: Copy CI gradle.properties
127-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
73+
- name: Setup build environment
74+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
12875

12976
- name: Check library API
130-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
131-
with:
132-
arguments: metalavaCheckCompatibilityRelease
133-
gradle-home-cache-cleanup: true
77+
run: ./gradlew metalavaCheckCompatibilityRelease
13478

13579
- name: Upload Kotlin build report
13680
if: "${{ always() }}"
@@ -142,25 +86,11 @@ jobs:
14286
lint:
14387
runs-on: ubuntu-latest
14488
steps:
145-
- name: Checkout repository
146-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
147-
with:
148-
fetch-depth: 0
149-
150-
- name: Set up JDK
151-
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
152-
with:
153-
distribution: temurin
154-
java-version: 20
155-
156-
- name: Copy CI gradle.properties
157-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
89+
- name: Setup build environment
90+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
15891

15992
- name: Run Lint
160-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
161-
with:
162-
arguments: lint
163-
gradle-home-cache-cleanup: true
93+
run: ./gradlew lint
16494

16595
- name: Upload Kotlin build report
16696
if: "${{ always() }}"

0 commit comments

Comments
 (0)