diff options
author | Jacob Vosmaer (GitLab) <jacob@gitlab.com> | 2017-01-14 06:13:57 +0300 |
---|---|---|
committer | Jacob Vosmaer (GitLab) <jacob@gitlab.com> | 2017-01-14 06:13:57 +0300 |
commit | b483d3e59ac6fd06e1e899e17b11ad02f429ba33 (patch) | |
tree | cdcd3b7a0f0d12faa1b102926d5739324307b3b8 | |
parent | 634bbbe031593e979786a1a4dcd42a449adc3bc6 (diff) | |
parent | 9448387058005ccb8c9bbf7315237b3014b8525e (diff) |
Merge branch 'package' into 'master'
Add "make package" target
See merge request !31
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | .gitlab-ci.yml | 37 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | _package/Gemfile | 5 | ||||
-rw-r--r-- | _package/Gemfile.lock | 48 | ||||
-rwxr-xr-x | _package/package | 40 |
6 files changed, 136 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index 15e82f96f..8485277d1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ /_build /gitaly /gitaly-client +/*.deb +/_package/bin +/_package/.bundle/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 04addd180..d165681d7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,43 @@ image: golang:1.7 +stages: + - test + - package + - publish + test: + stage: test script: - make - make test + +package: + stage: package + only: + - tags + script: + - apt-get update -qq + - apt-get install -qq -y rubygems bundler + - GOOS=linux GOARCH=amd64 make clean package + - ls -l # Want to see permissions as they went into the .deb + - dpkg -e *.deb + - cat DEBIAN/control + - cat DEBIAN/md5sums + - rm -rf DEBIAN + artifacts: + paths: + - ./*.deb + +publish: + stage: publish + only: + - tags + variables: + GIT_STRATEGY: none + script: + - apt-get update -qq + - apt-get install -y rubygems + - gem install package_cloud + - ls -lh *.deb + - shasum -a256 *.deb + - package_cloud push $PACKAGECLOUD_REPO *.deb --url=https://packages.gitlab.com @@ -26,6 +26,9 @@ test: clean-build ${BUILD_DIR}/_build fmt fmt: _support/gofmt-all -n | awk '{ print } END { if (NR > 0) { print "Please run _support/gofmt-all -f"; exit 1 } }' +package: build + ./_package/package ${CMDS} + clean: clean-build rm -rf client/testdata rm -f $(foreach cmd,${CMDS},./${cmd}) diff --git a/_package/Gemfile b/_package/Gemfile new file mode 100644 index 000000000..cf5bae70e --- /dev/null +++ b/_package/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true +# A sample Gemfile +source 'https://rubygems.org' + +gem 'fpm' diff --git a/_package/Gemfile.lock b/_package/Gemfile.lock new file mode 100644 index 000000000..9eac985a8 --- /dev/null +++ b/_package/Gemfile.lock @@ -0,0 +1,48 @@ +GEM + remote: https://rubygems.org/ + specs: + archive-tar-minitar (0.5.2) + arr-pm (0.0.10) + cabin (> 0) + backports (3.6.8) + cabin (0.9.0) + childprocess (0.5.9) + ffi (~> 1.0, >= 1.0.11) + clamp (1.0.1) + dotenv (2.1.1) + ffi (1.9.14) + fpm (1.8.0) + archive-tar-minitar + arr-pm (~> 0.0.10) + backports (>= 2.6.2) + cabin (>= 0.6.0) + childprocess + clamp (~> 1.0.0) + ffi + json (>= 1.7.7, < 2.0) + pleaserun (~> 0.0.24) + ruby-xz + insist (1.0.0) + io-like (0.3.0) + json (1.8.3) + mustache (0.99.8) + pleaserun (0.0.27) + cabin (> 0) + clamp + dotenv + insist + mustache (= 0.99.8) + stud + ruby-xz (0.2.3) + ffi (~> 1.9) + io-like (~> 0.3) + stud (0.0.22) + +PLATFORMS + ruby + +DEPENDENCIES + fpm + +BUNDLED WITH + 1.12.5 diff --git a/_package/package b/_package/package new file mode 100755 index 000000000..cc9ef8cab --- /dev/null +++ b/_package/package @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby + +NAME = 'gitaly' +DESCRIPTION = 'Gitaly (part of GitLab). Experimental build for testing only.' +VERSION = IO.popen(%w[git describe]) { |io| io.read }.chomp.split('v', 2)[1] +ARCHITECTURE = 'amd64' +PREFIX = '/usr/local' +VENDOR = 'GitLab Inc.' +MAINTAINER = VENDOR +LICENSE = 'MIT' +URL = 'https://gitlab.com/gitlab-org/gitaly' + +PACKAGE_DIR = File.dirname(__FILE__) + +def main(args) + run!(%w[bundle install --quiet --binstubs], PACKAGE_DIR) + File.chmod(0755, *args) + File.chmod(0644, 'NOTICE') + fpm = %W[ + #{PACKAGE_DIR}/bin/fpm -t deb -m #{MAINTAINER} --vendor #{VENDOR} --license #{LICENSE} + --url #{URL} -s dir -n #{NAME} -v #{VERSION} -a #{ARCHITECTURE} --description #{DESCRIPTION} + ] + fpm += args.map { |arg| "#{arg}=#{PREFIX}/bin/" } + fpm << "NOTICE=usr/share/doc/#{NAME}/" + run!(fpm, '.') +end + +def run!(cmd, dir) + if ! system(*cmd, chdir: dir) + abort "command failed: #{cmd.join(' ')}" + end +end + +abort "VERSION cannot be empty" if VERSION.empty? + +if ARGV.empty? + abort "Usage: #{$0} EXECUTABLE [EXECUTABLE...]" +end + +main(ARGV) |