Commit e8cc30d2c7ca98b6cbb366d9f683f9edaa0ccaca
Exists in
master
and in
17 other branches
Merge branch 'release_script' into 'master'
Release Script
Showing
3 changed files
with
63 additions
and
7 deletions
Show diff stats
.gitignore
doc/release.md
| @@ -29,23 +29,33 @@ git push origin 6-6-stable 6.6.0.omnibus | @@ -29,23 +29,33 @@ git push origin 6-6-stable 6.6.0.omnibus | ||
| 29 | 29 | ||
| 30 | ## On the build machines | 30 | ## On the build machines |
| 31 | 31 | ||
| 32 | -- Check out the release branch of omnibus-gitlab. | 32 | +- Install release dependencies |
| 33 | 33 | ||
| 34 | ```shell | 34 | ```shell |
| 35 | -git fetch | ||
| 36 | -git checkout 6-6-stable | 35 | +# Ubuntu |
| 36 | +sudo apt-get install python-pip | ||
| 37 | + | ||
| 38 | +# CentOS | ||
| 39 | +sudo yum install python-pip | ||
| 40 | + | ||
| 41 | +# Both | ||
| 42 | +sudo pip install awscli | ||
| 43 | +aws configure # enter AWS key and secret | ||
| 37 | ``` | 44 | ``` |
| 38 | 45 | ||
| 39 | -- Check the version with `git describe`. | 46 | +- Check out the release branch of omnibus-gitlab. |
| 40 | 47 | ||
| 41 | ```shell | 48 | ```shell |
| 42 | -git describe # Should start with 6.6.0.omnibus | 49 | +git fetch |
| 50 | +git checkout 6-6-stable | ||
| 43 | ``` | 51 | ``` |
| 44 | 52 | ||
| 45 | -- Build a package with timestamps disabled. | 53 | +- Run the release script |
| 46 | 54 | ||
| 47 | ```shell | 55 | ```shell |
| 48 | -OMNIBUS_APPEND_TIMESTAMP=0 bin/omnibus build project gitlab | 56 | +./release.sh |
| 49 | ``` | 57 | ``` |
| 50 | 58 | ||
| 59 | +This will `clean --purge` the build environment, build a package and upload it to S3. | ||
| 60 | + | ||
| 51 | [the gitlab-rails version in omnibus-gitlab]: ../config/software/gitlab-rails.rb#L20 | 61 | [the gitlab-rails version in omnibus-gitlab]: ../config/software/gitlab-rails.rb#L20 |
| @@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
| 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 | +echo | ||
| 38 | +echo 'Package MD5:' | ||
| 39 | +md5sum ${release_package} | ||
| 40 | + | ||
| 41 | +echo | ||
| 42 | +echo 'Starting upload' | ||
| 43 | +if !(aws s3 cp ${release_package} s3://${RELEASE_BUCKET} --acl public-read --region ${RELEASE_BUCKET_REGION}); then | ||
| 44 | + error_exit 'release upload failed' | ||
| 45 | +fi |