forked from nikhil-thomas/pipelines-tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo
executable file
·146 lines (108 loc) · 2.87 KB
/
demo
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/env bash
set -e -u -o pipefail
declare -r SCRIPT_DIR=$(cd -P $(dirname $0) && pwd)
declare -r NAMESPACE=${NAMESPACE:-pipelines-tutorial}
_log() {
local level=$1; shift
echo -e "$level: $@"
}
log.err() {
_log "ERROR" "$@" >&2
}
info() {
_log "\nINFO" "$@"
}
err() {
local code=$1; shift
local msg="$@"; shift
log.err $msg
exit $code
}
valid_command() {
local fn=$1; shift
[[ $(type -t "$fn") == "function" ]]
}
execute() {
echo "Running: '$@'"
${DRY_RUN:-false} || "$@"
}
# helpers to avoid adding -n $NAMESPACE to oc and tkn
OC() {
echo oc -n ${NAMESPACE} "$@"
oc -n ${NAMESPACE} "$@"
}
TKN() {
echo tkn -n ${NAMESPACE} "$@"
tkn -n ${NAMESPACE} "$@"
}
demo.validate() {
info "validating tools"
tkn version >/dev/null 2>&1 || err 1 "no tkn binary found"
oc version >/dev/null 2>&1 || err 1 "no oc binary found"
return 0
}
declare -r CATALOG_VERSION="release-v0.7"
declare -r TEKTON_CATALOG="https://raw.githubusercontent.com/openshift/tektoncd-catalog/$CATALOG_VERSION"
declare -r OPENSHIFT_CATALOG="https://raw.githubusercontent.com/openshift/pipelines-catalog/$CATALOG_VERSION"
declare -r TASKS_DIR=tmp/tasks
declare -r OC_TASK="$TEKTON_CATALOG/openshift-client/openshift-client-task.yaml"
declare -r LOCAL_OC_TASK="$TASKS_DIR/oc.task.yaml"
declare -r S2I_JAVA8_TASK="$OPENSHIFT_CATALOG/s2i-java-8/s2i-java-8-task.yaml"
declare -r LOCAL_S2I_JAVA8_TASK="$TASKS_DIR/s2i-java8.task.yaml"
demo.get-tasks() {
info "Downloading tasks from catalog to $TASKS_DIR directory"
mkdir -p "$TASKS_DIR"
curl -sLf "$S2I_JAVA8_TASK" -o "$LOCAL_S2I_JAVA8_TASK"
curl -sLf "$OC_TASK" -o "$LOCAL_OC_TASK"
}
demo.setup() {
demo.validate
info "ensure namespace $NAMESPACE exists"
OC get ns "$NAMESPACE" 2>/dev/null || {
OC new-project $NAMESPACE
}
demo.get-tasks
info "Apply petclinic resources"
sed -e "s|pipelines-tutorial|$NAMESPACE|g" petclinic/manifests.yaml | OC apply -f -
info "Apply pipeline tasks"
OC apply -f "$TASKS_DIR"
info "Applying resources"
sed -e "s|pipelines-tutorial|$NAMESPACE|g" pipeline/02-resources.yaml | OC apply -f -
info "Applying pipeline"
OC apply -f pipeline/01-build-deploy.yaml
echo -e "\nPipeline"
echo "==============="
TKN p desc petclinic-deploy-pipeline
}
demo.logs() {
TKN pipeline logs petclinic-deploy-pipeline --last -f
}
demo.run() {
TKN pipeline start petclinic-deploy-pipeline \
-r app-git=petclinic-git \
-r app-image=petclinic-image \
-s pipeline
sleep 5
demo.logs
}
demo.help() {
cat <<-EOF
USAGE:
demo [command]
COMMANDS:
setup setups project, tasks, pipeline and resources
run starts pipeline
logs show logs of last pipelinerun
EOF
}
main() {
local fn="demo.${1:-help}"
valid_command "$fn" || {
demo.help
err 1 "invalid command '$1'"
}
cd $SCRIPT_DIR
$fn "$@"
return $?
}
main "$@"