added ebuild for gitlabhq-6.5.1

This commit is contained in:
Manuel Friedli 2014-01-27 17:20:31 +01:00
parent 9004f6ec62
commit faa2eb21e0
5 changed files with 508 additions and 0 deletions

View file

@ -7,7 +7,12 @@ AUX gitlabhq-6.5.0-fix-gemfile.patch 2142 SHA256 801a9b4e9333a3f780cb7ad66dc0a68
AUX gitlabhq-6.5.0-fix-login-over-ssl.patch 613 SHA256 1b29a172f05d42ae3a2e4840dc136a98e39e7a9f7ec493cd4446051ffac64786 SHA512 4f73ba90413d859104ff7036566950b47e291ce596eaf85b0fa7a0ecdec4e31b3ff741918a82fdb79a3c4fb743a81aaca5c8b3c70e0510a13a7bf728bb87b11e WHIRLPOOL ed1f2f688f0a2df347029c32b82dfe0e241a874680fb8f056f2e4bd0911d9c2c89b70189629876fe37409a6737f16e60e97230023cd0d907390e678c92b64fb6 AUX gitlabhq-6.5.0-fix-login-over-ssl.patch 613 SHA256 1b29a172f05d42ae3a2e4840dc136a98e39e7a9f7ec493cd4446051ffac64786 SHA512 4f73ba90413d859104ff7036566950b47e291ce596eaf85b0fa7a0ecdec4e31b3ff741918a82fdb79a3c4fb743a81aaca5c8b3c70e0510a13a7bf728bb87b11e WHIRLPOOL ed1f2f688f0a2df347029c32b82dfe0e241a874680fb8f056f2e4bd0911d9c2c89b70189629876fe37409a6737f16e60e97230023cd0d907390e678c92b64fb6
AUX gitlabhq-6.5.0-fix-project-name-regex.patch 1143 SHA256 6f12268ae65ea0fbb80a8eed0740f7270d22d2b17f7768d5d2f0feddf38301ea SHA512 3d70766c0cb0fda5f57235424633d507f30005edbf569b03af99965e26d758e7ecd3669f20c7f06350b277529f5be63e99814eed5ac74eacaec5a1f85199a25f WHIRLPOOL d2acb2ea30f44166e6164913d7345366ed9ff5646832240c6287745c1c86915b5661eaea68a3d842a363fff8301a4bcdaf71563d1c768d30c163fd396757f833 AUX gitlabhq-6.5.0-fix-project-name-regex.patch 1143 SHA256 6f12268ae65ea0fbb80a8eed0740f7270d22d2b17f7768d5d2f0feddf38301ea SHA512 3d70766c0cb0fda5f57235424633d507f30005edbf569b03af99965e26d758e7ecd3669f20c7f06350b277529f5be63e99814eed5ac74eacaec5a1f85199a25f WHIRLPOOL d2acb2ea30f44166e6164913d7345366ed9ff5646832240c6287745c1c86915b5661eaea68a3d842a363fff8301a4bcdaf71563d1c768d30c163fd396757f833
AUX gitlabhq-6.5.0-fix-sendmail-config.patch 731 SHA256 51f0d0af2a7c048d7cff56cf27955632f340ca67f9d460af840cf34ed60ca574 SHA512 b10d5b8d89927404d25345e17ba37ca4e7848b04c2ca20c5eef14eaac43d9ba14b62ae4c0d532eefaf6f9a2944578e84eb65a3420335d32495855c4807eec356 WHIRLPOOL 66f6443f311f2355ffd4efaea914f462816a1966a715b3b5ffaaa26b41bdced928b9905b8606f06fac3c2ccf20741553cfed2615430287bede01cf376aae2a60 AUX gitlabhq-6.5.0-fix-sendmail-config.patch 731 SHA256 51f0d0af2a7c048d7cff56cf27955632f340ca67f9d460af840cf34ed60ca574 SHA512 b10d5b8d89927404d25345e17ba37ca4e7848b04c2ca20c5eef14eaac43d9ba14b62ae4c0d532eefaf6f9a2944578e84eb65a3420335d32495855c4807eec356 WHIRLPOOL 66f6443f311f2355ffd4efaea914f462816a1966a715b3b5ffaaa26b41bdced928b9905b8606f06fac3c2ccf20741553cfed2615430287bede01cf376aae2a60
AUX gitlabhq-6.5.1-fix-gemfile.patch 2142 SHA256 801a9b4e9333a3f780cb7ad66dc0a683a6b4b8b5fab5279f63f13ef7ae307721 SHA512 64cb1e667e594072a0df1ba2f1d7f3c72add59f8d98ae6384b9bf15fcbd0f97d4f22f27f55db752090fe464044002db8c71574d8cfdcaa30d82d1ab1eb389b83 WHIRLPOOL 5f953afcf6fe4c4daf9dccc588bd588c0864ef796a0e3dd1a3466a424379f2b0510fa54ea043b641ec86d8191baaf5ccc920e293994b17fbf1078f5d299c2d79
AUX gitlabhq-6.5.1-fix-project-name-regex.patch 1143 SHA256 6f12268ae65ea0fbb80a8eed0740f7270d22d2b17f7768d5d2f0feddf38301ea SHA512 3d70766c0cb0fda5f57235424633d507f30005edbf569b03af99965e26d758e7ecd3669f20c7f06350b277529f5be63e99814eed5ac74eacaec5a1f85199a25f WHIRLPOOL d2acb2ea30f44166e6164913d7345366ed9ff5646832240c6287745c1c86915b5661eaea68a3d842a363fff8301a4bcdaf71563d1c768d30c163fd396757f833
AUX gitlabhq-6.5.1-fix-sendmail-config.patch 731 SHA256 51f0d0af2a7c048d7cff56cf27955632f340ca67f9d460af840cf34ed60ca574 SHA512 b10d5b8d89927404d25345e17ba37ca4e7848b04c2ca20c5eef14eaac43d9ba14b62ae4c0d532eefaf6f9a2944578e84eb65a3420335d32495855c4807eec356 WHIRLPOOL 66f6443f311f2355ffd4efaea914f462816a1966a715b3b5ffaaa26b41bdced928b9905b8606f06fac3c2ccf20741553cfed2615430287bede01cf376aae2a60
DIST gitlabhq-6.4.3.tar.gz 10979694 SHA256 a2df6ec3de927a45fdaec70b806f731d66694db54dc674cd8b3378703d28114b SHA512 df06c07434ca45273e4988827d11a287249f2f3baddd799c45fafc56661ba4e1d872536f233eac7ac5aa704ddae0bcc92850af926a07f42f399873e1eda4e8f7 WHIRLPOOL 33e6199f2955fcbe65177c4f0520ceeaed82b9c1df94721048eeb8cefc798b9c83beb66f8ddec3cc91a848ba056f39e633ffba2f588880828bcae4a52d560dbc DIST gitlabhq-6.4.3.tar.gz 10979694 SHA256 a2df6ec3de927a45fdaec70b806f731d66694db54dc674cd8b3378703d28114b SHA512 df06c07434ca45273e4988827d11a287249f2f3baddd799c45fafc56661ba4e1d872536f233eac7ac5aa704ddae0bcc92850af926a07f42f399873e1eda4e8f7 WHIRLPOOL 33e6199f2955fcbe65177c4f0520ceeaed82b9c1df94721048eeb8cefc798b9c83beb66f8ddec3cc91a848ba056f39e633ffba2f588880828bcae4a52d560dbc
DIST gitlabhq-6.5.0.tar.gz 10987422 SHA256 777294b0fe0a42181e33661cad7a72f722350ed8c701f8ac26bcd9df1bb2a511 SHA512 7dbb469768456d251d497a1420eb0f313aae5b873434f46cb051edd8a41b95dcd36693c1b3dc170354127e6e381148eb5ea687644416036efc85814aab8967a9 WHIRLPOOL ec0856c38175cf92f82ab561fc5511877f827db51d044cac66308d7eb1acb422c329f479e4a15b32da37bb2009c39e6589e56eda84a9ed9c16f9aa2a704230ae DIST gitlabhq-6.5.0.tar.gz 10987422 SHA256 777294b0fe0a42181e33661cad7a72f722350ed8c701f8ac26bcd9df1bb2a511 SHA512 7dbb469768456d251d497a1420eb0f313aae5b873434f46cb051edd8a41b95dcd36693c1b3dc170354127e6e381148eb5ea687644416036efc85814aab8967a9 WHIRLPOOL ec0856c38175cf92f82ab561fc5511877f827db51d044cac66308d7eb1acb422c329f479e4a15b32da37bb2009c39e6589e56eda84a9ed9c16f9aa2a704230ae
DIST gitlabhq-6.5.1.tar.gz 10987382 SHA256 f3058658727a164fd11fdaa0dd25aadaf1a2dac59ea5017d384fd6d55da1fd54 SHA512 cdd9a87a74afaa7e38d507a84d9c9adc9b6247d7b6779f29d9eb332ebe3c5e12794bee1f901d7901c797e2d2e0b3ec6c30483e73e55861841227ecdb8c161668 WHIRLPOOL 99c296463e46e1682bd2cdd9ec00a96ff53cacebd5f32d531841fadccaac9d38b4924ca70a9c356a99327610151c576b3b3a6b1cac92dab1a487b78f1ee74912
EBUILD gitlabhq-6.4.3.ebuild 10673 SHA256 6856eeb5a2e778bc80237443fc997efd93c1ff60eda1ce6319a88298012c7eaf SHA512 130eb1b15eab517a5b80acfb51b888b4eb7fbe335c037df41b74dddd4f3d9d93f55aa0adb893b54f8f1e4e4f950fbcc278d2a5f142d76bea8535f78fd2f1f9d6 WHIRLPOOL 9531f4978c72c4a172c2fa6dd790c37e285169d2763e5d9da5b97755c4a9cb9710e45ff745ab4540873cbf7d591e538b14ebf1eb54469c57742f3c0935a976eb EBUILD gitlabhq-6.4.3.ebuild 10673 SHA256 6856eeb5a2e778bc80237443fc997efd93c1ff60eda1ce6319a88298012c7eaf SHA512 130eb1b15eab517a5b80acfb51b888b4eb7fbe335c037df41b74dddd4f3d9d93f55aa0adb893b54f8f1e4e4f950fbcc278d2a5f142d76bea8535f78fd2f1f9d6 WHIRLPOOL 9531f4978c72c4a172c2fa6dd790c37e285169d2763e5d9da5b97755c4a9cb9710e45ff745ab4540873cbf7d591e538b14ebf1eb54469c57742f3c0935a976eb
EBUILD gitlabhq-6.5.0.ebuild 10706 SHA256 f93a3ee7e1388f35c64fbd18227b7af174335bfad634dfea27f8c172b5467ffa SHA512 6835f966d5fabca888d176704cd92e0e8441ad60e6029e8f8c06cacaa672805bd9364ce1d9fabf3515ecb265572a2e25a4aad8ebe54ac3ca316838c3fdd64281 WHIRLPOOL b34ae343ba9a8aa1d0da4fb374a55871a411fdaa290ca25680b9d04aba62c78e9dabc5753b81ed2c833491c277fda9746a6a99b94472350ca4ac52bbab179334 EBUILD gitlabhq-6.5.0.ebuild 10706 SHA256 f93a3ee7e1388f35c64fbd18227b7af174335bfad634dfea27f8c172b5467ffa SHA512 6835f966d5fabca888d176704cd92e0e8441ad60e6029e8f8c06cacaa672805bd9364ce1d9fabf3515ecb265572a2e25a4aad8ebe54ac3ca316838c3fdd64281 WHIRLPOOL b34ae343ba9a8aa1d0da4fb374a55871a411fdaa290ca25680b9d04aba62c78e9dabc5753b81ed2c833491c277fda9746a6a99b94472350ca4ac52bbab179334
EBUILD gitlabhq-6.5.1.ebuild 11194 SHA256 561a271be0b818b175ebe51ed2e78e8e2dc45fac84ec07c89fd935f18f4ad079 SHA512 ed3625052423c7065dc5c86ca596393dc892dc45c7a40156e4ae0fb3b04126f2f36c0e569db50e1875e459a8b44cec6c784d0081873b2e7be13762394e1b96ef WHIRLPOOL b631d552b57e5b2741513ddd394e4efb413ee50e249e3b64f86d147448ea579e68ef507f77a9ab816db72873c4e6af22ea81a016b145f7223c561f2660fca538

