Skip to content
This repository was archived by the owner on Jan 10, 2023. It is now read-only.

Commit 247d738

Browse files
Add support for AWS CodeBuild as CI provider (#56)
* Add support for AWS CodeBuild as CI provider * Remove merge * Oops Co-authored-by: Thomas Hu <[email protected]>
1 parent 9035124 commit 247d738

3 files changed

Lines changed: 57 additions & 17 deletions

File tree

README.md

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,24 @@ Find you repo token on your repo page at [codecov.io](https://codecov.io). Repo
3939
## Supported CIs
4040
| CI/CD |
4141
| ----- |
42-
| [Appveyor CI](https://www.appveyor.com/) |
43-
| [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) |
44-
| [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines) |
45-
| [Bitrise CI](https://www.bitrise.io/) |
46-
| [Buildkite CI](https://buildkite.com/) |
47-
| [Circle CI](https://circleci.com/) |
48-
| [Codeship CI](https://codeship.com/) |
49-
| [Drone CI](https://drone.io/) |
50-
| [GitLab CI](https://docs.gitlab.com/ee/ci/) |
51-
| [Heroku CI](https://www.heroku.com/continuous-integration) |
52-
| [Jenkins CI](https://www.jenkins.io/) |
53-
| [Semaphore CI](https://semaphoreci.com/) |
54-
| [Shippable](https://www.shippable.com/) |
55-
| [Solano CI](https://xebialabs.com/technology/solano-ci/) |
56-
| [TeamCity CI](https://www.jetbrains.com/teamcity/) |
57-
| [Travis CI](https://travis-ci.org/) |
58-
| [Wercker CI](https://devcenter.wercker.com/) |
42+
| [Appveyor CI](https://www.appveyor.com/) |
43+
| [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) |
44+
| [Bitbucket Pipelines](https://bitbucket.org/product/features/pipelines) |
45+
| [Bitrise CI](https://www.bitrise.io/) |
46+
| [Buildkite CI](https://buildkite.com/) |
47+
| [Codebuild CI](https://aws.amazon.com/codebuild/) |
48+
| [Circle CI](https://circleci.com/) |
49+
| [Codeship CI](https://codeship.com/) |
50+
| [Drone CI](https://drone.io/) |
51+
| [GitLab CI](https://docs.gitlab.com/ee/ci/) |
52+
| [Heroku CI](https://www.heroku.com/continuous-integration) |
53+
| [Jenkins CI](https://www.jenkins.io/) |
54+
| [Semaphore CI](https://semaphoreci.com/) |
55+
| [Shippable](https://www.shippable.com/) |
56+
| [Solano CI](https://xebialabs.com/technology/solano-ci/) |
57+
| [TeamCity CI](https://www.jetbrains.com/teamcity/) |
58+
| [Travis CI](https://travis-ci.org/) |
59+
| [Wercker CI](https://devcenter.wercker.com/) |
5960

6061
## Advanced Usage
6162

lib/codecov.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class SimpleCov::Formatter::Codecov
1717
BITRISE = 'Bitrise CI',
1818
BUILDKITE = 'Buildkite CI',
1919
CIRCLE = 'Circle CI',
20+
CODEBUILD = 'Codebuild CI',
2021
CODESHIP = 'Codeship CI',
2122
DRONEIO = 'Drone CI',
2223
GITHUB = 'GitHub Actions',
@@ -58,6 +59,8 @@ def detect_ci
5859
BUILDKITE
5960
elsif (ENV['CI'] == 'true') && (ENV['CIRCLECI'] == 'true')
6061
CIRCLE
62+
elsif ENV['CODEBUILD_CI'] == 'true'
63+
CODEBUILD
6164
elsif (ENV['CI'] == 'true') && (ENV['CI_NAME'] == 'codeship')
6265
CODESHIP
6366
elsif ((ENV['CI'] == 'true') || (ENV['CI'] == 'drone')) && (ENV['DRONE'] == 'true')
@@ -157,6 +160,15 @@ def build_params(ci)
157160
params[:pr] = ENV['CIRCLE_PR_NUMBER']
158161
params[:branch] = ENV['CIRCLE_BRANCH']
159162
params[:commit] = ENV['CIRCLE_SHA1']
163+
when CODEBUILD
164+
# https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
165+
params[:service] = 'codebuild'
166+
params[:branch] = ENV['CODEBUILD_WEBHOOK_HEAD_REF'].split('/')[2]
167+
params[:build] = ENV['CODEBUILD_BUILD_ID']
168+
params[:commit] = ENV['CODEBUILD_RESOLVED_SOURCE_VERSION']
169+
params[:job] = ENV['CODEBUILD_BUILD_ID']
170+
params[:slug] = ENV['CODEBUILD_SOURCE_REPO_URL'].match(/.*github.com\/(?<slug>.*).git/)['slug']
171+
params[:pr] = ENV['CODEBUILD_SOURCE_VERSION'].match(/pr\/(?<pr>.*)/)['pr'] if ENV['CODEBUILD_SOURCE_VERSION']
160172
when CODESHIP
161173
# https://www.codeship.io/documentation/continuous-integration/set-environment-variables/
162174
params[:service] = 'codeship'

test/test_codecov.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,12 @@ def teardown
167167
ENV['CIRCLE_PROJECT_USERNAME'] = nil
168168
ENV['CIRCLE_SHA1'] = nil
169169
ENV['CIRCLECI'] = nil
170+
ENV['CODEBUILD_CI'] = nil
171+
ENV['CODEBUILD_BUILD_ID'] = nil
172+
ENV['CODEBUILD_RESOLVED_SOURCE_VERSION'] = nil
173+
ENV['CODEBUILD_WEBHOOK_HEAD_REF'] = nil
174+
ENV['CODEBUILD_SOURCE_VERSION'] = nil
175+
ENV['CODEBUILD_SOURCE_REPO_URL'] = nil
170176
ENV['CODECOV_ENV'] = nil
171177
ENV['CODECOV_SLUG'] = nil
172178
ENV['CODECOV_TOKEN'] = nil
@@ -612,6 +618,27 @@ def test_bitbucket
612618
assert_equal('f881216b-b5c0-4eb1-8f21-b51887d1d506', result['params']['token'])
613619
end
614620

621+
def test_codebuild
622+
ENV['CODEBUILD_CI'] = "true"
623+
ENV['CODEBUILD_BUILD_ID'] = "codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3"
624+
ENV['CODEBUILD_RESOLVED_SOURCE_VERSION'] = 'd653b934ed59c1a785cc1cc79d08c9aaa4eba73b'
625+
ENV['CODEBUILD_WEBHOOK_HEAD_REF'] = 'refs/heads/master'
626+
ENV['CODEBUILD_SOURCE_VERSION'] = 'pr/123'
627+
ENV['CODEBUILD_SOURCE_REPO_URL'] = 'https://github.com/owner/repo.git'
628+
ENV['CODECOV_TOKEN'] = 'f881216b-b5c0-4eb1-8f21-b51887d1d506'
629+
630+
result = upload
631+
632+
assert_equal("codebuild", result['params'][:service])
633+
assert_equal("d653b934ed59c1a785cc1cc79d08c9aaa4eba73b", result['params'][:commit])
634+
assert_equal("codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3", result['params'][:build])
635+
assert_equal("codebuild-project:458dq3q8-7354-4513-8702-ea7b9c81efb3", result['params'][:job])
636+
assert_equal("owner/repo", result['params'][:slug])
637+
assert_equal("master", result['params'][:branch])
638+
assert_equal("123", result['params'][:pr])
639+
assert_equal('f881216b-b5c0-4eb1-8f21-b51887d1d506', result['params']['token'])
640+
end
641+
615642
def test_filenames_are_shortened_correctly
616643
ENV['CODECOV_TOKEN'] = 'f881216b-b5c0-4eb1-8f21-b51887d1d506'
617644

0 commit comments

Comments
 (0)