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+ pre-commit :
63+ uses : ./.github/workflows/reusable-pre-commit.yml
64+ with :
65+ target-branch : ${{ inputs.target-branch }}
66+ enable-commit-changes : false # Don't auto-commit in external CI
67+ secrets :
68+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
69+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
70+
71+ javadoc :
72+ uses : ./.github/workflows/reusable-javadoc.yml
73+ with :
74+ target-branch : ${{ inputs.target-branch }}
75+ secrets :
76+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
77+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
78+
79+ shading :
80+ uses : ./.github/workflows/reusable-shading.yml
81+ with :
82+ target-branch : ${{ inputs.target-branch }}
83+ secrets :
84+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
85+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
86+
87+ test :
88+ uses : ./.github/workflows/reusable-java-test.yml
89+ with :
90+ target-branch : ${{ inputs.target-branch }}
91+ java-versions : ${{ inputs.java-versions }}
92+ platforms : ${{ inputs.platforms }}
93+ test-script : ${{ inputs.test-script }}
94+ secrets :
95+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
96+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
97+ DD_API_KEY : ${{ secrets.DD_API_KEY }}
98+
99+ examples :
100+ uses : ./.github/workflows/reusable-examples.yml
101+ with :
102+ target-branch : ${{ inputs.target-branch }}
103+ examples-script : ${{ inputs.examples-script }}
104+ secrets :
105+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
106+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
107+
108+ integration :
109+ uses : ./.github/workflows/reusable-integration-test.yml
110+ with :
111+ target-branch : ${{ inputs.target-branch }}
112+ enable-status-reporting : false # We handle reporting in the main report job
113+ status-context : ' integration'
114+ target-repo : ${{ inputs.target-repo }}
115+ secrets :
116+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
117+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
118+ DD_API_KEY : ${{ secrets.DD_API_KEY }}
119+ DD_CLIENT_API_KEY : ${{ secrets.DD_CLIENT_API_KEY }}
120+ DD_CLIENT_APP_KEY : ${{ secrets.DD_CLIENT_APP_KEY }}
121+ SLEEP_AFTER_REQUEST : ${{ secrets.SLEEP_AFTER_REQUEST }}
122+
123+ report :
124+ uses : ./.github/workflows/reusable-report.yml
125+ needs :
126+ - test
127+ - examples
128+ - javadoc
129+ - shading
130+ - integration
131+ if : always()
132+ with :
133+ test-result : ${{ needs.test.result }}
134+ examples-result : ${{ needs.examples.result }}
135+ javadoc-result : ${{ needs.javadoc.result }}
136+ shading-result : ${{ needs.shading.result }}
137+ context : ${{ inputs.status-context }}
138+ target-repo : ${{ inputs.target-repo }}
139+ enable-status-reporting : ${{ inputs.enable-status-reporting }}
140+ secrets :
141+ PIPELINE_GITHUB_APP_ID : ${{ secrets.PIPELINE_GITHUB_APP_ID }}
142+ PIPELINE_GITHUB_APP_PRIVATE_KEY : ${{ secrets.PIPELINE_GITHUB_APP_PRIVATE_KEY }}
0 commit comments