View file

@ -0,0 +1,84 @@
--- Gemfile.orig 2014-01-22 14:39:19.620000000 +0100
+++ Gemfile 2014-01-22 14:40:24.120000000 +0100
@@ -137,13 +137,16 @@
# Sanitize user input
gem "sanitize"
+# The newer revision of charlock_holmes that is finally fixed to
+# be compatible with Gentoo
+gem "charlock_holmes", git: "https://github.com/brianmario/charlock_holmes.git", ref: "dde194609b3513b0d2369ce8f916ae52566154b4"
+
# Protect against bruteforcing
gem "rack-attack"
gem "sass-rails"
gem "coffee-rails"
gem "uglifier"
-gem "therubyracer"
gem 'turbolinks'
gem 'jquery-turbolinks'
--- Gemfile.lock.orig 2014-01-22 14:40:35.780000000 +0100
+++ Gemfile.lock 2014-01-22 14:52:42.590000000 +0100
@@ -1,4 +1,11 @@
GIT
+ remote: https://github.com/brianmario/charlock_holmes.git
+ revision: dde194609b3513b0d2369ce8f916ae52566154b4
+ ref: dde194609b3513b0d2369ce8f916ae52566154b4
+ specs:
+ charlock_holmes (0.6.9.4)
+
+GIT
remote: https://github.com/gitlabhq/markup.git
revision: 61ade389c1e1c159359338f570d18464a44ddbc4
ref: 61ade389c1e1c159359338f570d18464a44ddbc4
@@ -70,7 +77,6 @@
json (>= 1.7)
celluloid (0.15.2)
timers (~> 1.1.0)
- charlock_holmes (0.6.9.4)
cliver (0.2.2)
code_analyzer (0.4.3)
sexp_processor
@@ -267,7 +273,6 @@
addressable (~> 2.3)
letter_opener (1.1.2)
launchy (~> 2.2)
- libv8 (3.16.14.3)
listen (2.3.1)
celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3)
@@ -401,7 +406,6 @@
redis-store (~> 1.1.0)
redis-store (1.1.4)
redis (>= 2.2)
- ref (1.0.5)
require_all (1.3.2)
rest-client (1.6.7)
mime-types (>= 1.16)
@@ -488,9 +492,6 @@
term-ansicolor (1.2.2)
tins (~> 0.8)
test_after_commit (0.2.2)
- therubyracer (0.12.0)
- libv8 (~> 3.16.14.0)
- ref
thin (1.6.1)
daemons (>= 1.0.9)
eventmachine (>= 1.0.0)
@@ -561,6 +562,7 @@
bootstrap-sass (~> 3.0)
capybara
carrierwave
+ charlock_holmes!
coffee-rails
colored
coveralls
@@ -644,7 +646,6 @@
stamp
state_machine
test_after_commit
- therubyracer
thin
tinder (~> 1.9.2)
turbolinks

