Skip to content
Snippets Groups Projects
Commit d951d5b9 authored by Marin Jankovski's avatar Marin Jankovski
Browse files

Add rake task for finding the correct package repository.

parent 13027d6d
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -11,6 +11,7 @@ before_script:
- mkdir -p ~/.aws
- mkdir -p cache
- bundle install -j $(nproc) --binstubs --path gems
- if [ -n "$NIGHTLY" ] ; then export NIGHTLY_REPO=nightly-builds ;fi
 
# Runs on GitLab.com only
.spec_template: &run_rspec
Loading
Loading
@@ -29,6 +30,8 @@ before_script:
- ssh-keyscan -H dev.gitlab.org > ~/.ssh/known_hosts
- chmod -R 0600 ~/.ssh/
- echo -e "[default]\naws_access_key_id = $AWS_ACCESS_KEY_ID \naws_secret_access_key = $AWS_SECRET_ACCESS_KEY" > ~/.aws/config
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target)
- echo $PACKAGECLOUD_REPO
- make populate_cache
- make restore_cache_bundle
- make test
Loading
Loading
@@ -46,6 +49,8 @@ before_script:
- ssh-keyscan -H dev.gitlab.org > ~/.ssh/known_hosts
- chmod -R 0600 ~/.ssh/
- echo -e "[default]\naws_access_key_id = $AWS_ACCESS_KEY_ID \naws_secret_access_key = $AWS_SECRET_ACCESS_KEY" > ~/.aws/config
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target RASPBERRY_REPO=raspberry-pi2)
- echo $PACKAGECLOUD_REPO
- make populate_cache
- make restore_cache_bundle
- if ./support/is_gitlab_ee.sh; then exit 0; else make test;fi
Loading
Loading
@@ -63,6 +68,8 @@ before_script:
- ssh-keyscan -H dev.gitlab.org > ~/.ssh/known_hosts
- chmod -R 0600 ~/.ssh/
- echo -e "[default]\naws_access_key_id = $AWS_ACCESS_KEY_ID \naws_secret_access_key = $AWS_SECRET_ACCESS_KEY" > ~/.aws/config
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target)
- echo $PACKAGECLOUD_REPO
- make populate_cache
- make restore_cache_bundle
- make do_release
Loading
Loading
@@ -80,6 +87,8 @@ before_script:
- ssh-keyscan -H dev.gitlab.org > ~/.ssh/known_hosts
- chmod -R 0600 ~/.ssh/
- echo -e "[default]\naws_access_key_id = $AWS_ACCESS_KEY_ID \naws_secret_access_key = $AWS_SECRET_ACCESS_KEY" > ~/.aws/config
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target RASPBERRY_REPO=raspberry-pi2)
- echo $PACKAGECLOUD_REPO
- make populate_cache
- make restore_cache_bundle
- if ./support/is_gitlab_ee.sh; then exit 0; else make do_rpi2_release;fi
Loading
Loading
@@ -93,6 +102,8 @@ before_script:
Docker master:
stage: extra
script:
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target)
- echo $PACKAGECLOUD_REPO
- make do_docker_master
tags:
- docker-build
Loading
Loading
@@ -102,6 +113,8 @@ Docker master:
Docker:
stage: extra
script:
- export PACKAGECLOUD_REPO=$(bundle exec rake repository:target)
- echo $PACKAGECLOUD_REPO
- make do_docker_release
tags:
- docker-build
Loading
Loading
Loading
Loading
@@ -11,6 +11,7 @@ gem 'package_cloud'
gem 'thor', '0.18.1' # This specific version is required by package_cloud
gem 'json'
gem 'rspec'
gem 'rake'
 
