-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild-test-deploy-cleanup-notify.yaml
130 lines (118 loc) · 3.39 KB
/
build-test-deploy-cleanup-notify.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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: build-test-deploy-cleanup-notify
spec:
params:
- name: appRepo
description: "Application repo location"
type: string
default: "https://github.com/pritidesai/cdcon2020.git"
- name: appPath
description: "use case location"
type: string
- name: nodePort
description: "expose service on the specified container port"
type: string
- name: appName
description: "deployment label"
type: string
workspaces:
- name: cdcon-workspace
resources:
- name: app-image
type: image
# Tasks
tasks:
# Git Clone App Repo
- name: clone-app-source
taskRef:
name: git-clone
params:
- name: url
value: $(params.appRepo)
workspaces:
- name: output
workspace: cdcon-workspace
# Build an application, run after git clone is successful
- name: build-app-image
taskRef:
name: build-image
runAfter: [ clone-app-source ]
params:
- name: appPath
value: $(params.appPath)
resources:
outputs:
- name: app-image
resource: app-image
workspaces:
- name: cdcon-workspace
workspace: cdcon-workspace
# Run e2e Tests
- name: run-e2e-tests
taskSpec:
steps:
- name: e2e-tests
image: "ubuntu"
script: |
exit 0
runAfter: [ build-app-image ]
# Deploy App Image
- name: deploy-app-image
taskRef:
name: deploy-using-kubectl
runAfter: [ run-e2e-tests ]
params:
- name: appName
value: $(params.appName)
- name: nodePort
value: $(params.nodePort)
resources:
inputs:
- name: app-image
resource: app-image
workspaces:
- name: cdcon-workspace
workspace: cdcon-workspace
finally:
# Cleanup Shared Workspace
- name: cleanup
workspaces:
- name: cdcon-workspace
workspace: cdcon-workspace
taskSpec:
workspaces:
- name: cdcon-workspace
steps:
- name: list-workspace
image: ubuntu
script: |
ls -1 $(workspaces.cdcon-workspace.path)
- name: check-application-dir-has-source
image: ubuntu
script: |
if [ ! -d "$(workspaces.cdcon-workspace.path)/" ]; then
echo "Something went wrong and could not find application source under $(workspaces.cdcon-workspace.path)/"
exit 1
fi
- name: cleanup-workspace
image: ubuntu
script: |
rm -rf $(workspaces.cdcon-workspace.path)/*
- name: verify-application-dir-has-gone
image: ubuntu
script: |
if [ "$(ls -1 $(workspaces.cdcon-workspace.path))" ]
then
echo "Something went wrong and could not cleanup application source under $(workspaces.cdcon-workspace.path)/"
exit 1
fi
# Create payload for event listeners depending on the success/failure of build-test-deploy
- name: notify-test-results
taskSpec:
steps:
- name: notification
image: "ubuntu"
script: |
echo Sent Slack message with the test results.