1
1
#! /usr/bin/env bash
2
- # parameters are available to this script
3
2
4
- # common build entry script for all elasticsearch clients
3
+ # ------------------------------------------------------- #
4
+ #
5
+ # Skeleton for common build entry script for all elastic
6
+ # clients. Needs to be adapted to individual client usage.
7
+ #
8
+ # Must be called: ./.ci/make.sh <target> <params>
9
+ #
10
+ # Version: 1.1.0
11
+ #
12
+ # Targets:
13
+ # ---------------------------
14
+ # assemble <VERSION> : build client artefacts with version
15
+ # bump <VERSION> : bump client internals to version
16
+ # codegen <VERSION> : generate endpoints
17
+ # docsgen <VERSION> : generate documentation
18
+ # examplegen : generate the doc examples
19
+ # clean : clean workspace
20
+ #
21
+ # ------------------------------------------------------- #
22
+
23
+ # ------------------------------------------------------- #
24
+ # Bootstrap
25
+ # ------------------------------------------------------- #
5
26
6
- # ./.ci/make.sh bump VERSION
7
- # ./.ci/make.sh build[TARGET_DIR]
8
27
script_path=$( dirname " $( realpath -s " $0 " ) " )
9
28
repo=$( realpath " $script_path /../" )
10
29
30
+
11
31
# shellcheck disable=SC1090
12
32
CMD=$1
33
+ TASK=$1
34
+ TASK_ARGS=()
13
35
VERSION=$2
36
+ STACK_VERSION=$VERSION
14
37
set -euo pipefail
15
38
16
- TARGET_DIR=${TARGET_DIR-.ci/ output}
17
- OUTPUT_DIR=" $repo /${TARGET_DIR} "
39
+ product=" elastic/elasticsearch-ruby"
40
+ output_folder=" .ci/output"
41
+ codegen_folder=" .ci/output"
42
+ OUTPUT_DIR=" $repo /${output_folder} "
43
+ REPO_BINDING=" ${OUTPUT_DIR} :/sln/${output_folder} "
44
+ mkdir -p " $OUTPUT_DIR "
45
+
46
+ echo -e " \033[34;1mINFO:\033[0m PRODUCT ${product} \033[0m"
47
+ echo -e " \033[34;1mINFO:\033[0m VERSION ${STACK_VERSION} \033[0m"
48
+ echo -e " \033[34;1mINFO:\033[0m OUTPUT_DIR ${OUTPUT_DIR} \033[0m"
49
+
18
50
RUBY_TEST_VERSION=${RUBY_TEST_VERSION-2.7}
19
- GITHUB_TOKEN=${GITHUB_TOKEN-nil}
20
- RUBYGEMS_API=${RUBYGEMS_API-nil}
21
- GIT_NAME=${GIT_NAME-elastic}
22
- GIT_EMAIL=
${GIT_EMAIL-' [email protected] ' }
23
51
24
52
case $CMD in
53
+ clean)
54
+ echo -e " \033[36;1mTARGET: clean workspace $output_folder \033[0m"
55
+ rm -rf " $output_folder "
56
+ echo -e " \033[32;1mdone.\033[0m"
57
+ exit 0
58
+ ;;
25
59
assemble)
26
- TASK=assemble[$VERSION ,$TARGET_DIR ]
60
+ if [ -v $VERSION ]; then
61
+ echo -e " \033[31;1mTARGET: assemble -> missing version parameter\033[0m"
62
+ exit 1
63
+ fi
64
+ echo -e " \033[36;1mTARGET: assemble artefact $VERSION \033[0m"
65
+ TASK=assemble
66
+ TASK_ARGS=(" $VERSION " " $output_folder " )
67
+ ;;
68
+ codegen)
69
+ if [ -v $VERSION ]; then
70
+ echo -e " \033[31;1mTARGET: codegen -> missing version parameter\033[0m"
71
+ exit 1
72
+ fi
73
+ echo -e " \033[36;1mTARGET: codegen API v$VERSION \033[0m"
74
+ TASK=codegen
75
+ # VERSION is BRANCH here for now
76
+ TASK_ARGS=(" $VERSION " " $codegen_folder " )
77
+ ;;
78
+ docsgen)
79
+ if [ -v $VERSION ]; then
80
+ echo -e " \033[31;1mTARGET: docsgen -> missing version parameter\033[0m"
81
+ exit 1
82
+ fi
83
+ echo -e " \033[36;1mTARGET: generate docs for $VERSION \033[0m"
84
+ TASK=codegen
85
+ # VERSION is BRANCH here for now
86
+ TASK_ARGS=(" $VERSION " " $codegen_folder " )
87
+ ;;
88
+ examplesgen)
89
+ echo -e " \033[36;1mTARGET: generate examples\033[0m"
90
+ TASK=codegen
91
+ # VERSION is BRANCH here for now
92
+ TASK_ARGS=(" $VERSION " " $codegen_folder " )
93
+ ;;
94
+ bump)
95
+ if [ -v $VERSION ]; then
96
+ echo -e " \033[31;1mTARGET: bump -> missing version parameter\033[0m"
97
+ exit 1
98
+ fi
99
+ echo -e " \033[36;1mTARGET: bump to version $VERSION \033[0m"
100
+ TASK=bump
101
+ # VERSION is BRANCH here for now
102
+ TASK_ARGS=(" $VERSION " )
27
103
;;
28
104
* )
29
105
echo -e " \nUsage:"
30
- echo -e " \t Build snapshot gems :"
31
- echo -e " \t $0 assemble_snapshot [version_qualifier] \n"
32
- echo -e " \t Build release gems:"
106
+ echo -e " \t Clean workspace :"
107
+ echo -e " \t $0 clean \n"
108
+ echo -e " \t Build gems:"
33
109
echo -e " \t $0 assemble [version_qualifier]\n"
110
+ echo -e " \t Bump version:"
111
+ echo -e " \t $0 bump [version_qualifier]\n"
34
112
exit 1
35
113
esac
36
114
@@ -39,21 +117,59 @@ echo -e "\033[34;1mINFO:\033[0m RUBY_TEST_VERSION ${RUBY_TEST_VERSION}\033[0m"
39
117
40
118
echo -e " \033[1m>>>>> Build [elastic/elasticsearch-ruby container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
41
119
42
- docker build --file .ci/Dockerfile --tag elastic/elasticsearch-ruby .
120
+ # ------------------------------------------------------- #
121
+ # Build Container
122
+ # ------------------------------------------------------- #
43
123
44
- echo -e " \033[1m>>>>> Run [elastic/elasticsearch-ruby container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
124
+ echo -e " \033[34;1mINFO: building $product container\033[0m"
125
+
126
+ docker build --file .ci/Dockerfile --tag ${product} .
127
+
128
+ # ------------------------------------------------------- #
129
+ # Run the Container
130
+ # ------------------------------------------------------- #
131
+
132
+ echo -e " \033[34;1mINFO: running $product container\033[0m"
45
133
46
134
mkdir -p " $OUTPUT_DIR "
47
135
136
+ # Convert ARGS to comma separated string for Rake:
137
+ args_string=" ${TASK_ARGS[*]} "
138
+ args_string=" ${args_string// / ,}
139
+
48
140
docker run \
49
141
--env " RUBY_TEST_VERSION=${RUBY_TEST_VERSION} " \
50
- --env " GITHUB_TOKEN" \
51
- --env " RUBYGEMS_API_KEY" \
52
- --env " GIT_EMAIL" \
53
- --env " GIT_NAME" \
54
142
--name test-runner \
55
- --volume $repo :/usr/src/app \
56
- --volume " ${OUTPUT_DIR} :/${TARGET_DIR} " \
143
+ --volume $REPO_BINDING \
57
144
--rm \
58
- elastic/elasticsearch-ruby \
59
- bundle exec rake unified_release:" $TASK "
145
+ $product \
146
+ bundle exec rake unified_release:" $TASK " [" $args_string " " ]
147
+
148
+ # ------------------------------------------------------- #
149
+ # Post Command tasks & checks
150
+ # ------------------------------------------------------- #
151
+
152
+ if [[ " $CMD " == " assemble" ]]; then
153
+ if compgen -G " .ci/output/*" > /dev/null; then
154
+ echo -e " \033[32;1mTARGET: successfully assembled client v$VERSION \033[0m"
155
+ else
156
+ echo -e " \033[31;1mTARGET: assemble failed, empty workspace!\033[0m"
157
+ exit 1
158
+ fi
159
+ fi
160
+
161
+ if [[ " $CMD " == " bump" ]]; then
162
+ echo " TODO"
163
+ fi
164
+
165
+ if [[ " $CMD " == " codegen" ]]; then
166
+ echo " TODO"
167
+ fi
168
+
169
+ if [[ " $CMD " == " docsgen" ]]; then
170
+ echo " TODO"
171
+ fi
172
+
173
+ if [[ " $CMD " == " examplesgen" ]]; then
174
+ echo " TODO"
175
+ fi
0 commit comments