-
Notifications
You must be signed in to change notification settings - Fork 1
/
workflow.yaml
114 lines (107 loc) · 3.77 KB
/
workflow.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: # Provide a name for your system
spec:
serviceAccountName: batch-job-sa
nodeSelector:
kubernetes.io/hostname: "" # This is the node the workflow will run on. This will be provided by FluxEdge dynamically
entrypoint: main
arguments:
parameters:
- name: repoUrl
value: "" # Put in your repo URL
- name: repoBranch
value: "" # Put in the branch you want to deploy
# Node Selector will be dynamically added by FluxEdge
# Deployment Information will be dynmically added by FluxEdge
templates:
- name: main
steps:
- - name: clone-repo
template: clone-repo
arguments:
parameters:
- name: repoUrl
value: "{{workflow.parameters.repoUrl}}"
- name: repoBranch
value: "{{workflow.parameters.repoBranch}}"
- - name: kustomize-build
template: kustomize-build
arguments:
parameters:
- name: nodeSelector
value: "{{workflow.parameters.nodeSelector}}"
- name: deploymentInformation
value: "{{workflow.parameters.deploymentInformation}}"
artifacts:
- name: repo
from: "{{steps.clone-repo.outputs.artifacts.repo}}"
- - name: apply-kubectl
template: apply-kubectl
arguments:
artifacts:
- name: manifests
from: "{{steps.kustomize-build.outputs.artifacts.manifests}}"
- name: clone-repo
inputs:
parameters:
- name: repoUrl
- name: repoBranch
container:
image: alpine/git
command: [sh, -c]
# The arg for `cp` will need to be updated based on how the secret is read in from the file. This would need to be standardized and probably inserted by FluxEdge
args: [
"mkdir -p ~/.ssh && cp /secret/ssh-privatekey ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa && \
ssh-keyscan -H github.com >> ~/.ssh/known_hosts && \
git clone --branch {{inputs.parameters.repoBranch}} {{inputs.parameters.repoUrl}} /workspace && \
ls /workspace"
]
volumeMounts:
- name: ssh-key
mountPath: /secret
readOnly: true
volumes:
- name: ssh-key
secret:
secretName: git-ssh-key # This will need to be updated based on the secret that gets created
outputs:
artifacts:
- name: repo
path: /workspace
- name: kustomize-build
inputs:
parameters:
- name: nodeSelector
- name: deploymentInformation
artifacts:
- name: repo
path: /workspace
script:
image: line/kubectl-kustomize
command: [sh]
source: |
#!/bin/sh
cd /workspace/dev/overlay/dev
# Replace placeholders in kustomization.yaml with actual values
sed -i "s/\NODE_SELECTOR/{{inputs.parameters.nodeSelector}}/g" deployment-patch.yaml
sed -i "s/\DEPLOYMENT_INFORMATION/{{inputs.parameters.deploymentInformation}}/g" deployment-patch.yaml
sed -i "s/\DEPLOYMENT_INFORMATION/{{inputs.parameters.deploymentInformation}}/g" service-patch.yaml
sed -i "s/\DEPLOYMENT_INFORMATION/{{inputs.parameters.deploymentInformation}}/g" kustomization.yaml
# Generate the manifests using kustomize
kustomize build . -o /workspace/modified
ls /workspace/modified
outputs:
artifacts:
- name: manifests
path: /workspace/modified
- name: apply-kubectl
inputs:
artifacts:
- name: manifests
path: /workspace/modified
container:
image: bitnami/kubectl:1.21
command: [sh, -c]
args: ["kubectl apply -f /workspace/modified"]