Commit ee55ce8af623e5dcd34f6a08b703271f48025d09
1 parent
3678c50e
Exists in
master
and in
13 other branches
Rewrite release.sh as a Makefile
Showing
2 changed files
with
40 additions
and
55 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +PROJECT=gitlab | |
| 2 | +RELEASE_BUCKET=downloads-packages | |
| 3 | +RELEASE_BUCKET_REGION=eu-west-1 | |
| 4 | +SECRET_DIR:=$(shell openssl rand -hex 20) | |
| 5 | + | |
| 6 | +build: | |
| 7 | + OMNIBUS_APPEND_TIMESTAMP=0 bin/omnibus build project ${PROJECT} | |
| 8 | + | |
| 9 | +release: no_changes on_tag purge build sync | |
| 10 | + | |
| 11 | +no_changes: | |
| 12 | + git diff --quiet HEAD | |
| 13 | + | |
| 14 | +on_tag: | |
| 15 | + git describe --exact-match | |
| 16 | + | |
| 17 | +purge: | |
| 18 | + bin/omnibus clean --purge ${PROJECT} | |
| 19 | + mkdir -p pkg | |
| 20 | + (cd pkg && find . -delete) | |
| 21 | + | |
| 22 | +sync: remove_json move_ee_to_secret_dir md5 s3_sync | |
| 23 | + | |
| 24 | +remove_json: | |
| 25 | + find pkg/ -name '*.json' -delete | |
| 26 | + | |
| 27 | +move_ee_to_secret_dir: | |
| 28 | + if (git describe | grep -q -w ee); then \ | |
| 29 | + mv pkg ${SECRET_DIR} \ | |
| 30 | + && mkdir pkg \ | |
| 31 | + && mv ${SECRET_DIR} pkg/ \ | |
| 32 | + ; fi | |
| 33 | + | |
| 34 | +md5: | |
| 35 | + find pkg -type f -exec md5sum {} \; | |
| 36 | + | |
| 37 | +s3_sync: | |
| 38 | + aws s3 sync pkg/ s3://${RELEASE_BUCKET} --acl public-read --region ${RELEASE_BUCKET_REGION} | ... | ... |
release.sh
| 1 | -#!/bin/bash | |
| 2 | -PROJECT=gitlab | |
| 3 | -RELEASE_BUCKET=downloads-packages | |
| 4 | -RELEASE_BUCKET_REGION=eu-west-1 | |
| 5 | - | |
| 6 | -function error_exit | |
| 7 | -{ | |
| 8 | - echo "$0: fatal error: $1" 1>&2 | |
| 9 | - exit 1 | |
| 10 | -} | |
| 11 | - | |
| 12 | -if !(git diff --quiet HEAD); then | |
| 13 | - error_exit 'uncommited changes' | |
| 14 | -fi | |
| 15 | - | |
| 16 | -if !(git describe --exact-match); then | |
| 17 | - error_exit 'HEAD is not tagged' | |
| 18 | -fi | |
| 19 | - | |
| 20 | -if !(bin/omnibus clean --purge ${PROJECT}); then | |
| 21 | - error_exit 'clean failed' | |
| 22 | -fi | |
| 23 | - | |
| 24 | -if !(touch build.txt); then | |
| 25 | - error_exit 'failed to mark build start time' | |
| 26 | -fi | |
| 27 | - | |
| 28 | -if !(OMNIBUS_APPEND_TIMESTAMP=0 bin/omnibus build project ${PROJECT}); then | |
| 29 | - error_exit 'build failed' | |
| 30 | -fi | |
| 31 | - | |
| 32 | -release_package=$(find pkg/ -newer build.txt -type f -not -name '*.json') | |
| 33 | -if [[ -z ${release_package} ]]; then | |
| 34 | - error_exit 'could not find the release package' | |
| 35 | -fi | |
| 36 | - | |
| 37 | -if (git describe | grep -w ee); then | |
| 38 | - release_dir="$(openssl rand -hex 20)" | |
| 39 | - if [[ $? -ne 0 ]]; then | |
| 40 | - error_exit 'failed to generate release directory name' | |
| 41 | - fi | |
| 42 | - remote_package_path="s3://${RELEASE_BUCKET}/${release_dir}/${release_package#pkg/}" | |
| 43 | -else | |
| 44 | - remote_package_path="s3://${RELEASE_BUCKET}/${release_package#pkg/}" | |
| 45 | -fi | |
| 46 | - | |
| 47 | -echo | |
| 48 | -echo 'Package MD5:' | |
| 49 | -md5sum ${release_package} | |
| 50 | - | |
| 51 | -echo | |
| 52 | -echo 'Starting upload' | |
| 53 | -if !(aws s3 cp ${release_package} ${remote_package_path} --acl public-read --region ${RELEASE_BUCKET_REGION}); then | |
| 54 | - error_exit 'release upload failed' | |
| 55 | -fi | |
| 1 | +#!/bin/sh | |
| 2 | +make release | ... | ... |