BigW Consortium Gitlab

3.0-to-3.1.md 2.62 KB

From 3.0 to 3.1

Make sure you view this upgrade guide from the master branch for the most up to date instructions.

IMPORTANT!

In this release we moved Resque jobs under own gitlab namespace

Despite a lot of advantages it requires from our users to replace gitolite post-receive hook with new one.

Most of projects has post-receive file as symlink to gitolite /home/git/.gitolite/hooks/post-receive. But some of them may have a real file. In this case you should rewrite it with symlink to gitolite hook.

I wrote a bash script which will do it automatically for you. Just make sure all path inside is valid for you

1. Stop server & resque

sudo service gitlab stop

2. Update GitLab

# Get latest code
sudo -u gitlab -H git fetch
sudo -u gitlab -H git checkout v3.1.0

# Install new charlock_holmes
sudo gem install charlock_holmes --version '0.6.9'

# The Modernizr gem was yanked from RubyGems. It is required for GitLab >= 2.8.0
# Edit `Gemfile` and change `gem "modernizr", "2.5.3"` to
# `gem "modernizr-rails", "2.7.1"``
sudo -u gitlab -H vim Gemfile

# Install gems for MySQL
sudo -u gitlab -H bundle install --without development test postgres sqlite


# Migrate db
sudo -u gitlab -H bundle exec rake db:migrate RAILS_ENV=production

3. Update post-receive hooks

Gitolite 3

Step 1: Rewrite post-receive hook

# Rewrite hook for gitolite 3
sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
sudo chown git:git /home/git/.gitolite/hooks/common/post-receive

Step 2: Rewrite hooks in all projects to symlink gitolite hook

# 1. Check for valid path
sudo -u gitlab -H vim lib/support/rewrite-hooks.sh

# 2. Run script
sudo -u git -H lib/support/rewrite-hooks.sh

Gitolite v2

Step 1: rewrite post-receive hook for gitolite 2

sudo cp ./lib/hooks/post-receive /home/git/share/gitolite/hooks/common/post-receive
sudo chown git:git /home/git/share/gitolite/hooks/common/post-receive

Step 2: Replace symlinks in project to valid place

#!/bin/bash
src="/home/git/repositories"
for dir in `ls "$src/"`
do
  if [ -d "$src/$dir" ]; then

    if [ "$dir" = "gitolite-admin.git" ]
    then
      continue
    fi

    project_hook="$src/$dir/hooks/post-receive"
    gitolite_hook="/home/git/share/gitolite/hooks/common/post-receive"

    ln -s -f $gitolite_hook $project_hook
  fi
done

4. Check app status

# Check APP Status
sudo -u gitlab -H bundle exec rake gitlab:app:status RAILS_ENV=production

5. Start all

sudo service gitlab start