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

Commit 312f92d

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

12 files changed

+129
-227
lines changed

.github/renovate.json5

Lines changed: 5 additions & 0 deletions
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: [
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
shell: bash
48+
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
49+
50+
- name: Setup Gradle
51+
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
52+
with:
53+
add-job-summary: always
54+
cache-read-only: ${{ inputs.cache-read-only }}
55+
dependency-graph: ${{ inputs.dependency-graph }}
56+
gradle-home-cache-cleanup: true
57+
gradle-version: ${{ inputs.gradle-version }}
58+
validate-wrappers: true

.github/workflows/codeql_analysis.yml

Lines changed: 4 additions & 13 deletions
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,8 @@ 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+
shell: bash
36+
run: ./gradlew assembleNonFreeRelease
4637

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

.github/workflows/deploy_github_releases.yml

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,18 @@ 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
16+
shell: bash
2217
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
2318
env:
2419
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
2520

26-
- name: Copy CI gradle.properties
27-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
28-
2921
- 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
22+
shell: bash
23+
run: ./gradlew :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease
3424
env:
3525
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
3626

@@ -103,7 +93,8 @@ jobs:
10393

10494
- name: Get the version
10595
id: get_version
106-
run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/}
96+
shell: bash
97+
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
10798

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

.github/workflows/deploy_library_releases.yml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,12 @@ 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+
shell: bash
16+
run: ./gradlew --no-configuration-cache :autofill-parser:publishAllPublicationsToMavenCentralRepository
2517
env:
2618
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.NEXUS_PUBLISH_USERNAME }}
2719
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.NEXUS_PUBLISH_PASSWORD }}

.github/workflows/deploy_snapshot.yml

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,40 +18,32 @@ 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
28+
shell: bash
3329
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
3430
env:
3531
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
3632

37-
- name: Copy CI gradle.properties
38-
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
39-
4033
- name: Build release app
41-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
34+
shell: bash
35+
run: ./gradlew collectFreeReleaseApks collectNonFreeReleaseApks bundleFreeRelease bundleNonFreeRelease -PsentryUploadMappings
4236
env:
4337
SNAPSHOT: "true"
4438
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
4539
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
5040

5141
- name: Clean secrets
42+
shell: bash
5243
run: scripts/signing-cleanup.sh
5344

5445
- name: Deploy snapshot
46+
shell: bash
5547
run: scripts/deploy-snapshot.sh
5648
env:
5749
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/draft_new_release.yml

Lines changed: 2 additions & 12 deletions
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

Lines changed: 20 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,12 @@ 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+
shell: bash
23+
run: ./gradlew ktfmtCheck
3724

3825
- name: Upload Kotlin build report
3926
if: "${{ always() }}"
@@ -45,25 +32,12 @@ jobs:
4532
unit-tests:
4633
runs-on: ubuntu-latest
4734
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
35+
- name: Setup build environment
36+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
6137

6238
- name: Run unit tests
63-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
64-
with:
65-
arguments: test -PslimTests
66-
gradle-home-cache-cleanup: true
39+
shell: bash
40+
run: ./gradlew test -PslimTests
6741

6842
- name: (Fail-only) Upload test report
6943
if: "${{ failure() }}"
@@ -82,25 +56,12 @@ jobs:
8256
build-apks:
8357
runs-on: ubuntu-latest
8458
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
59+
- name: Setup build environment
60+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
9861

9962
- 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
63+
shell: bash
64+
run: ./gradlew assembleFreeDebug assembleNonFreeDebug assembleNonFreeRelease
10465

10566
- name: Upload Kotlin build report
10667
if: "${{ always() }}"
@@ -112,25 +73,12 @@ jobs:
11273
check-api:
11374
runs-on: ubuntu-latest
11475
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
76+
- name: Setup build environment
77+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
12878

12979
- name: Check library API
130-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
131-
with:
132-
arguments: metalavaCheckCompatibilityRelease
133-
gradle-home-cache-cleanup: true
80+
shell: bash
81+
run: ./gradlew metalavaCheckCompatibilityRelease
13482

13583
- name: Upload Kotlin build report
13684
if: "${{ always() }}"
@@ -142,25 +90,12 @@ jobs:
14290
lint:
14391
runs-on: ubuntu-latest
14492
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
93+
- name: Setup build environment
94+
uses: android-password-store/android-password-store/.github/reusable-workflows/setup-gradle@develop
15895

15996
- name: Run Lint
160-
uses: gradle/actions/setup-gradle@6cec5d49d4d6d4bb982fbed7047db31ea6d38f11 # v3
161-
with:
162-
arguments: lint
163-
gradle-home-cache-cleanup: true
97+
shell: bash
98+
run: ./gradlew lint
16499

165100
- name: Upload Kotlin build report
166101
if: "${{ always() }}"

0 commit comments

Comments
 (0)