Skip to content

Commit 301fed3

Browse files
authored
Restructure workflows (#2135)
1 parent d6c564e commit 301fed3

File tree

4 files changed

+202
-200
lines changed

4 files changed

+202
-200
lines changed

.github/workflows/build-common.yml

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
name: Reusable - Common
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
cache-read-only:
7+
type: boolean
8+
required: false
9+
no-build-cache:
10+
type: boolean
11+
required: false
12+
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
21+
22+
- name: Set up JDK for running Gradle
23+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
24+
with:
25+
distribution: temurin
26+
java-version: 17
27+
28+
- name: Set up gradle
29+
uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2
30+
with:
31+
cache-read-only: ${{ inputs.cache-read-only }}
32+
33+
- name: Gradle build and test
34+
run: ./gradlew build -x test ${{ inputs.no-build-cache && '--no-build-cache' || '' }}
35+
36+
test:
37+
name: Test
38+
runs-on: ${{ matrix.os }}
39+
strategy:
40+
fail-fast: false
41+
matrix:
42+
os:
43+
- macos-latest
44+
- macos-13
45+
- ubuntu-latest
46+
- windows-latest
47+
test-java-version:
48+
- 8
49+
- 11
50+
- 17
51+
- 21
52+
- 24 # renovate: datasource=java-version
53+
# macos-latest drops support for java 8 temurin. Run java 8 on macos-13. Run java 11, 17, 21 on macos-latest.
54+
exclude:
55+
- os: macos-latest
56+
test-java-version: 8
57+
- os: macos-13
58+
test-java-version: 11
59+
- os: macos-13
60+
test-java-version: 17
61+
- os: macos-13
62+
test-java-version: 21
63+
- os: macos-13
64+
test-java-version: 24 # renovate: datasource=java-version
65+
steps:
66+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
67+
68+
- id: setup-java-test
69+
name: Set up Java ${{ matrix.test-java-version }} for tests
70+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
71+
with:
72+
distribution: temurin
73+
java-version: ${{ matrix.test-java-version }}
74+
75+
- id: setup-java
76+
name: Set up Java for build
77+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
78+
with:
79+
distribution: temurin
80+
java-version: 17
81+
82+
- name: Set up gradle
83+
uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2
84+
with:
85+
cache-read-only: ${{ inputs.cache-read-only }}
86+
87+
- name: Gradle test
88+
run: >
89+
./gradlew test
90+
"-PtestJavaVersion=${{ matrix.test-java-version }}"
91+
"-Porg.gradle.java.installations.paths=${{ steps.setup-java-test.outputs.path }}"
92+
"-Porg.gradle.java.installations.auto-download=false"
93+
${{ inputs.no-build-cache && '--no-build-cache' || '' }}
94+
95+
integration-test:
96+
runs-on: ubuntu-latest
97+
steps:
98+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
99+
100+
- name: Set up JDK for running Gradle
101+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
102+
with:
103+
distribution: temurin
104+
java-version: 17
105+
106+
- name: Set up gradle
107+
uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2
108+
with:
109+
cache-read-only: ${{ inputs.cache-read-only }}
110+
111+
- name: Integration test
112+
run: ./gradlew integrationTest ${{ inputs.no-build-cache && '--no-build-cache' || '' }}
113+
114+
- name: Save integration test results
115+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
116+
if: always()
117+
with:
118+
name: integration-test-results
119+
path: jmx-metrics/build/reports/tests/integrationTest
120+
121+
markdown-lint-check:
122+
uses: ./.github/workflows/reusable-markdown-lint.yml
123+
124+
misspell-check:
125+
uses: ./.github/workflows/reusable-misspell-check.yml
126+
127+
shell-script-check:
128+
uses: ./.github/workflows/reusable-shell-script-check.yml

.github/workflows/build-daily.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Build Daily
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
# Run daily at 7:30 AM UTC
7+
- cron: '30 7 * * *'
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
common:
14+
uses: ./.github/workflows/build-common.yml
15+
with:
16+
no-build-cache: true
17+
18+
link-check:
19+
uses: ./.github/workflows/reusable-link-check.yml
20+
21+
workflow-notification:
22+
permissions:
23+
contents: read
24+
issues: write
25+
if: always()
26+
needs:
27+
- common
28+
- link-check
29+
uses: ./.github/workflows/reusable-workflow-notification.yml
30+
with:
31+
success: >-
32+
${{
33+
needs.common.result == 'success' &&
34+
needs.link-check.result == 'success'
35+
}}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Build Pull Request
2+
3+
on:
4+
pull_request:
5+
merge_group:
6+
7+
permissions:
8+
contents: read
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
common:
16+
uses: ./.github/workflows/build-common.yml
17+
with:
18+
cache-read-only: true
19+
20+
link-check:
21+
uses: ./.github/workflows/reusable-link-check.yml
22+
23+
required-status-check:
24+
if: always()
25+
needs:
26+
- common
27+
- link-check # wait for link check to complete, but don't require it to pass for merging
28+
runs-on: ubuntu-latest
29+
steps:
30+
# The reusable workflow success depends on all its jobs passing
31+
- if: needs.common.result != 'success'
32+
run: exit 1 # fail

0 commit comments

Comments
 (0)