Skip to content

Commit

Permalink
Add GitLab CI support (#37)
Browse files Browse the repository at this point in the history
* Update GitLab environment variables

* Add GitLab version number to user agent
  • Loading branch information
faun authored Jul 26, 2018
1 parent 787463a commit 63bbf15
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 14 deletions.
2 changes: 1 addition & 1 deletion lib/percy/client/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def _user_agent
environment = [
environment_info,
"ruby/#{_ruby_version}",
Percy::Client::Environment.current_ci,
Percy::Client::Environment.ci_info,
].compact.join('; ')

"#{client} (#{environment})"
Expand Down
17 changes: 13 additions & 4 deletions lib/percy/client/environment.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,16 @@ def self.current_ci
return :drone if ENV['DRONE'] == 'true'
return :semaphore if ENV['SEMAPHORE'] == 'true'
return :buildkite if ENV['BUILDKITE'] == 'true'
return :gitlab if ENV['GITLAB_CI']
return :gitlab if ENV['GITLAB_CI'] == 'true'
end

def self.ci_version
return unless current_ci == :gitlab
ENV['CI_SERVER_VERSION']
end

def self.ci_info
[current_ci, ci_version].compact.join('/')
end

# @return [Hash] All commit data from the current commit. Might be empty if commit data could
Expand Down Expand Up @@ -89,7 +98,7 @@ def self._commit_sha
return if ENV['BUILDKITE_COMMIT'] == 'HEAD'
ENV['BUILDKITE_COMMIT']
when :gitlab
ENV['CI_BUILD_REF']
ENV['CI_COMMIT_SHA']
end
end

Expand Down Expand Up @@ -133,7 +142,7 @@ def self.branch
when :buildkite
ENV['BUILDKITE_BRANCH']
when :gitlab
ENV['CI_BUILD_REF_NAME']
ENV['CI_COMMIT_REF_NAME']
else
_raw_branch_output
end
Expand Down Expand Up @@ -233,7 +242,7 @@ def self.parallel_nonce
when :buildkite
ENV['BUILDKITE_BUILD_ID']
when :gitlab
ENV['CI_BUILD_ID']
ENV['CI_JOB_ID']
end
end

Expand Down
6 changes: 4 additions & 2 deletions spec/lib/percy/client/connection_spec.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
RSpec.describe Percy::Client::Connection do
let(:user_agent) do
"Percy/#{api_version} #{client_info} percy-client/#{Percy::Client::VERSION} "\
"(#{environment_info}; ruby/#{ruby_version}; #{ci_name})"
"(#{environment_info}; ruby/#{ruby_version}; #{ci_name}/#{ci_version})"
end
let(:content_type) { 'application/vnd.api+json' }
let(:api_version) { 'v1' }
let(:ruby_version) { '2.2.6p396' }
let(:client_info) { 'percy-capybara/3.1.0' }
let(:environment_info) { 'Rails/4.2.1' }
let(:ci_name) { 'buildkite' }
let(:ci_name) { :gitlab }
let(:ci_version) { '8.14.3-ee' }
let(:uri) { "#{Percy.config.api_url}/test" }

shared_examples_for 'a connection that sets headers with HTTP method' do |http_method|
Expand All @@ -24,6 +25,7 @@
expect(Percy.client).to receive(:environment_info).and_return(environment_info)

expect(Percy::Client::Environment).to receive(:current_ci).and_return(ci_name)
expect(Percy::Client::Environment).to receive(:ci_version).and_return(ci_version)

expect(response).to eq('foo' => true)
end
Expand Down
23 changes: 16 additions & 7 deletions spec/lib/percy/client/environment_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ def clear_env_vars

# Unset Gitlab CI vars.
ENV['GITLAB_CI'] = nil
ENV['CI_BUILD_REF'] = nil
ENV['CI_BUILD_REF_NAME'] = nil
ENV['CI_BUILD_ID'] = nil
ENV['CI_COMMIT_REF'] = nil
ENV['CI_COMMIT_REF_NAME'] = nil
ENV['CI_JOB_ID'] = nil
end

before(:each) do
Expand Down Expand Up @@ -263,6 +263,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:jenkins)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('jenkins-source-branch')
expect(Percy::Client::Environment._commit_sha).to eq('jenkins-actual-commit')
expect(Percy::Client::Environment.pull_request_number).to eq('256')
Expand All @@ -286,6 +287,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:travis)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('travis-branch')
expect(Percy::Client::Environment._commit_sha).to eq('travis-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to be_nil
Expand Down Expand Up @@ -333,6 +335,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:circle)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('circle-branch')
expect(Percy::Client::Environment._commit_sha).to eq('circle-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to eq('123')
Expand Down Expand Up @@ -365,6 +368,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:codeship)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('codeship-branch')
expect(Percy::Client::Environment._commit_sha).to eq('codeship-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to be_nil
Expand Down Expand Up @@ -395,6 +399,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:drone)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('drone-branch')
expect(Percy::Client::Environment._commit_sha).to eq('drone-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to eq('123')
Expand All @@ -416,6 +421,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:semaphore)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('semaphore-branch')
expect(Percy::Client::Environment._commit_sha).to eq('semaphore-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to eq('123')
Expand Down Expand Up @@ -450,6 +456,7 @@ def clear_env_vars

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:buildkite)
expect(Percy::Client::Environment.ci_version).to eq(nil)
expect(Percy::Client::Environment.branch).to eq('buildkite-branch')
expect(Percy::Client::Environment._commit_sha).to eq('buildkite-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to be_nil
Expand Down Expand Up @@ -489,14 +496,16 @@ def clear_env_vars

context 'when in Gitlab CI' do
before(:each) do
ENV['GITLAB_CI'] = 'yes'
ENV['CI_BUILD_REF'] = 'gitlab-commit-sha'
ENV['CI_BUILD_REF_NAME'] = 'gitlab-branch'
ENV['CI_BUILD_ID'] = 'gitlab-build-id'
ENV['GITLAB_CI'] = 'true'
ENV['CI_COMMIT_SHA'] = 'gitlab-commit-sha'
ENV['CI_COMMIT_REF_NAME'] = 'gitlab-branch'
ENV['CI_JOB_ID'] = 'gitlab-build-id'
ENV['CI_SERVER_VERSION'] = '8.14.3-ee'
end

it 'has the correct properties' do
expect(Percy::Client::Environment.current_ci).to eq(:gitlab)
expect(Percy::Client::Environment.ci_version).to eq('8.14.3-ee')
expect(Percy::Client::Environment.branch).to eq('gitlab-branch')
expect(Percy::Client::Environment._commit_sha).to eq('gitlab-commit-sha')
expect(Percy::Client::Environment.pull_request_number).to be_nil
Expand Down

0 comments on commit 63bbf15

Please sign in to comment.