group :test do
gem 'byebug'
Loading
Loading
Loading
Loading
@@ -138,6 +138,7 @@ GEM
proxifier (1.0.3)
rack (1.6.4)
rainbow (2.1.0)
rake (10.4.2)
rest-client (1.6.9)
mime-types (~> 1.16)
rspec (3.5.0)
Loading
Loading
@@ -188,5 +189,6 @@ DEPENDENCIES
omnibus!
omnibus-software!
package_cloud
rake
rspec
thor (= 0.18.1)
Loading
Loading
@@ -4,7 +4,6 @@ RELEASE_BUCKET_REGION=eu-west-1
SECRET_DIR:=$(shell openssl rand -hex 20)
PLATFORM_DIR:=$(shell bundle exec support/ohai-helper platform-dir)
PACKAGECLOUD_USER=gitlab
PACKAGECLOUD_REPO:=$(shell support/repo_name.sh)
PACKAGECLOUD_OS:=$(shell bundle exec support/ohai-helper repo-string)
ifeq ($(shell support/is_gitlab_ee.sh; echo $$?), 0)
RELEASE_PACKAGE=gitlab-ee
Loading
Loading
@@ -49,13 +48,11 @@ do_release: no_changes on_tag purge build license_check move_to_platform_dir syn
test: RELEASE_BUCKET=omnibus-builds
test: no_changes purge build license_check move_to_platform_dir sync
ifdef NIGHTLY
test: NIGHTLY_REPO=nightly-builds PACKAGECLOUD_REPO=$(shell support/repo_name.sh)
test: packagecloud
endif
 
# Redefine PLATFORM_DIR for Raspberry Pi 2 packages.
do_rpi2_release: PLATFORM_DIR=raspberry-pi2
do_rpi2_release: RASPBERRY_REPO=raspberry-pi2 PACKAGECLOUD_REPO=$(shell support/repo_name.sh)
do_rpi2_release: no_changes purge build license_check move_to_platform_dir sync packagecloud
 
no_changes:
Loading
Loading
@@ -119,7 +116,6 @@ docker_push_latest:
 
do_docker_master:
ifdef NIGHTLY
do_docker_master: NIGHTLY_REPO=nightly-builds PACKAGECLOUD_REPO=$(shell support/repo_name.sh)
do_docker_master: docker_build docker_push
endif
 
