Skip to content

Commit 2f6f7d8

Browse files
authored
[build] use reusable workflows to simplify actions (#1598)
CI and PR builds are very similar so we use reusable workflows to keep the build logic in single place. By separating regular build and examples build into separate jobs, we can now re-run those individually as needed. See: https://docs.github.com/en/actions/using-workflows/reusing-workflows
1 parent d74797e commit 2f6f7d8

File tree

5 files changed

+94
-94
lines changed

5 files changed

+94
-94
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Build and Test Examples
2+
3+
on:
4+
workflow_call:
5+
6+
jobs:
7+
build:
8+
timeout-minutes: 30
9+
runs-on: ubuntu-latest
10+
defaults:
11+
run:
12+
working-directory: examples
13+
14+
steps:
15+
- uses: actions/checkout@v3
16+
17+
- name: Validate Gradle wrapper
18+
uses: gradle/wrapper-validation-action@v1
19+
20+
- name: Set up Java 11
21+
uses: actions/setup-java@v3
22+
with:
23+
java-version: 11
24+
distribution: 'zulu'
25+
26+
- name: Set up Gradle cache
27+
uses: gradle/gradle-build-action@v2
28+
29+
- name: Set up Maven cache
30+
uses: actions/cache@v2
31+
with:
32+
path: ~/.m2/repository
33+
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
34+
restore-keys: ${{ runner.os }}-maven-
35+
36+
- name: Build examples with Gradle
37+
run: ./gradlew clean build
38+
39+
- name: Archive examples failure build reports
40+
uses: actions/upload-artifact@v3
41+
if: failure()
42+
with:
43+
name: build-examples-reports
44+
path: ./examples/**/build/reports
45+
retention-days: 7
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Build and Test Libraries
2+
3+
on:
4+
workflow_call:
5+
6+
jobs:
7+
build:
8+
timeout-minutes: 30
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v3
13+
14+
- name: Validate Gradle wrapper
15+
uses: gradle/wrapper-validation-action@v1
16+
17+
- name: Set up Java 11
18+
uses: actions/setup-java@v3
19+
with:
20+
java-version: 11
21+
distribution: 'zulu'
22+
23+
- name: Set up Gradle cache
24+
uses: gradle/gradle-build-action@v2
25+
26+
- name: Build libraries with Gradle
27+
run: ./gradlew clean build
28+
29+
- name: Archive failure build reports
30+
uses: actions/upload-artifact@v3
31+
if: failure()
32+
with:
33+
name: build-reports
34+
path: |
35+
./**/build/reports
36+
plugins/graphql-kotlin-maven-plugin/build/integration/**/build.log
37+
plugins/graphql-kotlin-maven-plugin/build/integration/**/target/surefire-reports
38+
retention-days: 7

.github/workflows/continuous-integration.yml

Lines changed: 5 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,12 @@ on:
99
- 'website/**'
1010

1111
jobs:
12-
build:
13-
timeout-minutes: 30
14-
runs-on: ubuntu-latest
15-
16-
steps:
17-
- uses: actions/checkout@v3
18-
19-
- name: Validate Gradle wrapper
20-
uses: gradle/wrapper-validation-action@v1
21-
22-
- name: Set up Java 11
23-
uses: actions/setup-java@v3
24-
with:
25-
java-version: 11
26-
distribution: 'zulu'
27-
28-
- name: Set up Gradle cache
29-
uses: gradle/gradle-build-action@v2
30-
31-
- name: Build libraries with Gradle
32-
run: ./gradlew clean build
33-
34-
- name: Archive failure build reports
35-
uses: actions/upload-artifact@v3
36-
if: failure()
37-
with:
38-
name: build-reports
39-
path: |
40-
./**/build/reports
41-
plugins/graphql-kotlin-maven-plugin/build/integration/**/build.log
42-
plugins/graphql-kotlin-maven-plugin/build/integration/**/target/surefire-reports
43-
retention-days: 7
44-
45-
- name: Build examples with Gradle
46-
working-directory: examples
47-
run: ./gradlew clean build
12+
build-libraries:
13+
uses: ./.github/workflows/build-libraries.yml
4814

49-
- name: Archive examples failure build reports
50-
uses: actions/upload-artifact@v3
51-
if: failure()
52-
with:
53-
name: build-examples-reports
54-
path: ./examples/**/build/reports
55-
retention-days: 7
15+
build-examples:
16+
needs: build-libraries
17+
uses: ./.github/workflows/build-examples.yml
5618

5719
release-notes:
5820
timeout-minutes: 10

.github/workflows/pr-check.yml

Lines changed: 5 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -10,55 +10,9 @@ on:
1010
- '*.md'
1111

1212
jobs:
13-
build:
14-
timeout-minutes: 30
15-
runs-on: ubuntu-latest
13+
build-libraries:
14+
uses: ./.github/workflows/build-libraries.yml
1615

17-
steps:
18-
- uses: actions/checkout@v3
19-
20-
- name: Validate Gradle wrapper
21-
uses: gradle/wrapper-validation-action@v1
22-
23-
- name: Set up Java 11
24-
uses: actions/setup-java@v3
25-
with:
26-
java-version: 11
27-
distribution: 'zulu'
28-
29-
- name: Set up Gradle cache
30-
uses: gradle/gradle-build-action@v2
31-
32-
# Used by maven-plugin integration tests
33-
- name: Set up Maven cache
34-
uses: actions/cache@v2
35-
with:
36-
path: ~/.m2/repository
37-
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
38-
restore-keys: ${{ runner.os }}-maven-
39-
40-
- name: Build library with Gradle
41-
run: ./gradlew clean build
42-
43-
- name: Archive failure build reports
44-
uses: actions/upload-artifact@v3
45-
if: failure()
46-
with:
47-
name: build-reports
48-
path: |
49-
./**/build/reports
50-
plugins/graphql-kotlin-maven-plugin/build/integration/**/build.log
51-
plugins/graphql-kotlin-maven-plugin/build/integration/**/target/surefire-reports
52-
retention-days: 7
53-
54-
- name: Build examples with Gradle
55-
working-directory: examples
56-
run: ./gradlew clean build
57-
58-
- name: Archive examples failure build reports
59-
uses: actions/upload-artifact@v3
60-
if: failure()
61-
with:
62-
name: build-examples-reports
63-
path: ./examples/**/build/reports
64-
retention-days: 7
16+
build-examples:
17+
needs: build-libraries
18+
uses: ./.github/workflows/build-examples.yml

examples/client/maven-client/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ tasks {
2222
)
2323
val wireMockServerPort: Int? = ext.get("wireMockServerPort") as? Int
2424
val mavenBuild by register("mavenBuild") {
25+
dependsOn(gradle.includedBuild("graphql-kotlin").task(":resolveIntegrationTestDependencies"))
2526
timeout.set(Duration.ofSeconds(500))
2627
doLast {
2728
exec {

0 commit comments

Comments
 (0)