View file

@ -0,0 +1,28 @@
--- lib/gitlab/regex.rb.orig 2013-12-23 19:43:59.000000000 +0100
+++ lib/gitlab/regex.rb 2014-01-17 17:43:00.020000000 +0100
@@ -1,3 +1,5 @@
+# encoding: utf-8
+
module Gitlab
module Regex
extend self
@@ -7,7 +9,7 @@
end
def project_name_regex
- /\A[a-zA-Z0-9][a-zA-Z0-9_\-\. ]*\z/
+ /\A\p{Word}[\p{Word}\-:\. ]*\z/
end
def name_regex
--- app/models/project.rb.orig 2014-01-17 17:40:02.050000000 +0100
+++ app/models/project.rb 2014-01-17 17:44:09.150000000 +0100
@@ -85,7 +85,7 @@
validates :description, length: { maximum: 2000 }, allow_blank: true
validates :name, presence: true, length: { within: 0..255 },
format: { with: Gitlab::Regex.project_name_regex,
- message: "only letters, digits, spaces & '_' '-' '.' allowed. Letter or digit should be first" }
+ message: "only letters, digits, spaces & '_' '-' '.' ':' allowed. Letter or digit should be first" }
validates :path, presence: true, length: { within: 0..255 },
exclusion: { in: Gitlab::Blacklist.path },
format: { with: Gitlab::Regex.path_regex,

View file

@ -0,0 +1,20 @@
diff --git a/config/environments/production.rb b/gitlab-6/environments/production.rb
index 82eb250..10e25e5 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -73,11 +73,10 @@ Gitlab::Application.configure do
# config.active_record.auto_explain_threshold_in_seconds = 0.5
config.action_mailer.delivery_method = :sendmail
- # Defaults to:
- # # config.action_mailer.sendmail_settings = {
- # # location: '/usr/sbin/sendmail',
- # # arguments: '-i -t'
- # # }
+ config.action_mailer.sendmail_settings = {
+ location: '/usr/sbin/sendmail',
+ arguments: '-i'
+ }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
end

View file

@ -0,0 +1,371 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="5"
# Mainteiner 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"
PYTHON_DEPEND="2:2.7"
inherit eutils python ruby-ng
DESCRIPTION="GitLab is a free project and repository management application"
HOMEPAGE="https://github.com/gitlabhq/gitlabhq"
SRC_URI="https://github.com/gitlabhq/gitlabhq/archive/v${PV}.tar.gz -> ${P}.tar.gz"
RESTRICT="mirror"
LICENSE="MIT"
SLOT="6"
KEYWORDS="~amd64 ~x86"
IUSE="mysql +postgres +unicorn"
## Gems dependencies:
# charlock_holmes dev-libs/icu
# grape, capybara dev-libs/libxml2, dev-libs/libxslt
# 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
#
GEMS_DEPEND="
dev-libs/icu
dev-libs/libxml2
dev-libs/libxslt
dev-util/ragel
net-libs/nodejs
postgres? ( dev-db/postgresql-base )
mysql? ( virtual/mysql )"
DEPEND="${GEMS_DEPEND}
>=dev-vcs/gitlab-shell-1.8
dev-vcs/git"
RDEPEND="${DEPEND}
dev-db/redis
virtual/mta"
ruby_add_bdepend "
virtual/rubygems
>=dev-ruby/bundler-1.0"
#
# fix-gemfile:
# Remove therubyracer that doesn't compile well on Gentoo (we're using
# nodejs instead that is faster and better). Also replace broken
# charlock_holmes version with fixed one.
#
# fix-project-name-regex:
# Allow project name to contain non-ASCII characters.
#
# fix-sendmail-config:
# Fix default settings to work with ssmtp that doesn't know '-t' argument.
#
RUBY_PATCHES=(
"${P}-fix-gemfile.patch"
"${P}-fix-project-name-regex.patch"
"${P}-fix-sendmail-config.patch"
)
MY_NAME="gitlab"
MY_USER="git" # should be same as in gitlab-shell
DEST_DIR="/opt/${MY_NAME}-${SLOT}"
CONF_DIR="/etc/${MY_NAME}-${SLOT}"
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://github.com/gitlabhq/gitlabhq/blob/${PV}/lib/tasks/sidekiq.rake
# TODO fritteli: I don't know what to look for in that file ... so I left this unchanged from gitlabhq-6.0.2-r2.ebuild
SIDEKIQ_QUEUES="post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default"
all_ruby_prepare() {
# fix paths
local satellites_path="${TEMP_DIR}/repo_satellites"
local repos_path=/var/lib/git/repositories
local hooks_path=/usr/share/gitlab-shell/hooks
sed -i -E \
-e "/satellites:$/,/\w:$/ s|(\s*path:\s).*|\1${satellites_path}/|" \
-e "/gitlab_shell:$/,/\w:$/ s|(\s*repos_path:\s).*|\1${repos_path}/|" \
-e "/gitlab_shell:$/,/\w:$/ s|(\s*hooks_path:\s).*|\1${hooks_path}/|" \
config/gitlab.yml.example || die "failed to filter gitlab.yml.example"
local run_path=/run/${MY_NAME}
sed -i -E \
-e "s|/home/git/gitlab/tmp/(pids\|sockets)|${run_path}|" \
-e "s|/home/git/gitlab/log|${LOGS_DIR}|" \
-e "s|/home/git/gitlab|${DEST_DIR}|" \
config/unicorn.rb.example || die "failed to filter unicorn.rb.example"
sed -i \
-e "s|/home/git/gitlab/tmp/sockets|${run_path}|" \
lib/support/nginx/gitlab || die "failed to filter nginx/gitlab"
# 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"
# rename config files
mv config/gitlab.yml.example config/gitlab.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 zzet's stupid migration which expetcs that users are so foolish
# to run GitLab with PostgreSQL's superuser...
rm db/migrate/20121009205010_postgres_create_integer_cast.rb
# remove useless files
rm -r lib/support/{deploy,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} ${temp}/repo_satellites
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
insinto ${dest}
doins -r ./
# 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}
fperms +x script/{rails,check}
## RC script ##
local rcscript=gitlab-sidekiq.init
use unicorn && rcscript=gitlab-unicorn-6.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}-${SLOT}"
}
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 Gitlabhq behind an SSL proxy such as Apache or nginx and"
elog "you can't login after the upgrade, be sure to read the Gitlabhqtrouble-"
elog "shooting guide at"
elog "https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide"
elog "especially the section about the verification of the CSRF token:"
elog "https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide#wiki-cant-verify-csrf-token-authenticitycant-get-past-login-pageredirected-to-login-page"
}
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
# check gitlab-shell configuration
if [ -r ${shell_conf} ]; then
local shell_repos_path="$(ryaml ${shell_conf} repos_path)"
local gitlab_repos_path="$(ryaml ${CONF_DIR}/gitlab.yml \
production gitlab_shell repos_path)"
if [ ! "${shell_repos_path}" -ef "${gitlab_repos_path}" ]; then
eerror "repos_path in ${CONF_DIR}/gitlab.yml and ${shell_conf}"
eerror "must points to the same location! Fix the repos_path location and"
eerror "run this again."; die
fi
else
ewarn "GitLab Shell checks skipped, could not find config file at"
ewarn "${shell_conf}. Make sure that you have gitlab-shell properly"
ewarn "installed and that repos_path is the same as in GitLab."
fi
local email_from="$(ryaml ${CONF_DIR}/gitlab.yml production gitlab email_from)"
local git_home=$(getent passwd ${MY_USER} | cut -d: -f6)
# 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)"
local update=
while [ ! -n "${update}" ] ; do
echo
echo " Is this an update from previous version (fresh install otherwise)? (y/n)"
read answer
if [[ ${answer} =~ ^[Yy]([Ee][Ss])?$ ]]; then
update=true
elif [[ ${answer} =~ ^[Nn]([Oo])?$ ]]; then
update=false
else
echo "Answer not recognized"
fi
done
if [ "${update}" = 'true' ]; then
einfo "Migrating database ..."
exec_rake db:migrate
einfo "Cleaning old precompiled assets ..."
exec_rake assets:clean
einfo "Cleaning cache ..."
exec_rake cache:clear
# https://github.com/gitlabhq/gitlabhq/issues/5311#issuecomment-31656496
einfo "Migrating iids ..."
exec_rake migrate_iids
else
einfo "Initializing database ..."
exec_rake gitlab:setup
fi
einfo "Precompiling assests ..."
exec_rake assets:precompile
if [ "${update}" = 'true' ]; then
ewarn
ewarn "This configuration script runs only common migration tasks."
ewarn "Please read guides on"
ewarn " https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/"
ewarn "for any additional migration tasks specific to your previous GitLab"
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 $@"
}