Skip to content

Commit 5872cf7

Browse files
authored
Add Gitlab CI to Coverage (#331)
1 parent e22e4fe commit 5872cf7

File tree

4 files changed

+114
-2
lines changed

4 files changed

+114
-2
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Coverage"
22
uuid = "a2441757-f6aa-5fb2-8edb-039e3f45d037"
33
authors = ["Iain Dunning <[email protected]>", "contributors"]
4-
version = "1.4.0"
4+
version = "1.5.0"
55

66
[deps]
77
CoverageTools = "c36e975a-824b-4404-a568-ef97ca766997"

src/codecovio.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ end
7171

7272
add_ci_to_kwargs(; kwargs...) = add_ci_to_kwargs(Dict{Symbol,Any}(kwargs))
7373
function add_ci_to_kwargs(kwargs::Dict)
74+
# https://docs.codecov.com/reference/upload
7475
if lowercase(get(ENV, "APPVEYOR", "false")) == "true"
7576
appveyor_pr = get(ENV, "APPVEYOR_PULL_REQUEST_NUMBER", "")
7677
appveyor_job = join(
@@ -175,6 +176,19 @@ function add_ci_to_kwargs(kwargs::Dict)
175176
if ENV["BUILDKITE_PULL_REQUEST"] != "false"
176177
kwargs = set_defaults(kwargs, pr = ENV["BUILDKITE_PULL_REQUEST"])
177178
end
179+
elseif lowercase(get(ENV, "GITLAB_CI", "false")) == "true"
180+
# Gitlab API: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
181+
branch = ENV["CI_COMMIT_REF_NAME"]
182+
num_mr = branch == ENV["CI_DEFAULT_BRANCH"] ? "false" : ENV["CI_MERGE_REQUEST_IID"]
183+
kwargs = set_defaults(kwargs,
184+
service = "gitlab",
185+
branch = branch,
186+
commit = ENV["CI_COMMIT_SHA"],
187+
job = ENV["CI_JOB_ID"],
188+
build_url = ENV["CI_PIPELINE_URL"],
189+
build = ENV["CI_PIPELINE_IID"],
190+
pr = num_mr,
191+
)
178192
else
179193
error("No compatible CI platform detected")
180194
end

src/coveralls.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ end
6969

7070
function prepare_request(fcs::Vector{FileCoverage}, local_env::Bool, git_info=query_git_info)
7171
data = Dict{String,Any}("source_files" => map(to_json, fcs))
72-
72+
# Coveralls API : https://docs.coveralls.io/api-reference
7373
if local_env
7474
# Attempt to parse git info via git_info, unless the user explicitly disables it by setting git_info to nothing
7575
data["service_name"] = "local"
@@ -105,6 +105,16 @@ function prepare_request(fcs::Vector{FileCoverage}, local_env::Bool, git_info=qu
105105
github_pr = get(github_pr_info, "number", "")
106106
github_pr::Union{AbstractString, Integer}
107107
((github_pr isa Integer) || (!isempty(github_pr))) && (data["service_pull_request"] = strip(string(github_pr)))
108+
elseif lowercase(get(ENV, "GITLAB_CI", "false")) == "true"
109+
# Gitlab API: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
110+
branch = ENV["CI_COMMIT_REF_NAME"]
111+
num_mr = branch == ENV["CI_DEFAULT_BRANCH"] ? "false" : ENV["CI_MERGE_REQUEST_IID"]
112+
data["service_pull_request"] = num_mr
113+
data["service_number"] = ENV["CI_PIPELINE_IID"]
114+
data["service_job_id"] = ENV["CI_JOB_ID"]
115+
data["service_name"] = "gitlab"
116+
data["git"] = parse_git_info(git_info)
117+
data["git"]["branch"] = branch
108118
else
109119
data["git"] = parse_git_info(git_info)
110120
end

test/runtests.jl

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,79 @@ withenv(
482482
end
483483
end
484484

485+
# test Gitlab ci submission process
486+
487+
# set up Gitlab ci env
488+
withenv(
489+
"GITLAB_CI" => "true",
490+
"CI_MERGE_REQUEST_IID" => "t_pr",
491+
"CI_JOB_ID" => "t_proj",
492+
"CI_COMMIT_REF_NAME" => "t_branch",
493+
"CI_COMMIT_SHA" => "t_commit",
494+
"CI_PROJECT_NAME" => "t_repo",
495+
"CI_PIPELINE_URL" => "t_url",
496+
"CI_PIPELINE_IID" => "t_num",
497+
"CI_DEFAULT_BRANCH" => "master",
498+
) do
499+
500+
# default values
501+
codecov_url = construct_uri_string_ci()
502+
@test occursin("codecov.io", codecov_url)
503+
@test occursin("service=gitlab", codecov_url)
504+
@test occursin("branch=t_branch", codecov_url)
505+
@test occursin("commit=t_commit", codecov_url)
506+
@test occursin("pr=t_pr", codecov_url)
507+
@test occursin("build_url=t_url", codecov_url)
508+
@test occursin("build=t_num", codecov_url)
509+
510+
# env var url override
511+
withenv( "CODECOV_URL" => "https://enterprise-codecov-1.com" ) do
512+
513+
codecov_url = construct_uri_string_ci()
514+
@test occursin("enterprise-codecov-1.com", codecov_url)
515+
@test occursin("service=gitlab", codecov_url)
516+
@test occursin("branch=t_branch", codecov_url)
517+
@test occursin("commit=t_commit", codecov_url)
518+
@test occursin("pr=t_pr", codecov_url)
519+
@test occursin("build_url=t_url", codecov_url)
520+
@test occursin("build=t_num", codecov_url)
521+
522+
# function argument url override
523+
codecov_url = construct_uri_string_ci(codecov_url="https://enterprise-codecov-2.com")
524+
@test occursin("enterprise-codecov-2.com", codecov_url)
525+
@test occursin("service=gitlab", codecov_url)
526+
@test occursin("branch=t_branch", codecov_url)
527+
@test occursin("commit=t_commit", codecov_url)
528+
@test occursin("pr=t_pr", codecov_url)
529+
@test occursin("build_url=t_url", codecov_url)
530+
@test occursin("build=t_num", codecov_url)
531+
532+
# env var token
533+
withenv( "CODECOV_TOKEN" => "token_name_1" ) do
534+
535+
codecov_url = construct_uri_string_ci()
536+
@test occursin("enterprise-codecov-1.com", codecov_url)
537+
@test occursin("token=token_name_1", codecov_url)
538+
@test occursin("service=gitlab", codecov_url)
539+
@test occursin("branch=t_branch", codecov_url)
540+
@test occursin("commit=t_commit", codecov_url)
541+
@test occursin("pr=t_pr", codecov_url)
542+
@test occursin("build_url=t_url", codecov_url)
543+
@test occursin("build=t_num", codecov_url)
544+
545+
# function argument token url override
546+
codecov_url = construct_uri_string_ci(token="token_name_2")
547+
@test occursin("enterprise-codecov-1.com", codecov_url)
548+
@test occursin("service=gitlab", codecov_url)
549+
@test occursin("branch=t_branch", codecov_url)
550+
@test occursin("commit=t_commit", codecov_url)
551+
@test occursin("pr=t_pr", codecov_url)
552+
@test occursin("build_url=t_url", codecov_url)
553+
@test occursin("build=t_num", codecov_url)
554+
end
555+
end
556+
end
557+
485558
# test codecov token masking
486559
withenv(
487560
"APPVEYOR" => "true",
@@ -637,6 +710,21 @@ withenv(
637710
end
638711
end
639712

713+
# test Gitlab see https://docs.coveralls.io/api-reference
714+
withenv("GITLAB_CI" => "true",
715+
"CI_PIPELINE_IID" => "my_job_num",
716+
"CI_JOB_ID" => "my_job_id",
717+
"CI_COMMIT_REF_NAME" => "test",
718+
"CI_DEFAULT_BRANCH" => "master",
719+
"CI_MERGE_REQUEST_IID" => "t_pr") do
720+
request = Coverage.Coveralls.prepare_request(fcs, false)
721+
@test request["repo_token"] == "token_name_1"
722+
@test request["service_number"] == "my_job_num"
723+
@test request["service_job_id"] == "my_job_id"
724+
@test request["service_name"] == "gitlab"
725+
@test request["service_pull_request"] == "t_pr"
726+
end
727+
640728
# test git_info (only works with Jenkins & local at the moment)
641729
withenv("JENKINS" => "true",
642730
"BUILD_ID" => "my_job_id",

0 commit comments

Comments
 (0)