@@ -4,6 +4,7 @@ metadata:
44 generateName : simulate-
55spec :
66 entrypoint : start
7+ onExit : stop
78 arguments :
89 parameters :
910 - name : name
1516 value : " "
1617 - name : destroy-outcome
1718 value : " "
19+ - name : test-gcs
20+ value : " "
21+
22+ volumes :
23+ - name : credentials
24+ secret :
25+ secretName : google-credentials
1826
1927 templates :
2028 - name : start
2735 value : ' {{ "{{" }}workflow.parameters.create-delay-seconds{{ "}}" }}'
2836 - name : outcome
2937 value : ' {{ "{{" }}workflow.parameters.create-outcome{{ "}}" }}'
38+ - name : test-gcs
39+ value : ' {{ "{{"}}workflow.parameters.test-gcs{{ "}}" }}'
3040 - - name : wait
3141 template : wait
42+ - name : stop
43+ steps :
3244 - - name : destroy
3345 template : simulate
3446 arguments :
@@ -37,24 +49,62 @@ spec:
3749 value : ' {{ "{{" }}workflow.parameters.destroy-delay-seconds{{ "}}" }}'
3850 - name : outcome
3951 value : ' {{ "{{" }}workflow.parameters.destroy-outcome{{ "}}" }}'
52+ - name : test-gcs
53+ value : ' {{ "{{"}}workflow.parameters.test-gcs{{ "}}" }}'
4054
4155 - name : simulate
4256 inputs :
4357 parameters :
4458 - name : delay-seconds
4559 - name : outcome
60+ - name : test-gcs
4661 script :
47- image : debian:9.4
62+ image : gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
4863 command : [bash]
4964 source : |
5065 set -x
51- start=0
52- while sleep 1; do
53- if [[ $((start++)) -ge {{ "{{" }}inputs.parameters.delay-seconds{{ "}}" }} ]]; then
54- break
66+
67+ delay() {
68+ start=0
69+ while sleep 1; do
70+ if [[ $((start++)) -ge {{ "{{" }}inputs.parameters.delay-seconds{{ "}}" }} ]]; then
71+ break
72+ fi
73+ done
74+ }
75+
76+ upload_or_delete_gcs_object() {
77+ gcloud auth activate-service-account --key-file /tmp/google-credentials.json
78+ gcloud config set core/disable_prompts True
79+
80+ BUCKET_NAME="infra-e2e-upload-test"
81+ FILE="{{ "{{" }}workflow.name{{ "}}" }}"
82+ touch "${FILE}"
83+
84+ DESTINATION="gs://${BUCKET_NAME}/${FILE}"
85+
86+ if gsutil -q stat "${DESTINATION}"; then
87+ echo "File exists. Deleting..."
88+ gsutil rm "${DESTINATION}"
89+ else
90+ echo "File does not exist. Proceeding to upload."
91+ gsutil cp "${FILE}" "${DESTINATION}"
5592 fi
56- done
93+ }
94+
95+ if [[ "{{ "{{" }}inputs.parameters.test-gcs{{ "}}" }}" == "true" ]]; then
96+ upload_or_delete_gcs_object
97+ fi
98+
99+ if [[ {{ "{{" }}inputs.parameters.delay-seconds{{ "}}" }} -gt 0 ]]; then
100+ delay
101+ fi
102+
57103 [[ "{{ "{{" }}inputs.parameters.outcome{{ "}}" }}" == "success" ]] || exit 1
58104
105+ volumeMounts :
106+ - name : credentials
107+ mountPath : /tmp
108+
59109 - name : wait
60110 suspend : {}
0 commit comments