GitLab 7.2系へのアップグレードスクリプトが失敗するとき

ソースからGitLabをインストールしている方が対象になります。

6.5系ぐらいからアップグレードを簡単にするため、アップグレードスクリプトができました。
このスクリプトを実行するば、自動でアップグレードされます

[crayon]
ruby lib/gitlab/upgrader.rb
[/crayon]

7.0系からアップグレードスクリプトの場所が変わりlibディレクトリ配下にあります。

7.2系へのアップグレード

先日リリースされた7.2系にアップグレードするには、cmake がインストールされていないとアップグレードできません。

これは、ruggedというgemが追加されたからです

アップグレードスクリプトを実行しても途中の bundle install でこけます。

なので cmake をインストールしましょう。

[crayon]
sudo yum install cmake
[/crayon]

しかし、cmakeをインストールしてアップグレードスクリプトを流すと、正常にアップグレードができません。
すでにGtiLab7.2になっているということでアップグレードされません。
(困った‥っていうか面倒くさい‥‥)

私の場合、アップグレードスクリプトではなく手動でアップグレードを行い無事アップグレードしました。

終わった後に気づいたのですが、git checkout で 7.2 以前のものに戻せば上手く行くはずです。

[crayon]
class Upgrader
def execute
puts “GitLab #{current_version.major} upgrade tool”
puts “Your version is #{current_version}”
puts “Latest available version for GitLab #{current_version.major} is #{latest_version}”

if latest_version?
puts “You are using the latest GitLab version”
else
puts “Newer GitLab version is available”
answer = if ARGV.first == “-y”
“yes”
else
prompt(“Do you want to upgrade (yes/no)? “, %w{yes no})
end

if answer == “yes”
upgrade
else
exit 0
end
end
end

def latest_version?
current_version >= latest_version
end

def current_version
@current_version ||= Gitlab::VersionInfo.parse(current_version_raw)
end

def latest_version
@latest_version ||= Gitlab::VersionInfo.parse(latest_version_raw)
end

def current_version_raw
File.read(File.join(gitlab_path, “VERSION”)).strip
end

def latest_version_raw
remote_tags, _ = Gitlab::Popen.popen(%W(git ls-remote –tags origin))
git_tags = remote_tags.split(“\n”).grep(/tags\/v#{current_version.major}/)
git_tags = git_tags.select { |version| version =~ /v\d\.\d\.\d\Z/ }
last_tag = git_tags.last.match(/v\d\.\d\.\d/).to_s
end

def update_commands
{
“Stash changed files” => %W(git stash),
“Get latest code” => %W(git fetch),
“Switch to new version” => %W(git checkout v#{latest_version}),
“Install gems” => %W(bundle),
“Migrate DB” => %W(bundle exec rake db:migrate),
“Recompile assets” => %W(bundle exec rake assets:clean assets:precompile),
“Clear cache” => %W(bundle exec rake cache:clear)
}
end
[/crayon]

アップデートスクリプトの一部ですが、latest_version_raw で最新のタグ情報を取得しています。

もしアップデートスクリプトが流れなくなった場合、git checkout を試してみてください。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です