Skip to content

Commit 63fd050

Browse files
committed
Make Java test workflow reusable
1 parent ebb6269 commit 63fd050

File tree

4 files changed

+365
-164
lines changed

4 files changed

+365
-164
lines changed

.github/workflows/reusable-ci.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Reusable Complete CI Workflow
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
target-branch:
7+
description: 'Branch to checkout and test (defaults to the calling branch)'
8+
required: false
9+
type: string
10+
default: ''
11+
enable-status-reporting:
12+
description: 'Whether to enable status reporting'
13+
required: false
14+
type: boolean
15+
default: true
16+
status-context:
17+
description: 'Context for status checks'
18+
required: false
19+
type: string
20+
default: 'master/unit'
21+
target-repo:
22+
description: 'Repository to post status to'
23+
required: false
24+
type: string
25+
default: 'datadog-api-spec'
26+
java-versions:
27+
description: 'JSON array of Java versions to test against'
28+
required: false
29+
type: string
30+
default: '["8", "16", "18", "19"]'
31+
platforms:
32+
description: 'JSON array of platforms to run tests on'
33+
required: false
34+
type: string
35+
default: '["ubuntu-latest"]'
36+
test-script:
37+
description: 'Test script to execute'
38+
required: false
39+
type: string
40+
default: './run-tests.sh'
41+
examples-script:
42+
description: 'Examples script to execute'
43+
required: false
44+
type: string
45+
default: './check-examples.sh'
46+
secrets:
47+
PIPELINE_GITHUB_APP_ID:
48+
required: false
49+
PIPELINE_GITHUB_APP_PRIVATE_KEY:
50+
required: false
51+
# Integration test secrets
52+
DD_API_KEY:
53+
required: false
54+
DD_CLIENT_API_KEY:
55+
required: false
56+
DD_CLIENT_APP_KEY:
57+
required: false
58+
SLEEP_AFTER_REQUEST:
59+
required: false
60+
61+
jobs:
62+
test:
63+
uses: ./.github/workflows/reusable-java-test.yml
64+
with:
65+
target-branch: ${{ inputs.target-branch }}
66+
java-versions: ${{ inputs.java-versions }}
67+
platforms: ${{ inputs.platforms }}
68+
test-script: ${{ inputs.test-script }}
69+
examples-script: ${{ inputs.examples-script }}
70+
enable-status-reporting: ${{ inputs.enable-status-reporting }}
71+
status-context: ${{ inputs.status-context }}
72+
secrets:
73+
PIPELINE_GITHUB_APP_ID: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
74+
PIPELINE_GITHUB_APP_PRIVATE_KEY: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
75+
DD_API_KEY: ${{ secrets.DD_API_KEY }}
76+
77+
integration:
78+
uses: ./.github/workflows/reusable-integration-test.yml
79+
with:
80+
target-branch: ${{ inputs.target-branch }}
81+
enable-status-reporting: ${{ inputs.enable-status-reporting }}
82+
status-context: 'integration'
83+
target-repo: ${{ inputs.target-repo }}
84+
secrets:
85+
PIPELINE_GITHUB_APP_ID: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
86+
PIPELINE_GITHUB_APP_PRIVATE_KEY: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
87+
DD_API_KEY: ${{ secrets.DD_API_KEY }}
88+
DD_CLIENT_API_KEY: ${{ secrets.DD_CLIENT_API_KEY }}
89+
DD_CLIENT_APP_KEY: ${{ secrets.DD_CLIENT_APP_KEY }}
90+
SLEEP_AFTER_REQUEST: ${{ secrets.SLEEP_AFTER_REQUEST }}

.github/workflows/test_integration.yml renamed to .github/workflows/reusable-integration-test.yml

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Run Integration Tests
1+
name: Reusable Integration Test Workflow
22

33
permissions:
44
contents: read
@@ -16,6 +16,41 @@ on:
1616
- master
1717
schedule:
1818
- cron: "0 3 * * *"
19+
workflow_call:
20+
inputs:
21+
target-branch:
22+
description: 'Branch to checkout and test (defaults to the calling branch)'
23+
required: false
24+
type: string
25+
default: ''
26+
enable-status-reporting:
27+
description: 'Whether to post status checks to datadog-api-spec repo'
28+
required: false
29+
type: boolean
30+
default: false
31+
status-context:
32+
description: 'Context for status checks'
33+
required: false
34+
type: string
35+
default: 'integration'
36+
target-repo:
37+
description: 'Repository to post status to'
38+
required: false
39+
type: string
40+
default: 'datadog-api-spec'
41+
secrets:
42+
PIPELINE_GITHUB_APP_ID:
43+
required: false
44+
PIPELINE_GITHUB_APP_PRIVATE_KEY:
45+
required: false
46+
DD_API_KEY:
47+
required: true
48+
DD_CLIENT_API_KEY:
49+
required: true
50+
DD_CLIENT_APP_KEY:
51+
required: true
52+
SLEEP_AFTER_REQUEST:
53+
required: false
1954

2055
concurrency:
2156
group: integration-${{ github.head_ref }}
@@ -48,17 +83,19 @@ jobs:
4883
with:
4984
app-id: ${{ secrets.PIPELINE_GITHUB_APP_ID }}
5085
private-key: ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
51-
repositories: datadog-api-spec
86+
repositories: ${{ inputs.target-repo || 'datadog-api-spec' }}
5287
- name: Checkout code
5388
uses: actions/checkout@v3
89+
with:
90+
ref: ${{ inputs.target-branch || github.ref }}
5491
- name: Post pending status check
55-
if: github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/')
92+
if: github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')
5693
uses: DataDog/github-actions/post-status-check@v2
5794
with:
5895
github-token: ${{ steps.get_token.outputs.token }}
59-
repo: datadog-api-spec
96+
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
6097
status: pending
61-
context: integration
98+
context: ${{ inputs.status-context || 'integration' }}
6299
- name: Install Java
63100
uses: actions/setup-java@v3
64101
with:
@@ -85,18 +122,18 @@ jobs:
85122
RECORD: "none"
86123
SLEEP_AFTER_REQUEST: "${{ vars.SLEEP_AFTER_REQUEST }}"
87124
- name: Post failure status check
88-
if: failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/')
125+
if: failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')
89126
uses: DataDog/github-actions/post-status-check@v2
90127
with:
91128
github-token: ${{ steps.get_token.outputs.token }}
92-
repo: datadog-api-spec
129+
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
93130
status: failure
94-
context: integration
131+
context: ${{ inputs.status-context || 'integration' }}
95132
- name: Post success status check
96-
if: "!failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/')"
133+
if: "!failure() && github.event_name == 'pull_request' && contains(github.event.pull_request.head.ref, 'datadog-api-spec/generated/') && (inputs.enable-status-reporting || github.event_name != 'workflow_call')"
97134
uses: DataDog/github-actions/post-status-check@v2
98135
with:
99136
github-token: ${{ steps.get_token.outputs.token }}
100-
repo: datadog-api-spec
137+
repo: ${{ inputs.target-repo || 'datadog-api-spec' }}
101138
status: success
102-
context: integration
139+
context: ${{ inputs.status-context || 'integration' }}

0 commit comments

Comments
 (0)