Loading
Loading
# All tasks in files placed in lib/gitlab/tasks ending in .rake will be loaded
# automatically
Rake.add_rakelib 'lib/gitlab/tasks'
class PackageRepository
def target
return ENV['PACKAGECLOUD_REPO'] if ENV['PACKAGECLOUD_REPO'] && !ENV['PACKAGECLOUD_REPO'].empty?
return ENV['RASPBERRY_REPO'] if ENV['RASPBERRY_REPO'] && !ENV['RASPBERRY_REPO'].empty?
return ENV['NIGHTLY_REPO'] if ENV['NIGHTLY_REPO'] && !ENV['NIGHTLY_REPO'].empty?
rc_repository = repository_for_rc
if rc_repository
rc_repository
else
repository_for_edition
end
end
def repository_for_rc
if system('git describe | grep -q -e rc')
"unstable"
end
end
def repository_for_edition
is_ee = system('grep -q -E "\-ee" VERSION')
if ENV['EE'] || is_ee
"gitlab-ee"
else
"gitlab-ce"
end
end
end
require_relative '../package_repository.rb'
desc 'Package repository where the package will be stored'
namespace :repository do
task :target do
puts PackageRepository.new.target
end
task :rc do
puts PackageRepository.new.repository_for_rc
end
task :gitlab_edition do
puts PackageRepository.new.repository_for_edition
end
end
require_relative '../../lib/gitlab/package_repository.rb'
require 'chef_helper'
describe PackageRepository do
let(:repo) { PackageRepository.new }
describe :repository_for_rc do
context 'on master' do
# Example:
# on non stable branch: 8.1.0+rc1.ce.0-1685-gd2a2c51
# on tag: 8.12.0+rc1.ee.0
before do
allow(repo).to receive(:system).with('git describe | grep -q -e rc').and_return(true)
end
it { expect(repo.repository_for_rc).to eq 'unstable' }
end
context 'on stable branch' do
# Example:
# on non stable branch: 8.12.8+ce.0-1-gdac92d4
# on tag: 8.12.8+ce.0
before do
allow(repo).to receive(:system).with('git describe | grep -q -e rc').and_return(false)
end
it { expect(repo.repository_for_rc).to eq nil }
end
end
describe :repository_for_edition do
context 'when EE' do
before do
allow(repo).to receive(:system).with('grep -q -E "\-ee" VERSION').and_return(true)
end
it { expect(repo.repository_for_edition).to eq 'gitlab-ee' }
end
context 'when CE' do
before do
allow(repo).to receive(:system).with('grep -q -E "\-ee" VERSION').and_return(false)
end
it { expect(repo.repository_for_edition).to eq 'gitlab-ce' }
end
end
describe :target do
shared_examples 'with an override repository' do
context 'with repository override' do
before do
set_all_env_variables
end
it 'uses the override repository' do
expect(repo.target).to eq('super-stable-1234')
end
end
end
shared_examples 'with a nightly repository' do
context 'with nightly repo' do
before do
set_nightly_env_variable
end
it 'uses the nightly repository' do
expect(repo.target).to eq('nightly-builds')
end
end
end
shared_examples 'with raspberry pi repo' do
context 'with raspberry pi repo' do
before do
set_raspi_env_variable
end
it 'uses the raspberry pi repository' do
expect(repo.target).to eq('raspi')
end
end
end
context 'on non-stable branch' do
before do
allow(repo).to receive(:system).with('git describe | grep -q -e rc').and_return(true)
end
it 'prints unstable' do
expect(repo.target).to eq('unstable')
end
it_behaves_like 'with an override repository'
it_behaves_like 'with a nightly repository'
it_behaves_like 'with raspberry pi repo'
end
context 'on a stable branch' do
before do
allow(repo).to receive(:system).with('git describe | grep -q -e rc').and_return(false)
end
context 'when EE' do
before do
allow(repo).to receive(:system).with('grep -q -E "\-ee" VERSION').and_return(true)
end
it 'prints gitlab-ee' do
expect(repo.target).to eq('gitlab-ee')
end
it_behaves_like 'with an override repository'
it_behaves_like 'with a nightly repository'
it_behaves_like 'with raspberry pi repo'
end
context 'when CE' do
before do
allow(repo).to receive(:system).with('grep -q -E "\-ee" VERSION').and_return(false)
end
it 'prints gitlab-ce' do
expect(repo.target).to eq('gitlab-ce')
end
it_behaves_like 'with an override repository'
it_behaves_like 'with a nightly repository'
it_behaves_like 'with raspberry pi repo'
end
end
end
def set_all_env_variables
stub_env_var("PACKAGECLOUD_REPO", "super-stable-1234")
stub_env_var("NIGHTLY_REPO", "nightly-builds")
stub_env_var("RASPBERRY_REPO", "raspi")
end
def set_nightly_env_variable
stub_env_var("PACKAGECLOUD_REPO", "")
stub_env_var("NIGHTLY_REPO", "nightly-builds")
stub_env_var("RASPBERRY_REPO", "")
end
def set_raspi_env_variable
stub_env_var("PACKAGECLOUD_REPO", "")
stub_env_var("NIGHTLY_REPO", "nightly-builds")
stub_env_var("RASPBERRY_REPO", "raspi")
end
end
Loading
Loading
@@ -11,5 +11,9 @@ module GitlabSpec
allow(File).to receive(:symlink?).with("/opt/gitlab/service/#{service}").and_return(value)
allow(OmnibusHelper).to receive(:success?).with("/opt/gitlab/embedded/bin/sv status #{service}").and_return(value)
end
def stub_env_var(var, value)
allow(ENV).to receive(:[]).with(var).and_return(value)
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment