-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmake.sh
executable file
·125 lines (101 loc) · 2.9 KB
/
make.sh
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
#!/usr/bin/env bash
workspace=$(cd $(dirname $0) && pwd)
build() {
./gradlew build
if [ $? -ne 0 ]; then
echo "ERROR during build"
exit 1
fi
}
runLocal() {
local projectId=$2
local jobClass=$3
local timestamp=`date +%Y%m%d%H%M%S`
local jobName="${jobClass//./-}-${timestamp}"
echo
echo "Running ${jobName}"
${workspace}/gradlew runJob -PjobClass="${jobClass}" -Poptions="
--project=${projectId}
--runner=DirectRunner
--jobName=${jobName}
--tempLocation=gs://${projectId}.appspot.com/dataflow-examples/temp
"
}
runCloud() {
local projectId=$2
local jobClass=$3
local timestamp=`date +%Y%m%d%H%M%S`
local jobName="${jobClass//./-}-${timestamp}"
echo
echo "Running ${jobName}"
${workspace}/gradlew runJob -PjobClass="${jobClass}" -Poptions="
--project=${projectId}
--runner=DataflowRunner
--jobName=${jobName}
--stagingLocation=gs://${projectId}.appspot.com/dataflow-examples/staging
--tempLocation=gs://${projectId}.appspot.com/dataflow-examples/temp
"
}
deployTemplate() {
local projectId=$2
local jobClass=$3
echo
echo "Deploying ${jobName}"
${workspace}/gradlew runJob -PjobClass="${jobClass}" -Poptions="
--project=${projectId}
--runner=DataflowRunner
--templateLocation=gs://${projectId}.appspot.com/dataflow-examples/template/${jobClass}
--stagingLocation=gs://${projectId}.appspot.com/dataflow-examples/staging
--tempLocation=gs://${projectId}.appspot.com/dataflow-examples/temp
"
}
runTemplate() {
local projectId=$2
local templateName=$3
local jobClass=$4
local timestamp=`date +%Y%m%d%H%M%S`
local jobName="${templateName//./-}-${timestamp}"
echo
echo "Creating ${jobName}"
${workspace}/gradlew runJob -PjobClass="${jobClass}" -Poptions="
--project=${projectId}
--jobName=${jobName}
--templateLocation=gs://${projectId}.appspot.com/dataflow-examples/template/${templateName}
--stagingLocation=gs://${projectId}.appspot.com/dataflow-examples/staging
--tempLocation=gs://${projectId}.appspot.com/dataflow-examples/temp
"
}
####################
# Execution part
####################
command="help"
if [ "$#" -ge 1 ]; then
command=$1
fi
if [ "$#" -lt 3 ]; then
command="help"
fi
cat << EOF
-----------------------------------------------------
* workspace: ${workspace}
* command: ${command}
-----------------------------------------------------
EOF
build
case ${command} in
build|runLocal|runCloud|deployTemplate|runTemplate)
${command} "$@"
;;
*)
cat << EOF
* Usage: ./make.sh <command> <projectId> <jobClass|jobName|templateName>
* command:
- runLocal: runs a pipeline job on local
- runCloud: runs a pipeline job in cloud
- deployTemplate: deploys a template to cloud
- runTemplate: creates and run a job from the template in cloud
* example:
- /> ./make.sh runCloud projectId ChangingDataInDatastore
EOF
;;
esac