Skip to content

Commit d1e050b

Browse files
committed
add rudimentary release script
1 parent dca446f commit d1e050b

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@
1515

1616
# file used as part of the build configuration
1717
/nginx-tag
18+
19+
# scratch directory for preparing releases
20+
/.release/

bin/docker_build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ask() {
6767

6868
built_tag="nginx-datadog-build-$nginx_tag"
6969
if ! ask "Build image compatible with nginx:$nginx_tag and tag as $built_tag?"; then
70-
exit
70+
exit 1
7171
fi
7272
docker build --build-arg "BASE_IMAGE=nginx:$nginx_tag" --tag "$built_tag" "$repo"
7373

bin/release.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/sh
2+
3+
# Create a github draft prelease.
4+
5+
set -e
6+
7+
REPO=$(dirname "$(dirname "$(realpath "$0")")")
8+
cd "$REPO"
9+
release_tag=$(<release.json jq --raw-output .release_tag)
10+
11+
build_module() {
12+
printf '%s' "$nginx_tag" >nginx-tag
13+
14+
# `docker build` the build image, if it isn't already built.
15+
bin/docker_build.sh --yes
16+
# clean slate
17+
make clobber
18+
# Build the nginx module in the build image created above.
19+
make build-in-docker
20+
cp .docker-build/libngx_http_datadog_module.so .release/ngx_http_datadog_module.so
21+
cd .release
22+
tar cvzf "${nginx_tag}-ngx_http_datadog_module.so.tgz" ngx_http_datadog_module.so
23+
gpg --armor --detach-sign "${nginx_tag}-ngx_http_datadog_module.so.tgz"
24+
rm ngx_http_datadog_module.so
25+
cd -
26+
}
27+
28+
# Build one module per nginx tag listed in $REPO/release.json
29+
# But first, warn and prompt if there are files in .release/
30+
mkdir -p .release
31+
if [ "$(ls .release | wc -l)" -ne 0 ]; then
32+
while true; do
33+
printf '.release/ is not empty. Delete contents first?\n'
34+
ls .release
35+
printf ' [yN] '
36+
read response
37+
case "$response" in
38+
y|Y|yes|YES) rm .release/*; break ;;
39+
n|N|no|NO|"") break ;;
40+
*) printf "\nI don't understand.\n" ;;
41+
esac
42+
done
43+
fi
44+
45+
<release.json jq --raw-output .nginx_tags[] | { while read nginx_tag || [ -n "$nginx_tag" ]; do
46+
build_module "$nginx_tag"
47+
done }
48+
49+
cd .release
50+
gh release create --prerelease --draft --title "$release_tag" --notes 'TODO' "$release_tag" *.tgz *.asc

release.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"release_tag": "v0.3.0",
3+
"nginx_tags": [
4+
"1.18.0-alpine",
5+
"1.19.1"
6+
]
7+
}

0 commit comments

Comments
 (0)