1+ name : Bootstrap Starter Workflow
2+ on :
3+ workflow_call :
4+ secrets :
5+ token :
6+ description : ' GitHub token'
7+ required : true
8+ # # This secret 'APPROVE_README_PUSH' is not used.
9+ # # Remove when the v3 bootstrap has been updated
10+ APPROVE_README_PUSH :
11+ description : ' Token to add-and-commit generated readme'
12+ required : true
13+ gpg_key :
14+ description : ' GPG Private Key'
15+ required : true
16+ gpg_pass :
17+ description : ' GPG Passphrase'
18+ required : true
19+ docker-user :
20+ description : ' DockerHub User'
21+ required : false
22+ docker-token :
23+ description : ' DockerHub token'
24+ required : false
25+ scan_token :
26+ description : ' Polaris token'
27+ required : false
28+ entra_username :
29+ description : ' Entra username for authentication'
30+ required : true
31+ entra_password :
32+ description : ' Entra password for authentication'
33+ required : false
34+ command_client_id :
35+ description : ' Command client ID for API authentication'
36+ required : false
37+ command_client_secret :
38+ description : ' Command client secret for API authentication'
39+ required : false
40+ inputs :
41+ command_token_url :
42+ type : string
43+ description : ' URL for obtaining command tokens'
44+ required : false
45+ command_hostname :
46+ type : string
47+ description : ' Command hostname for API endpoints'
48+ required : false
49+ command_base_api_path :
50+ type : string
51+ description : ' Base API path for the Command API'
52+ required : false
53+
54+
55+
56+ jobs :
57+ call-assign-from-json-workflow :
58+ uses : Keyfactor/actions/.github/workflows/assign-env-from-json.yml@v3
59+
60+ call-get-primary-language :
61+ outputs :
62+ primary_language : ${{ steps.read.outputs.primary_language }}
63+ runs-on : ubuntu-latest
64+ name : Detect Primary Language
65+ steps :
66+ - name : Checkout
67+ uses : keyfactor/checkout@v4
68+ with :
69+ token : ${{ secrets.GITHUB_TOKEN }}
70+ - name : Read primary language
71+ id : read
72+ uses : keyfactor/action-get-primary-language@v2
73+ with :
74+ token : ${{ secrets.GITHUB_TOKEN }}
75+ - name : Display type
76+ id : display
77+ run : |
78+ echo "primary_language=${{ steps.read.outputs.primary_language}}" | tee -a "$GITHUB_OUTPUT" | tee -a $GITHUB_STEP_SUMMARY
79+
80+ call-goreleaser-exists :
81+ outputs :
82+ goreleaser-exists : ${{ steps.check_files.outputs.files_exists }}
83+ runs-on : ubuntu-latest
84+ name : Check for .goreleaser file
85+ steps :
86+ - name : Checkout
87+ uses : keyfactor/checkout@v4
88+ with :
89+ token : ${{ secrets.GITHUB_TOKEN }}
90+ - name : Check file existence
91+ id : check_files
92+ uses : keyfactor/file-existence-action@v3
93+ with :
94+ files : " .goreleaser.y*ml"
95+
96+ setup_platforms :
97+ runs-on : ubuntu-latest
98+ outputs :
99+ platform_matrix : ${{ steps.vars.outputs.platform_matrix }}
100+ steps :
101+ - name : Checkout
102+ uses : keyfactor/checkout@v4
103+ with :
104+ token : ${{ secrets.GITHUB_TOKEN }}
105+ - name : Create an array from platform_list input #
106+ id : vars
107+ run :
108+ echo "platform_matrix=`cat integration-manifest.json | jq '.platform_matrix'`" | tee -a $GITHUB_OUTPUT | tee -a $GITHUB_STEP_SUMMARY
109+
110+ call-create-github-release-workflow :
111+ uses : Keyfactor/actions/.github/workflows/github-release.yml@v3
112+
113+ call-dotnet-build-and-release-workflow :
114+ needs : [ call-get-primary-language, call-assign-from-json-workflow, call-create-github-release-workflow ]
115+ if : needs.call-get-primary-language.outputs.primary_language == 'C#'
116+ uses : keyfactor/actions/.github/workflows/dotnet-build-and-release.yml@v3
117+ with :
118+ release_version : ${{ needs.call-create-github-release-workflow.outputs.release_version }}
119+ release_url : ${{ needs.call-create-github-release-workflow.outputs.release_url }}
120+ release_dir : ${{ needs.call-assign-from-json-workflow.outputs.release_dir }}
121+ release_project : ${{ needs.call-assign-from-json-workflow.outputs.release_project }}
122+ integration_type : ${{ needs.call-assign-from-json-workflow.outputs.integration_type }}
123+ secrets :
124+ token : ${{ secrets.token }}
125+
126+ call-go-build-and-release-workflow :
127+ needs : [ call-get-primary-language, call-assign-from-json-workflow, call-create-github-release-workflow,call-goreleaser-exists ]
128+ if : needs.call-get-primary-language.outputs.primary_language == 'Go' && needs.call-goreleaser-exists.outputs.goreleaser-exists == 'true'
129+ uses : keyfactor/actions/.github/workflows/go-build-and-release.yml@v3
130+ with :
131+ release_version : ${{ needs.call-create-github-release-workflow.outputs.release_version }}
132+ secrets :
133+ token : ${{ secrets.GITHUB_TOKEN }}
134+ gpg_key : ${{ secrets.gpg_key }}
135+ gpg_pass : ${{ secrets.gpg_pass }}
136+
137+ call-container-build-and-release-workflow :
138+ needs : [ call-get-primary-language, call-assign-from-json-workflow, call-create-github-release-workflow,call-goreleaser-exists,setup_platforms ]
139+ if : needs.call-get-primary-language.outputs.primary_language == 'Go' && needs.call-goreleaser-exists.outputs.goreleaser-exists == 'false'
140+ uses : keyfactor/actions/.github/workflows/container-build-and-release.yml@v3
141+ with :
142+ release_version : ${{ needs.call-create-github-release-workflow.outputs.release_version }}
143+ platform_list : ${{ fromJson(needs.setup_platforms.outputs.platform_matrix) }}
144+ secrets :
145+ docker-user : ${{ secrets.docker-user }}
146+ docker-token : ${{ secrets.docker-token }}
147+
148+ call-maven-build-and-release-workflow :
149+ needs : [ call-get-primary-language, call-assign-from-json-workflow, call-create-github-release-workflow ]
150+ if : needs.call-get-primary-language.outputs.primary_language == 'Java'
151+ uses : keyfactor/actions/.github/workflows/maven-build-and-release.yml@v3
152+ with :
153+ release_version : ${{ needs.call-create-github-release-workflow.outputs.release_version }}
154+ release_url : ${{ needs.call-create-github-release-workflow.outputs.release_url }}
155+ release_dir : ${{ needs.call-assign-from-json-workflow.outputs.release_dir }}
156+ secrets :
157+ token : ${{ secrets.token }}
158+
159+ call-generate-readme-workflow :
160+ if : github.event_name == 'push' || github.event_name == 'workflow_dispatch'
161+ uses : Keyfactor/actions/.github/workflows/generate-readme.yml@screenshots
162+ with :
163+ command_token_url : ${{ vars.COMMAND_TOKEN_URL }}
164+ command_hostname : ${{ vars.COMMAND_HOSTNAME }}
165+ command_base_api_path : ${{ vars.COMMAND_API_PATH }}
166+ secrets :
167+ token : ${{ secrets.token }}
168+ entra_username : ${{ secrets.ENTRA_USERNAME }}
169+ entra_password : ${{ secrets.ENTRA_PASSWORD }}
170+ command_client_id : ${{ secrets.COMMAND_CLIENT_ID }}
171+ command_client_secret : ${{ secrets.COMMAND_CLIENT_SECRET }}
172+
173+ call-update-catalog-workflow :
174+ needs : call-assign-from-json-workflow
175+ if : needs.call-assign-from-json-workflow.outputs.update_catalog == 'true' && github.ref_name == 'main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
176+ uses : Keyfactor/actions/.github/workflows/update-catalog.yml@v3
177+ secrets :
178+ token : ${{ secrets.token }}
179+
180+ call-repository-configuration-workflow :
181+ if : github.event_name == 'create' && startsWith(github.ref, 'refs/heads/release-')
182+ uses : Keyfactor/actions/.github/workflows/kf-configure-repo.yml@v3
183+ secrets :
184+ token : ${{ secrets.token }}
185+
186+ call-polaris-scan-workflow :
187+ if : github.event_name == 'pull_request' && (startsWith(github.base_ref, 'release-') || github.base_ref == 'main')
188+ uses : Keyfactor/actions/.github/workflows/kf-polaris-scan.yml@v3
189+ with :
190+ scan_branch : ${{ github.event.pull_request.head.ref }}
191+ secrets :
192+ token : ${{ secrets.scan_token }}
193+
194+ call-post-release-workflow :
195+ needs : [ call-assign-from-json-workflow, call-create-github-release-workflow ]
196+ if : needs.call-create-github-release-workflow.outputs.IS_FULL_RELEASE == 'True'
197+ uses : Keyfactor/actions/.github/workflows/kf-post-release.yml@v3
198+ secrets :
199+ token : ${{ secrets.token }}
200+ with :
201+ branchname : ${{ github.event.pull_request.base.ref }}
202+ release_version : ${{ needs.call-create-github-release-workflow.outputs.release_version }}
0 commit comments