Skip to content

Commit 8e9b142

Browse files
committed
[CI] Updates .ci/make.sh with new commands
1 parent 4d6d441 commit 8e9b142

File tree

1 file changed

+140
-24
lines changed

1 file changed

+140
-24
lines changed

.ci/make.sh

Lines changed: 140 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,114 @@
11
#!/usr/bin/env bash
2-
# parameters are available to this script
32

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+
# ------------------------------------------------------- #
526

6-
# ./.ci/make.sh bump VERSION
7-
# ./.ci/make.sh build[TARGET_DIR]
827
script_path=$(dirname "$(realpath -s "$0")")
928
repo=$(realpath "$script_path/../")
1029

30+
1131
# shellcheck disable=SC1090
1232
CMD=$1
33+
TASK=$1
34+
TASK_ARGS=()
1335
VERSION=$2
36+
STACK_VERSION=$VERSION
1437
set -euo pipefail
1538

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+
1850
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]'}
2351

2452
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+
;;
2559
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")
27103
;;
28104
*)
29105
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:"
33109
echo -e "\t $0 assemble [version_qualifier]\n"
110+
echo -e "\t Bump version:"
111+
echo -e "\t $0 bump [version_qualifier]\n"
34112
exit 1
35113
esac
36114

@@ -39,21 +117,59 @@ echo -e "\033[34;1mINFO:\033[0m RUBY_TEST_VERSION ${RUBY_TEST_VERSION}\033[0m"
39117

40118
echo -e "\033[1m>>>>> Build [elastic/elasticsearch-ruby container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
41119

42-
docker build --file .ci/Dockerfile --tag elastic/elasticsearch-ruby .
120+
# ------------------------------------------------------- #
121+
# Build Container
122+
# ------------------------------------------------------- #
43123

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"
45133

46134
mkdir -p "$OUTPUT_DIR"
47135

136+
# Convert ARGS to comma separated string for Rake:
137+
args_string="${TASK_ARGS[*]}"
138+
args_string="${args_string// /,}
139+
48140
docker run \
49141
--env "RUBY_TEST_VERSION=${RUBY_TEST_VERSION}" \
50-
--env "GITHUB_TOKEN" \
51-
--env "RUBYGEMS_API_KEY" \
52-
--env "GIT_EMAIL" \
53-
--env "GIT_NAME" \
54142
--name test-runner \
55-
--volume $repo:/usr/src/app \
56-
--volume "${OUTPUT_DIR}:/${TARGET_DIR}" \
143+
--volume $REPO_BINDING \
57144
--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

Comments
 (0)