updated ebuild and added init file

This commit is contained in:
Manuel Friedli 2014-09-23 23:37:15 +02:00
parent 48ea5c2073
commit 002fc0acfd
3 changed files with 86 additions and 26 deletions

View file

@ -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

View file

@ -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 $?
}

View file

@ -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