summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2015-07-20 09:19:33 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2015-07-20 09:19:33 +0000
commit44dc1d6d32bd8445d9c66a1c21dc321b9a56b6ff (patch)
treea87dd7ffd0bc8a1522706072f105bb920dc18c59
parent5a858a4a3d1297ac45bc7cf991b0513998f845d0 (diff)
parent5f717e2f5c4abe9ff957e92b27f8f8ecf1c55727 (diff)
downloadgitlab-ci-44dc1d6d32bd8445d9c66a1c21dc321b9a56b6ff.tar.gz
Merge branch 'fix_upgrader_version_detect' into 'master'
Fix upgrader version detection This ports changes from the gitlab upgrader script to gitlabci. With the changes the upgrader script now works correct with versions that contain more than 1 digit. See merge request !203
-rw-r--r--lib/upgrader.rb9
-rw-r--r--spec/lib/upgrader_spec.rb23
2 files changed, 24 insertions, 8 deletions
diff --git a/lib/upgrader.rb b/lib/upgrader.rb
index 3969fa2..b1599e2 100644
--- a/lib/upgrader.rb
+++ b/lib/upgrader.rb
@@ -41,7 +41,10 @@ class Upgrader
end
def latest_version_raw
- last_tag = git_tags.last.match(/v\d\.\d\.\d/).to_s
+ git_tags = fetch_git_tags
+ git_tags = git_tags.select { |version| version =~ /v\d+\.\d+\.\d+\Z/ }
+ git_versions = git_tags.map { |tag| VersionInfo.parse(tag.match(/v\d+\.\d+\.\d+/).to_s) }
+ "v#{git_versions.sort.last.to_s}"
end
def update_commands
@@ -90,8 +93,8 @@ class Upgrader
answer
end
- def git_tags
+ def fetch_git_tags
tags = `git ls-remote --tags origin | grep tags\/v#{current_version.major}`
- tags.lines.to_a.select { |version| version =~ /v\d\.\d\.\d\Z/ }
+ tags.lines.to_a.select { |version| version =~ /v\d+\.\d+\.\d+\Z/ }
end
end
diff --git a/spec/lib/upgrader_spec.rb b/spec/lib/upgrader_spec.rb
index b37d0e4..40a9830 100644
--- a/spec/lib/upgrader_spec.rb
+++ b/spec/lib/upgrader_spec.rb
@@ -16,11 +16,24 @@ describe Upgrader do
end
describe 'latest_version_raw' do
- it 'should be latest version for GitLab' do
- upgrader.stub(current_version_raw: '3.0.0')
- upgrader.stub(git_tags: [
- '1b5bee25b51724214c7a3307ef94027ab93ec982 refs/tags/v7.8.1'])
- upgrader.latest_version_raw.should == 'v7.8.1'
+ it 'should be latest version for GitlabCI 3' do
+ allow(upgrader).to receive(:current_version_raw).and_return('3.0.0')
+ expect(upgrader.latest_version_raw).to eq('v3.2.0')
+ end
+
+ it 'should get the latest version from tags' do
+ allow(upgrader).to receive(:fetch_git_tags).and_return([
+ '1b5bee25b51724214c7a3307ef94027ab93ec982 refs/tags/v7.8.1',
+ '424cb42e35947fa304ef83eb211ffc657e31aef3 refs/tags/v7.8.1^{}',
+ '498e5ba63be1bb99e30c6e720902d864aac4413c refs/tags/v7.9.0.rc1',
+ '96aaf45ae93bd43e8b3f5d4d353d64d3cbe1e63b refs/tags/v7.9.0.rc1^{}',
+ '94aaf45ae93bd43e8b3fad4a353d64d3cbe1e62b refs/tags/v7.1.0',
+ '96aaf45ae93ba13e8b3f5d4d353d64d3cbe1e251 refs/tags/v7.1.0^{}',
+ '29359d64442bf54b4ca1d8b439fd9e5f9cd83252 refs/tags/v7.10.0',
+ '4d9213a6378bff43a69ae099702fb81e29335e7a refs/tags/v7.10.0^{}',
+ '1d93e1626bda93622ca7a2ae2825e2e94dabf3c6 refs/tags/v7.12.0',
+ '0188a9d1c2efdc52bfad36ad303686be997de713 refs/tags/v7.12.0^{}'])
+ expect(upgrader.latest_version_raw).to eq("v7.12.0")
end
end
end