1313 - cron : " 0 5 */365 1 *"
1414
1515jobs :
16+ pre-requisites :
17+ name : " Pre-requisites"
18+ runs-on : ubuntu-latest
19+ timeout-minutes : 10
20+ if : " ${{ github.event_name == 'push' }}"
21+ outputs :
22+ dependency-graph-enabled : " ${{ steps.dependency-graph.outputs.result }}"
23+ codacy-token-set : " ${{ steps.check-tokens.outputs.CODACY_TOKEN_SET }}"
24+ sonar-token-set : " ${{ steps.check-tokens.outputs.SONAR_TOKEN_SET }}"
25+
26+ steps :
27+ - name : " Verify tokens"
28+ id : check-tokens
29+ run : |
30+ # Verifying tokens...
31+ # Codacy
32+ if test -n '${{ secrets.CODACY_PROJECT_TOKEN }}'; then token_set='true'; else token_set='false'; fi
33+ printf 'CODACY_TOKEN_SET=%s\n' "${token_set:?}" 1>> "${GITHUB_OUTPUT?}"
34+ # SonarQube
35+ if test -n '${{ secrets.SONAR_TOKEN }}'; then token_set='true'; else token_set='false'; fi
36+ printf 'SONAR_TOKEN_SET=%s\n' "${token_set:?}" 1>> "${GITHUB_OUTPUT?}"
37+ - name : " Verify the dependency graph"
38+ id : dependency-graph
39+ uses : actions/github-script@v7
40+ timeout-minutes : 5
41+ with :
42+ retries : 3
43+ script : |
44+ /* jshint esversion: 6 */
45+ const response = await github.rest.dependencyGraph.exportSbom({
46+ owner: context.repo.owner,
47+ repo: context.repo.repo,
48+ }).catch(response => response);
49+ if(response && response.status === 200) {
50+ console.log('The dependency graph is enabled.');
51+ return true;
52+ } else if(response && response.status === 404) {
53+ console.error('::error::The dependency graph is disabled.');
54+ } else {
55+ let errorMsg = 'exportSbom failed';
56+ if(response && response.status && response.message) errorMsg += ' with error ' + response.status + ' (' + response.message + ')';
57+ throw new Error(errorMsg);
58+ }
59+ return false;
60+
1661 dependency-submission :
1762 name : " Dependency submission"
63+ needs : [pre-requisites]
1864 runs-on : ubuntu-latest
1965 timeout-minutes : 10
20- if : " ${{ github.event_name == 'push' }}"
66+ if : " ${{ github.event_name == 'push' && needs.pre-requisites.outputs.dependency-graph-enabled == 'true' }}"
2167 permissions :
2268 contents : write
2369
@@ -36,33 +82,12 @@ jobs:
3682 dependency-graph : " generate-and-submit"
3783 validate-wrappers : true
3884
39- verify-tokens :
40- name : " Verify tokens"
41- runs-on : ubuntu-latest
42- timeout-minutes : 10
43- if : " ${{ github.event_name == 'push' }}"
44- outputs :
45- codacy-token-set : " ${{ steps.check-tokens.outputs.CODACY_TOKEN_SET }}"
46- sonar-token-set : " ${{ steps.check-tokens.outputs.SONAR_TOKEN_SET }}"
47-
48- steps :
49- - name : " Verify tokens"
50- id : check-tokens
51- run : |
52- # Verifying tokens...
53- # Codacy
54- if test -n '${{ secrets.CODACY_PROJECT_TOKEN }}'; then token_set='true'; else token_set='false'; fi
55- printf 'CODACY_TOKEN_SET=%s\n' "${token_set:?}" 1>> "${GITHUB_OUTPUT?}"
56- # SonarQube
57- if test -n '${{ secrets.SONAR_TOKEN }}'; then token_set='true'; else token_set='false'; fi
58- printf 'SONAR_TOKEN_SET=%s\n' "${token_set:?}" 1>> "${GITHUB_OUTPUT?}"
59-
6085 codacy :
6186 name : " Codacy"
62- needs : [verify-tokens ]
87+ needs : [pre-requisites ]
6388 runs-on : ubuntu-latest
6489 timeout-minutes : 20
65- if : " ${{ github.event_name == 'push' && needs.verify-tokens .outputs.codacy-token-set == 'true' }}"
90+ if : " ${{ github.event_name == 'push' && needs.pre-requisites .outputs.codacy-token-set == 'true' }}"
6691 concurrency :
6792 group : " ${{ github.repository_id }}-${{ github.workflow }}-codacy"
6893 cancel-in-progress : false
@@ -98,10 +123,10 @@ jobs:
98123
99124 sonarqube :
100125 name : " SonarQube"
101- needs : [verify-tokens ]
126+ needs : [pre-requisites ]
102127 runs-on : ubuntu-latest
103128 timeout-minutes : 20
104- if : " ${{ github.event_name == 'push' && needs.verify-tokens .outputs.sonar-token-set == 'true' }}"
129+ if : " ${{ github.event_name == 'push' && needs.pre-requisites .outputs.sonar-token-set == 'true' }}"
105130
106131 steps :
107132 - name : " Checkout sources"
0 commit comments