-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yml
120 lines (113 loc) · 3.41 KB
/
action.yml
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
115
116
117
118
119
120
name: 'Create ArgoCD application'
description: 'Create ArgoCD Application using cli'
inputs:
name:
required: true
description: 'Application name'
token:
description: 'ArgoCD access token'
required: true
server:
description: 'ArgoCD server'
required: false
default: argocd.dev.us-east-1.cond
appNamespace:
required: false
description: 'Namespace to deploy application'
default: argocd
namespace:
required: true
description: 'Namespace to create resources'
releaseName:
required: false
description: 'Helm release name'
default: ''
label:
required: false
description: 'Application label'
default: 'purpose=qa'
repo:
required: true
description: 'Helm chart repository'
revision:
required: true
description: 'Helm chart repository revision | Chart version'
path:
required: false
description: 'Path in repository to the app directory'
chart:
required: false
description: 'Helm chart to deploy'
values:
required: false
description: 'Helm values'
ttl:
required: true
description: "K8s Janitor TTL"
wait:
required: false
description: "Wait timeout in seconds"
default: "1200"
runs:
using: "composite"
steps:
- name: Install ArgoCD cli
shell: bash
run: |
if [ -z $(which argocd || true) ]; then
mkdir -p /home/runner/.local/bin/
curl -o /home/runner/.local/bin/argocd https://artifactory.infra.us-east-1.conductor.sh/artifactory/thirdparty/argocd/v2.11.3/argocd-linux-amd64
chmod +x /home/runner/.local/bin/argocd
fi
- name: cli parameters
id: cli
shell: bash
run: |
if [ -z "${{ inputs.chart }}" ]; then
echo "chart=--path ${{ inputs.path }}" >> $GITHUB_OUTPUT
else
echo "chart=--helm-chart ${{ inputs.chart }}" >> $GITHUB_OUTPUT
fi
- name: Create Application
shell: bash
run: |
cat <<EOT > "values-literal-file.yaml"
${{ inputs.values }}
EOT
cat "values-literal-file.yaml"
echo "Creating application:"
argocd app create ${{ inputs.name }} \
--upsert \
--auth-token '${{ inputs.token }}' \
--server ${{ inputs.server }} \
--insecure \
--grpc-web \
--annotations 'janitor/ttl=${{ inputs.ttl }}' \
--label '${{ inputs.label }}' \
--app-namespace ${{ inputs.appNamespace }} \
--dest-server https://kubernetes.default.svc \
--repo ${{ inputs.repo }} \
--revision ${{ inputs.revision }} \
${{ steps.cli.outputs.chart }} \
--sync-policy automated \
--self-heal \
--set-finalizer \
--sync-option "Prune=true" \
--sync-option "Replace=true" \
--dest-namespace ${{ inputs.namespace }} \
--release-name ${{ inputs.releaseName }} \
--values-literal-file values-literal-file.yaml
- name: Wait for App is synced and ready
shell: bash
run: |
timeout ${{ inputs.wait }}s bash -c '
EXIT_CODE=20
while [[ ${EXIT_CODE} -ne 0 ]];
do
argocd app wait ${{ inputs.name }} --timeout ${{ inputs.wait }} \
--auth-token '${{ inputs.token }}' \
--server ${{ inputs.server }} \
--insecure \
--grpc-web
EXIT_CODE=$?
done'