35f2ef314aa4ea796aca6e8a51a0a4ccb31f1188
[osm/devops.git] /
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #    http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 apiVersion: argoproj.io/v1alpha1
19 kind: WorkflowTemplate
20 metadata:
21   name: full-update-ksu-generated-hr-wtf
22   namespace: osm-workflows
23 spec:
24   arguments:
25     parameters:
26     # Fleet repo
27     - name: git_fleet_url
28     - name: fleet_destination_folder
29     - name: git_fleet_cred_secret
30     # HelmRelease generation
31     - name: helmrelease_name
32     - name: chart_name
33     - name: chart_version
34     - name: target_ns
35     - name: create_ns
36     # Repo source generation
37     - name: is_preexisting_repo
38       value: "false"
39     - name: helmrepo_name
40     - name: helmrepo_url
41     - name: helmrepo_ns
42       valueFrom:
43         expression: "{{inputs.parameters.target_ns}}"
44     - name: helmrepo_secret_ref
45     # HelmRelease inline values (if any)
46     - name: inline_values
47       value: ""
48     # Secret reference and generation (if required)
49     - name: is_preexisting_secret
50       value: "false"
51     - name: values_secret_name
52     - name: secret_key
53       value: "values.yaml"
54     - name: age_public_key
55     ################################################################
56     ## A temporary secret should exist already in the `osm-workflows`
57     ## namespace containing the desired secret key-values
58     ## in a well-known key (in the example, `creds`).
59     ##
60     ## For instance:
61     ##
62     ## creds: |
63     ##     jenkinsUser: admin
64     ##     jenkinsPassword: myJ3nk1n2P2ssw0rd
65     ##
66     ## Secret values will be obtained from the
67     ## secret named after the input parameter `reference_secret_for_values`,
68     ## and from the key named after the input parameter `reference_key_for_values`
69     - name: reference_secret_for_values
70     - name: reference_key_for_values
71     # ConfigMap reference and generation (if required)
72     - name: is_preexisting_cm
73     - name: values_cm_name
74     - name: cm_key
75       value: "values.yaml"
76     - name: cm_values
77       value: ""
78     # KSU rendering
79     - name: ksu_name
80     - name: profile_name
81     - name: profile_type
82     - name: project_name
83       value: "osm_admin"
84     ## Root folder of the cloned Fleet repo - Do not touch
85     ### `FLEET_REPO_DIR` is the result of:
86     ### "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
87     - name: cloned_fleet_folder_name
88       value: "fleet-osm"
89     # Debug/dry run?
90     - name: debug
91       value: "false"
92     - name: dry_run
93       value: "false"
94
95   # Cleanup policy
96   ttlStrategy:
97     secondsAfterCompletion: 6000  # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
98     secondsAfterSuccess: 6000     # Time to live after workflow is successful
99     secondsAfterFailure: 9000     # Time to live after workflow fails
100
101   entrypoint: update-ksu-hr
102
103   templates:
104   # Main template
105   - name: update-ksu-hr
106     inputs:
107       parameters:
108       # Fleet repo
109       - name: git_fleet_url
110       - name: fleet_destination_folder
111       - name: git_fleet_cred_secret
112       # HelmRelease generation
113       - name: helmrelease_name
114       - name: chart_name
115       - name: chart_version
116       - name: target_ns
117       - name: create_ns
118       # Repo source generation
119       - name: is_preexisting_repo
120       - name: helmrepo_name
121       - name: helmrepo_url
122       - name: helmrepo_ns
123       - name: helmrepo_secret_ref
124       # HelmRelease inline values (if any)
125       - name: inline_values
126       # Secret reference and generation (if required)
127       - name: is_preexisting_secret
128       - name: values_secret_name
129       - name: secret_key
130       - name: age_public_key
131       - name: reference_secret_for_values
132       - name: reference_key_for_values
133       # ConfigMap reference and generation (if required)
134       - name: is_preexisting_cm
135       - name: values_cm_name
136       - name: cm_key
137       - name: cm_values
138       # KSU rendering
139       - name: ksu_name
140       - name: profile_name
141       - name: profile_type
142       - name: project_name
143       - name: cloned_fleet_folder_name
144       # Debug/dry run?
145       - name: debug
146         value: "false"
147       - name: dry_run
148         value: "false"
149
150     steps:
151     # ------ Preparations for transaction
152     - - name: generate-fleet-volume-repo
153         templateRef:
154           name: k8s-resources-wft
155           template: generate-volume
156         arguments:
157           parameters:
158             - name: pvc-size
159               value: '100Mi'
160     - - name: clone-fleet
161         templateRef:
162           name: git-wft
163           template: git-clone
164         arguments:
165           parameters:
166           - name: mount_path
167             value: "/fleet"
168           - name: repo_url
169             value: "{{inputs.parameters.git_fleet_url}}"
170           - name: destination_folder
171             value: "{{inputs.parameters.fleet_destination_folder}}"
172           - name: git_cred_secret
173             value: "{{inputs.parameters.git_fleet_cred_secret}}"
174           - name: git_volume_name
175             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
176     # ------ end of preparations for transaction
177
178     # ------ Transformations
179     - - name: update-ksu-generated-hr
180         templateRef:
181           name: ksu-management-wft
182           template: update-ksu-generated-hr
183         arguments:
184           parameters:
185           # References to required external resources
186           - name: fleet_volume_name
187             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
188           - name: fleet_mount_path
189             value: "/fleet"
190           # HelmRelease generation
191           - name: helmrelease_name
192             value: "{{inputs.parameters.helmrelease_name}}"
193           - name: chart_name
194             value: "{{inputs.parameters.chart_name}}"
195           - name: chart_version
196             value: "{{inputs.parameters.chart_version}}"
197           - name: target_ns
198             value: "{{inputs.parameters.target_ns}}"
199           - name: create_ns
200             value: "{{inputs.parameters.create_ns}}"
201           # Repo source generation
202           - name: is_preexisting_repo
203             value: "{{inputs.parameters.is_preexisting_repo}}"
204           - name: helmrepo_name
205             value: "{{inputs.parameters.helmrepo_name}}"
206           - name: helmrepo_url
207             value: "{{inputs.parameters.helmrepo_url}}"
208           - name: helmrepo_ns
209             value: "{{inputs.parameters.helmrepo_ns}}"
210           - name: helmrepo_secret_ref
211             value: "{{inputs.parameters.helmrepo_secret_ref}}"
212           # HelmRelease inline values (if any)
213           - name: inline_values
214             value: "{{inputs.parameters.inline_values}}"
215           # Secret reference and generation (if required)
216           - name: is_preexisting_secret
217             value: "{{inputs.parameters.is_preexisting_secret}}"
218           - name: values_secret_name
219             value: "{{inputs.parameters.values_secret_name}}"
220           - name: secret_key
221             value: "{{inputs.parameters.secret_key}}"
222           - name: age_public_key
223             value: "{{inputs.parameters.age_public_key}}"
224           ## Secret values will be obtained from this key in this secret
225           - name: reference_secret_for_values
226             value: "{{inputs.parameters.reference_secret_for_values}}"
227           - name: reference_key_for_values
228             value: "{{inputs.parameters.reference_key_for_values}}"
229           # ConfigMap reference and generation (if required)
230           - name: is_preexisting_cm
231             value: "{{inputs.parameters.is_preexisting_cm}}"
232           - name: values_cm_name
233             value: "{{inputs.parameters.values_cm_name}}"
234           - name: cm_key
235             value: "{{inputs.parameters.cm_key}}"
236           - name: cm_values
237             value: "{{inputs.parameters.cm_values}}"
238           # KSU rendering
239           - name: ksu_name
240             value: "{{inputs.parameters.ksu_name}}"
241           - name: profile_name
242             value: "{{inputs.parameters.profile_name}}"
243           - name: profile_type
244             value: "{{inputs.parameters.profile_type}}"
245           - name: project_name
246             value: "{{inputs.parameters.project_name}}"
247           ## Root folder of the cloned Fleet repo - Do not touch
248           - name: cloned_fleet_folder_name
249             value: "{{inputs.parameters.cloned_fleet_folder_name}}"
250           # Debug?
251           - name: debug
252             value: "{{inputs.parameters.debug}}"
253     # ------ end of transformations
254
255     # ------ Commit transaction
256     - - name: push-to-fleet
257         templateRef:
258           name: git-wft
259           template: git-commit-merge-push
260         arguments:
261           parameters:
262           - name: mount_path
263             value: "/fleet"
264           - name: repo_folder
265             value: "{{inputs.parameters.fleet_destination_folder}}"
266           - name: git_cred_secret
267             value: "{{inputs.parameters.git_fleet_cred_secret}}"
268           - name: git_volume_name
269             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
270           - name: commit_message
271             value: "Update KSU {{inputs.parameters.ksu_name}} of {{inputs.parameters.profile_name}} profile of {{inputs.parameters.profile_type}} type @ {{inputs.parameters.project_name}} project"
272           - name: main_branch
273             value: main
274           - name: contrib_branch
275             value: osm_contrib
276           - name: dry_run
277             value: "{{inputs.parameters.dry_run}}"
278 # ------ end of commit transaction