From f21993fbeaa4a4efe8fa56168a417924e920d82a Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 21:41:50 +0200 Subject: [PATCH 1/6] added initial version of the ebuild. it CAN NOT possibly work out yet :) --- www-apps/gitlab-ci/Manifest | 2 + www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 319 ++++++++++++++++++++++ 2 files changed, 321 insertions(+) create mode 100644 www-apps/gitlab-ci/Manifest create mode 100644 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest new file mode 100644 index 0000000..4a410d6 --- /dev/null +++ b/www-apps/gitlab-ci/Manifest @@ -0,0 +1,2 @@ +DIST gitlab-ci-5.0.1.tar.gz 610120 SHA256 16e0b543ce475cc3bbef8247d4ad0f81e37cb55b4b8f763a249944f22eb029b9 SHA512 a83968a2eca5710b951a5c809abc33148c9ee76500772159d9a2dfc5843e04968944301d322b591851410d0a7669146dc9b1f97de2cafba752492d961fdb54d2 WHIRLPOOL ef54a54df557fa9e397753c6781127d7900b45461c1c4a94351c5c3bd4c869c16ec29145004340356607c16d60ce318ac29b153f0488756aa675d16a7ac4f384 +EBUILD gitlab-ci-5.0.1.ebuild 8899 SHA256 919d2b0b742e798aa01c9a3510c39a1cc781b79732c44393b127565a41c4055e SHA512 73d1ff1d174af7f8d83280f03dbbe3ddafc589aedcf1901932ff3178b6ee2d5241e427ce21da876e97bdb96b126cec5517a339f090286f5aa00c7a8c7f410204 WHIRLPOOL d66f50a39cd4a983e5afcd171702179baaa2079d4f9d5e15ccaac2bfa0758a7d503a463c3df44ebd40686f08f5574180dd38ac8d7e94f1a021f64203a5aca9b4 diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild new file mode 100644 index 0000000..bea3027 --- /dev/null +++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild @@ -0,0 +1,319 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="5" + +# Maintainer notes: +# - This ebuild uses Bundler to download and install all gems in deployment mode +# (i.e. into isolated directory inside application). That's not Gentoo way how +# it should be done, but GitLab has too many dependencies that it will be too +# difficult to maintain them via ebuilds. +# + +USE_RUBY="ruby19 ruby20 ruby21" +PYTHON_DEPEND="2:2.7" + +inherit eutils python ruby-ng user + +DESCRIPTION="GitLab CI is a continuous integration server that is tightly integrated with GitLab" +HOMEPAGE="https://gitlab.com/gitlab-org/gitlab-ci" +SRC_URI="https://gitlab.com/gitlab-org/gitlab-ci/repository/archive.tar.gz?ref=v${PV} -> ${P}.tar.gz" + +RESTRICT="mirror" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="mysql +postgres +unicorn" + +## Gems dependencies: +# charlock_holmes dev-libs/icu +# grape, capybara dev-libs/libxml2, dev-libs/libxslt +# rugged dev-util/cmake, virtual/pkgconfig +# json dev-util/ragel +# pygments.rb python 2.7+ +# execjs net-libs/nodejs, or any other JS runtime +# pg dev-db/postgresql-base +# mysql virtual/mysql +# + +# dev-libs/icu +# dev-libs/libxml2 +# dev-libs/libxslt +# dev-util/cmake +# dev-util/ragel +# net-libs/nodejs + + +GEMS_DEPEND=" + postgres? ( dev-db/postgresql-base ) + mysql? ( virtual/mysql ) + virtual/pkgconfig" +DEPEND="${GEMS_DEPEND} + dev-vcs/git" +RDEPEND="${DEPEND} + dev-db/redis + virtual/mta" +ruby_add_bdepend " + virtual/rubygems + >=dev-ruby/bundler-1.0" + +# +RUBY_PATCHES=( +) + +MY_NAME="gitlab-ci" +MY_USER="gitlab_ci" + +DEST_DIR="/opt/${MY_NAME}" +CONF_DIR="/etc/${MY_NAME}" +LOGS_DIR="/var/log/${MY_NAME}" +TEMP_DIR="/var/tmp/${MY_NAME}" + +# When updating ebuild to newer version, check list of the queues in +# https://gitlab.com/gitlab-org/gitlab-ci/blob/v${PV}/script/background_jobs +SIDEKIQ_QUEUES="runner,common,default" + +all_ruby_prepare() { + + # fix paths + sed -i -E \ + -e "s|redis://redis.example.com:6379|unix:/run/redis/redis.sock|" \ + config/resque.yml.example || die "failed to filter resque.yml.example" + local run_path=/run/${MY_NAME} + sed -i -E \ + -e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids|sockets)|${run_path}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/log/|${LOGS_DIR}|" \ + -e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \ + config/unicorn.rb.example || die "failed to filter unicorn.rb.example" + + + sed -i \ + -e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/public|${DEST_DIR}/public|" \ + lib/support/nginx/gitlab_ci || die "failed to filter nginx/gitlab_ci" + + # modify default database settings for PostgreSQL + sed -i -E \ + -e 's|(username:).*|\1 gitlab|' \ + -e 's|(password:).*|\1 gitlab|' \ + -e 's|(socket:).*|/run/postgresql/.s.PGSQL.5432|' \ + config/database.yml.postgresql \ + || die "failed to filter database.yml.postgresql" + # modify default database settings for MySQL + sed -i -E \ + -e "s|/tmp/mysql.sock|/run/mysqld/mysqld.sock|" \ + config/database.yml.mysql || die "failed to filter database.yml.mysql" + + # rename config files + mv config/application.yml.example config/application.yml + mv config/unicorn.rb.example config/unicorn.rb + + local dbconf=config/database.yml + if use postgres && ! use mysql; then + mv ${dbconf}.postgresql ${dbconf} + rm ${dbconf}.mysql + elif use mysql && ! use postgres; then + mv ${dbconf}.mysql ${dbconf} + rm ${dbconf}.postgresql + fi + + # remove useless files + rm -r lib/support/init.d + use unicorn || rm config/unicorn.rb +} + +all_ruby_install() { + local dest=${DEST_DIR} + local conf=${CONF_DIR} + local logs=${LOGS_DIR} + local temp=${TEMP_DIR} + + # prepare directories + diropts -m750 + dodir ${logs} ${temp} + + diropts -m755 + dodir ${conf} ${dest}/public/uploads + + dosym ${temp} ${dest}/tmp + dosym ${logs} ${dest}/log + + # install configs + insinto ${conf} + doins -r config/* + dosym ${conf} ${dest}/config + + echo 'export RAILS_ENV=production' > "${D}/${dest}/.profile" + + # remove needless dirs + rm -Rf config tmp log + + # install the rest files + # using cp 'cause doins is slow + cp -Rl * "${D}/${dest}"/ + + # install logrotate config + dodir /etc/logrotate.d + cat > "${D}/etc/logrotate.d/${MY_NAME}" <<-EOF + ${logs}/*.log { + missingok + delaycompress + compress + copytruncate + } + EOF + + ## Install gems via bundler ## + + cd "${D}/${dest}" + + local without="development test aws" + local flag; for flag in mysql postgres unicorn; do + without+="$(use $flag || echo ' '$flag)" + done + local bundle_args="--deployment ${without:+--without ${without}}" + + einfo "Running bundle install ${bundle_args} ..." + ${RUBY} /usr/bin/bundle install ${bundle_args} || die "bundler failed" + + # clean gems cache + rm -Rf vendor/bundle/ruby/*/cache + + # fix permissions + fowners -R ${MY_USER}:${MY_USER} ${dest} ${temp} ${logs} + + ## RC script ## + + local rcscript=gitlab-ci-sidekiq.init + use unicorn && rcscript=gitlab-ci-unicorn.init + + cp "${FILESDIR}/${rcscript}" "${T}" || die + sed -i \ + -e "s|@USER@|${MY_USER}|" \ + -e "s|@SLOT@|${SLOT}|" \ + -e "s|@GITLAB_BASE@|${dest}|" \ + -e "s|@LOGS_DIR@|${logs}|" \ + -e "s|@QUEUES@|${SIDEKIQ_QUEUES}|" \ + "${T}/${rcscript}" \ + || die "failed to filter ${rcscript}" + + newinitd "${T}/${rcscript}" "${MY_NAME}" +} + +pkg_postinst() { + elog + elog "1. Configure your GitLab's settings in ${CONF_DIR}/gitlab.yml." + elog + elog "2. Configure your database settings in ${CONF_DIR}/database.yml" + elog " for \"production\" environment." + elog + elog "3. Then you should create a database for your GitLab instance, if you" + elog "haven't done so already." + elog + if use postgres; then + elog "If you have local PostgreSQL running, just copy&run:" + elog " su postgres" + elog " psql -c \"CREATE ROLE gitlab PASSWORD 'gitlab' \\" + elog " NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;\"" + elog " createdb -E UTF-8 -O gitlab gitlabhq_production" + elog " Note: You should change your password to something more random..." + elog + fi + elog "4. Finally execute the following command to initlize environment:" + elog " emerge --config \"=${CATEGORY}/${PF}\"" + elog " Note: Do not forget to start Redis server first!" + elog + elog "If this is an update from previous version, it's HIGHLY recommended" + elog "to backup your database before running the config phase!" + elog + elog "If you're running GitLab behind an SSL proxy such as nginx or Apache and" + elog "you can't login after the upgrade, be sure to read the section about the" + elog "verification of the CSRF token in GitLab's trouble-shooting guide at" + elog "http://goo.gl/5XGRGv." +} + +pkg_config() { +# local shell_conf='/etc/gitlab-shell.yml' + + einfo "Checking configuration files" + + if [ ! -r "${CONF_DIR}/database.yml" ]; then + eerror "Copy ${CONF_DIR}/database.yml.* to" + eerror "${CONF_DIR}/database.yml and edit this file in order to configure your" + eerror "database settings for \"production\" environment."; die + fi + + + local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_CI email_from)" + local git_home="$(egethome ${MY_USER})" + + # configure Git global settings +# if [ ! -e "${git_home}/.gitconfig" ]; then +# einfo "Setting git user" +# su -l ${MY_USER} -c " +# git config --global user.email '${email_from}'; +# git config --global user.name 'GitLab'" \ +# || die "failed to setup git name and email" +# fi + + if [ ! -d "${DEST_DIR}/.git" ]; then + # create dummy git repo as workaround for + # https://github.com/bundler/bundler/issues/2039 + einfo "Initializing dummy git repository to avoid false errors from bundler" + su -l ${MY_USER} -c " + cd ${DEST_DIR} + git init + git add README.md + git commit -m 'Dummy repository'" >/dev/null + fi + + ## Initialize app ## + + local RAILS_ENV="production" + local RUBY=${RUBY:-/usr/bin/ruby} + local BUNDLE="${RUBY} /usr/bin/bundle" + + local dbname="$(ryaml ${CONF_DIR}/database.yml production database)" + + if [ -f "${DEST_DIR}/.secret" ]; then + local update=true + + einfo "Migrating database ..." + exec_rake db:migrate + + else + local update=false + + einfo "Initializing database ..." + exec_rake setup + + einfo "Setting up cron schedules ..." + exec_rake whenever -w + fi + + if [ "${update}" = 'true' ]; then + ewarn + ewarn "This configuration script runs only common migration tasks." + ewarn "Please read guides on" + ewarn " https://gitlab.com/gitlab-org/gitlab-ci/tree/v${PV}/doc/update" + ewarn "for any additional migration tasks specific to your previous GitLab CI" + ewarn "version." + fi +} + +ryaml() { + ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@" +} + +exec_rake() { + local command="${BUNDLE} exec rake $@ RAILS_ENV=${RAILS_ENV}" + + echo " ${command}" + su -l ${MY_USER} -c " + export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8 + cd ${DEST_DIR} + ${command}" \ + || die "failed to run rake $@" +} From 8e1cfd593dc3bcb4e434ea8a8f11b7e381e8b0db Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 21:56:30 +0200 Subject: [PATCH 2/6] fixed some bugs in the ebuild --- www-apps/gitlab-ci/Manifest | 4 ++-- www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest index 4a410d6..74e82fa 100644 --- a/www-apps/gitlab-ci/Manifest +++ b/www-apps/gitlab-ci/Manifest @@ -1,2 +1,2 @@ -DIST gitlab-ci-5.0.1.tar.gz 610120 SHA256 16e0b543ce475cc3bbef8247d4ad0f81e37cb55b4b8f763a249944f22eb029b9 SHA512 a83968a2eca5710b951a5c809abc33148c9ee76500772159d9a2dfc5843e04968944301d322b591851410d0a7669146dc9b1f97de2cafba752492d961fdb54d2 WHIRLPOOL ef54a54df557fa9e397753c6781127d7900b45461c1c4a94351c5c3bd4c869c16ec29145004340356607c16d60ce318ac29b153f0488756aa675d16a7ac4f384 -EBUILD gitlab-ci-5.0.1.ebuild 8899 SHA256 919d2b0b742e798aa01c9a3510c39a1cc781b79732c44393b127565a41c4055e SHA512 73d1ff1d174af7f8d83280f03dbbe3ddafc589aedcf1901932ff3178b6ee2d5241e427ce21da876e97bdb96b126cec5517a339f090286f5aa00c7a8c7f410204 WHIRLPOOL d66f50a39cd4a983e5afcd171702179baaa2079d4f9d5e15ccaac2bfa0758a7d503a463c3df44ebd40686f08f5574180dd38ac8d7e94f1a021f64203a5aca9b4 +DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102 +EBUILD gitlab-ci-5.0.1.ebuild 8881 SHA256 17d3454e7d3ce9360e88c8044bc00e613e5c864319c1a0ed20331865405a42bd SHA512 5f0ecbf6af458d2d1a580b880ebf696d5d1e51759802c3e24766cadc923c4d99972646c254054ab112c14a0982fac939cf69e7cf7f0f03c248a7c51f666591b9 WHIRLPOOL c9f062fd8238b9fd384dd81f5ed3e7077ab27dace8d3bd84f01b52552b3c1411d9765c6de4059bde77d8646e81da1f65e14f16c8cf4a30e730375b64d2fb9812 diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild index bea3027..9fb6934 100644 --- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild +++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild @@ -18,7 +18,7 @@ inherit eutils python ruby-ng user DESCRIPTION="GitLab CI is a continuous integration server that is tightly integrated with GitLab" HOMEPAGE="https://gitlab.com/gitlab-org/gitlab-ci" -SRC_URI="https://gitlab.com/gitlab-org/gitlab-ci/repository/archive.tar.gz?ref=v${PV} -> ${P}.tar.gz" +SRC_URI="https://github.com/gitlabhq/gitlab-ci/archive/v${PV}.tar.gz -> ${P}.tar.gz" RESTRICT="mirror" @@ -83,11 +83,10 @@ all_ruby_prepare() { config/resque.yml.example || die "failed to filter resque.yml.example" local run_path=/run/${MY_NAME} sed -i -E \ - -e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids|sockets)|${run_path}|" \ - -e "s|/home/gitlab_ci/gitlab-ci/log/|${LOGS_DIR}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${run_path}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/log|${LOGS_DIR}|" \ -e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \ config/unicorn.rb.example || die "failed to filter unicorn.rb.example" - sed -i \ -e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \ From 352c65e98c90b55e6f2daf90d4cbd5046af6b7b9 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 22:05:34 +0200 Subject: [PATCH 3/6] added some dependencies --- www-apps/gitlab-ci/Manifest | 2 +- www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 18 ++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest index 74e82fa..fa5238f 100644 --- a/www-apps/gitlab-ci/Manifest +++ b/www-apps/gitlab-ci/Manifest @@ -1,2 +1,2 @@ DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102 -EBUILD gitlab-ci-5.0.1.ebuild 8881 SHA256 17d3454e7d3ce9360e88c8044bc00e613e5c864319c1a0ed20331865405a42bd SHA512 5f0ecbf6af458d2d1a580b880ebf696d5d1e51759802c3e24766cadc923c4d99972646c254054ab112c14a0982fac939cf69e7cf7f0f03c248a7c51f666591b9 WHIRLPOOL c9f062fd8238b9fd384dd81f5ed3e7077ab27dace8d3bd84f01b52552b3c1411d9765c6de4059bde77d8646e81da1f65e14f16c8cf4a30e730375b64d2fb9812 +EBUILD gitlab-ci-5.0.1.ebuild 8645 SHA256 19a795fc65b5d31a7848c821d2aef3a03ce432e7785df6e02c0b7cf58b13087e SHA512 2b94867f565fb322c2534234ac1738792a3f93b2b2cce463d86a0afe2ad8e8286c4f55103bd6e902fc051ec89f48ce2f6f6545275ed578d71fef72a40e108c77 WHIRLPOOL 95835598a0bee7db68b2c7213042016b543dac0ca4b8644ac28654c1d9577e0c2f7f7a65aae7fada7fbede68b8e2e2208033f95297a94e4ce7799a65baa822ca diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild index 9fb6934..6fda1e3 100644 --- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild +++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild @@ -30,26 +30,16 @@ IUSE="mysql +postgres +unicorn" ## Gems dependencies: # charlock_holmes dev-libs/icu # grape, capybara dev-libs/libxml2, dev-libs/libxslt -# rugged dev-util/cmake, virtual/pkgconfig -# json dev-util/ragel -# pygments.rb python 2.7+ -# execjs net-libs/nodejs, or any other JS runtime # pg dev-db/postgresql-base # mysql virtual/mysql # -# dev-libs/icu -# dev-libs/libxml2 -# dev-libs/libxslt -# dev-util/cmake -# dev-util/ragel -# net-libs/nodejs - - GEMS_DEPEND=" + dev-libs/icu + dev-libs/libxml2 + dev-libs/libxslt postgres? ( dev-db/postgresql-base ) - mysql? ( virtual/mysql ) - virtual/pkgconfig" + mysql? ( virtual/mysql )" DEPEND="${GEMS_DEPEND} dev-vcs/git" RDEPEND="${DEPEND} From 48ea5c20733ecc2c078d2b4764748325574c9948 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 22:11:27 +0200 Subject: [PATCH 4/6] create new group and user --- www-apps/gitlab-ci/Manifest | 2 +- www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest index fa5238f..e9cf784 100644 --- a/www-apps/gitlab-ci/Manifest +++ b/www-apps/gitlab-ci/Manifest @@ -1,2 +1,2 @@ DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102 -EBUILD gitlab-ci-5.0.1.ebuild 8645 SHA256 19a795fc65b5d31a7848c821d2aef3a03ce432e7785df6e02c0b7cf58b13087e SHA512 2b94867f565fb322c2534234ac1738792a3f93b2b2cce463d86a0afe2ad8e8286c4f55103bd6e902fc051ec89f48ce2f6f6545275ed578d71fef72a40e108c77 WHIRLPOOL 95835598a0bee7db68b2c7213042016b543dac0ca4b8644ac28654c1d9577e0c2f7f7a65aae7fada7fbede68b8e2e2208033f95297a94e4ce7799a65baa822ca +EBUILD gitlab-ci-5.0.1.ebuild 8745 SHA256 af5493be5fb752db94bb7ef8444f974ae138639111b37b9d9aa9dc352871f833 SHA512 d41ca7c04a11ad32819924f0ce8290011056f164ee899de2c1da29f7999e8bb2ceab5924df974fadf6cc57762930b21da6a02391c4d35b5513218d1fbfce47d6 WHIRLPOOL 8eab84fdf811edd79ad97dd3a62f68667fa1b18349e5af964902ed16b2e15165bd03af54d22a1ea6490f2f268b1aaceaeb50dba5ddc6b6525b97074ae8720c10 diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild index 6fda1e3..98e4afa 100644 --- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild +++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild @@ -65,6 +65,11 @@ TEMP_DIR="/var/tmp/${MY_NAME}" # https://gitlab.com/gitlab-org/gitlab-ci/blob/v${PV}/script/background_jobs SIDEKIQ_QUEUES="runner,common,default" +pkg_setup() { + enewgroup gitlab_ci + enewuser gitlab_ci -1 /dev/null ${DEST_DIR} "gitlab_ci,cron" +} + all_ruby_prepare() { # fix paths From 002fc0acfdf4315cb9c344b4a43374f80c438c81 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 23:37:15 +0200 Subject: [PATCH 5/6] updated ebuild and added init file --- www-apps/gitlab-ci/Manifest | 3 +- .../files/rcscript-gitlab-ci-unicorn.init | 67 +++++++++++++++++++ www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 42 +++++------- 3 files changed, 86 insertions(+), 26 deletions(-) create mode 100755 www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest index e9cf784..dd076b0 100644 --- a/www-apps/gitlab-ci/Manifest +++ b/www-apps/gitlab-ci/Manifest @@ -1,2 +1,3 @@ +AUX rcscript-gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102 -EBUILD gitlab-ci-5.0.1.ebuild 8745 SHA256 af5493be5fb752db94bb7ef8444f974ae138639111b37b9d9aa9dc352871f833 SHA512 d41ca7c04a11ad32819924f0ce8290011056f164ee899de2c1da29f7999e8bb2ceab5924df974fadf6cc57762930b21da6a02391c4d35b5513218d1fbfce47d6 WHIRLPOOL 8eab84fdf811edd79ad97dd3a62f68667fa1b18349e5af964902ed16b2e15165bd03af54d22a1ea6490f2f268b1aaceaeb50dba5ddc6b6525b97074ae8720c10 +EBUILD gitlab-ci-5.0.1.ebuild 8381 SHA256 2813bfcc373a7aaf52e78612bd922ddc39b52094de253a15f07af5384667713d SHA512 1ed0a1798ccb76d4f3d40cae7b133947652b50602de542de07b92a091e4cc6535590d6165b83efc5add4392f89ad2dd20268cbc7f4f9c40068469d39f506cc61 WHIRLPOOL 7ae43ff7213d76cc95903980a43300cbe8f6d1049013dfe7419951a4564af5c718d91627091dafa11433ad8fc5240053ef9866df5f85af2391f31d190adb44db diff --git a/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init b/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init new file mode 100755 index 0000000..bd89114 --- /dev/null +++ b/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init @@ -0,0 +1,67 @@ +#!/sbin/runscript + +name="GitLab CI" +description="GitLab CI on Unicorns" + +: ${gitlab_ci_user:=@USER@} +: ${gitlab_ci_base:="@GITLAB_CI_BASE@"} +: ${rails_env:=production} + +: ${server_pidfile:="@RUN_DIR@/unicorn.pid"} + +: ${sidekiq_pidfile:="@RUN_DIR@/sidekiq.pid"} +: ${sidekiq_logfile:="@LOGS_DIR@/sidekiq.log"} +: ${sidekiq_queues:="@QUEUES@"} + +server_command="/usr/bin/bundle" +server_command_args="exec unicorn_rails -c ${gitlab_ci_base}/config/unicorn.rb -E ${rails_env} -D" + +sidekiq_command="/usr/bin/bundle" +sidekiq_command_args="exec sidekiq -q ${sidekiq_queues} -P ${sidekiq_pidfile} -L ${sidekiq_logfile}" + +depend() { + provide gitlab-ci + need redis + use net +} + +start() { + ebegin "Starting ${name} - Unicorn servers" + + checkpath -d -o ${gitlab_ci_user} -m755 "$(dirname "${server_pidfile}")" + checkpath -d -o ${gitlab_ci_user} -m755 "$(dirname "${sidekiq_pidfile}")" + + start-stop-daemon --start \ + --chdir "${gitlab_ci_base}" \ + --user=${gitlab_ci_user} \ + --pidfile="${server_pidfile}" \ + --env RAILS_ENV=${rails_env} \ + --exec ${server_command} -- ${server_command_args} + eend $? + + ebegin "Starting ${name} - Sidekiq" + + start-stop-daemon --start \ + --background --quiet \ + --chdir "${gitlab_ci_base}" \ + --user=${gitlab_ci_user} \ + --pidfile="${sidekiq_pidfile}" \ + --env RAILS_ENV=${rails_env} \ + --exec ${sidekiq_command} -- ${sidekiq_command_args} + eend $? +} + +stop() { + ebegin "Stopping ${name} - Sidekiq" + start-stop-daemon --stop \ + --pidfile=${sidekiq_pidfile} \ + --exec ${sidekiq_command} + eend $? + + ebegin "Stopping ${name} - Unicorn servers" + start-stop-daemon --stop \ + --signal QUIT \ + --pidfile=${server_pidfile} \ + --exec ${server_command} + eend $? +} diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild index 98e4afa..90916d1 100644 --- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild +++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild @@ -25,7 +25,7 @@ RESTRICT="mirror" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86" -IUSE="mysql +postgres +unicorn" +IUSE="mysql +postgres" ## Gems dependencies: # charlock_holmes dev-libs/icu @@ -60,6 +60,7 @@ DEST_DIR="/opt/${MY_NAME}" CONF_DIR="/etc/${MY_NAME}" LOGS_DIR="/var/log/${MY_NAME}" TEMP_DIR="/var/tmp/${MY_NAME}" +RUN_DIR="/run/${MY_NAME}" # When updating ebuild to newer version, check list of the queues in # https://gitlab.com/gitlab-org/gitlab-ci/blob/v${PV}/script/background_jobs @@ -76,15 +77,14 @@ all_ruby_prepare() { sed -i -E \ -e "s|redis://redis.example.com:6379|unix:/run/redis/redis.sock|" \ config/resque.yml.example || die "failed to filter resque.yml.example" - local run_path=/run/${MY_NAME} sed -i -E \ - -e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${run_path}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${RUN_DIR}|" \ -e "s|/home/gitlab_ci/gitlab-ci/log|${LOGS_DIR}|" \ -e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \ config/unicorn.rb.example || die "failed to filter unicorn.rb.example" sed -i \ - -e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \ + -e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${RUN_DIR}|" \ -e "s|/home/gitlab_ci/gitlab-ci/public|${DEST_DIR}/public|" \ lib/support/nginx/gitlab_ci || die "failed to filter nginx/gitlab_ci" @@ -115,7 +115,6 @@ all_ruby_prepare() { # remove useless files rm -r lib/support/init.d - use unicorn || rm config/unicorn.rb } all_ruby_install() { @@ -123,6 +122,7 @@ all_ruby_install() { local conf=${CONF_DIR} local logs=${LOGS_DIR} local temp=${TEMP_DIR} + local runs=${RUN_DIR} # prepare directories diropts -m750 @@ -164,7 +164,7 @@ all_ruby_install() { cd "${D}/${dest}" local without="development test aws" - local flag; for flag in mysql postgres unicorn; do + local flag; for flag in mysql postgres; do without+="$(use $flag || echo ' '$flag)" done local bundle_args="--deployment ${without:+--without ${without}}" @@ -180,15 +180,14 @@ all_ruby_install() { ## RC script ## - local rcscript=gitlab-ci-sidekiq.init - use unicorn && rcscript=gitlab-ci-unicorn.init + local rcscript=gitlab-ci-unicorn.init cp "${FILESDIR}/${rcscript}" "${T}" || die sed -i \ -e "s|@USER@|${MY_USER}|" \ - -e "s|@SLOT@|${SLOT}|" \ - -e "s|@GITLAB_BASE@|${dest}|" \ + -e "s|@GITLAB_CI_BASE@|${dest}|" \ -e "s|@LOGS_DIR@|${logs}|" \ + -e "s|@RUN_DIR@|${runs}|" \ -e "s|@QUEUES@|${SIDEKIQ_QUEUES}|" \ "${T}/${rcscript}" \ || die "failed to filter ${rcscript}" @@ -198,20 +197,20 @@ all_ruby_install() { pkg_postinst() { elog - elog "1. Configure your GitLab's settings in ${CONF_DIR}/gitlab.yml." + elog "1. Configure your GitLab CI's settings in ${CONF_DIR}/application.yml." elog elog "2. Configure your database settings in ${CONF_DIR}/database.yml" elog " for \"production\" environment." elog - elog "3. Then you should create a database for your GitLab instance, if you" + elog "3. Then you should create a database for your GitLab CI instance, if you" elog "haven't done so already." elog if use postgres; then elog "If you have local PostgreSQL running, just copy&run:" elog " su postgres" - elog " psql -c \"CREATE ROLE gitlab PASSWORD 'gitlab' \\" + elog " psql -c \"CREATE ROLE gitlab_ci PASSWORD 'gitlab_ci' \\" elog " NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;\"" - elog " createdb -E UTF-8 -O gitlab gitlabhq_production" + elog " createdb -E UTF-8 -O gitlab_ci gitlab_ci_production" elog " Note: You should change your password to something more random..." elog fi @@ -221,16 +220,9 @@ pkg_postinst() { elog elog "If this is an update from previous version, it's HIGHLY recommended" elog "to backup your database before running the config phase!" - elog - elog "If you're running GitLab behind an SSL proxy such as nginx or Apache and" - elog "you can't login after the upgrade, be sure to read the section about the" - elog "verification of the CSRF token in GitLab's trouble-shooting guide at" - elog "http://goo.gl/5XGRGv." } pkg_config() { -# local shell_conf='/etc/gitlab-shell.yml' - einfo "Checking configuration files" if [ ! -r "${CONF_DIR}/database.yml" ]; then @@ -240,15 +232,15 @@ pkg_config() { fi - local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_CI email_from)" - local git_home="$(egethome ${MY_USER})" + local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_ci email_from)" + local gitlab_ci_home="$(egethome ${MY_USER})" # configure Git global settings -# if [ ! -e "${git_home}/.gitconfig" ]; then +# if [ ! -e "${gitlab_ci_home}/.gitconfig" ]; then # einfo "Setting git user" # su -l ${MY_USER} -c " # git config --global user.email '${email_from}'; -# git config --global user.name 'GitLab'" \ +# git config --global user.name 'GitLab CI'" \ # || die "failed to setup git name and email" # fi From b238fc18153fd78c75ae42e8889a890c8090ecdf Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Tue, 23 Sep 2014 23:48:53 +0200 Subject: [PATCH 6/6] renamed init file --- www-apps/gitlab-ci/Manifest | 2 +- .../{rcscript-gitlab-ci-unicorn.init => gitlab-ci-unicorn.init} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename www-apps/gitlab-ci/files/{rcscript-gitlab-ci-unicorn.init => gitlab-ci-unicorn.init} (100%) diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest index dd076b0..19be0eb 100644 --- a/www-apps/gitlab-ci/Manifest +++ b/www-apps/gitlab-ci/Manifest @@ -1,3 +1,3 @@ -AUX rcscript-gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0 +AUX gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102 EBUILD gitlab-ci-5.0.1.ebuild 8381 SHA256 2813bfcc373a7aaf52e78612bd922ddc39b52094de253a15f07af5384667713d SHA512 1ed0a1798ccb76d4f3d40cae7b133947652b50602de542de07b92a091e4cc6535590d6165b83efc5add4392f89ad2dd20268cbc7f4f9c40068469d39f506cc61 WHIRLPOOL 7ae43ff7213d76cc95903980a43300cbe8f6d1049013dfe7419951a4564af5c718d91627091dafa11433ad8fc5240053ef9866df5f85af2391f31d190adb44db diff --git a/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init b/www-apps/gitlab-ci/files/gitlab-ci-unicorn.init similarity index 100% rename from www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init rename to www-apps/gitlab-ci/files/gitlab-ci-unicorn.init