datadog-ci 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +30 -0
  3. data/LICENSE +6 -0
  4. data/LICENSE-3rdparty.csv +2 -0
  5. data/LICENSE.Apache +200 -0
  6. data/LICENSE.BSD3 +24 -0
  7. data/NOTICE +4 -0
  8. data/README.md +125 -0
  9. data/lib/datadog/ci/configuration/components.rb +32 -0
  10. data/lib/datadog/ci/configuration/settings.rb +51 -0
  11. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +36 -0
  12. data/lib/datadog/ci/contrib/cucumber/ext.rb +22 -0
  13. data/lib/datadog/ci/contrib/cucumber/formatter.rb +94 -0
  14. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +28 -0
  15. data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
  16. data/lib/datadog/ci/contrib/cucumber/patcher.rb +27 -0
  17. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +36 -0
  18. data/lib/datadog/ci/contrib/minitest/ext.rb +21 -0
  19. data/lib/datadog/ci/contrib/minitest/hooks.rb +66 -0
  20. data/lib/datadog/ci/contrib/minitest/integration.rb +46 -0
  21. data/lib/datadog/ci/contrib/minitest/patcher.rb +26 -0
  22. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +36 -0
  23. data/lib/datadog/ci/contrib/rspec/example.rb +70 -0
  24. data/lib/datadog/ci/contrib/rspec/ext.rb +21 -0
  25. data/lib/datadog/ci/contrib/rspec/integration.rb +50 -0
  26. data/lib/datadog/ci/contrib/rspec/patcher.rb +27 -0
  27. data/lib/datadog/ci/ext/app_types.rb +11 -0
  28. data/lib/datadog/ci/ext/environment/extractor.rb +101 -0
  29. data/lib/datadog/ci/ext/environment/providers/appveyor.rb +98 -0
  30. data/lib/datadog/ci/ext/environment/providers/azure.rb +109 -0
  31. data/lib/datadog/ci/ext/environment/providers/base.rb +115 -0
  32. data/lib/datadog/ci/ext/environment/providers/bitbucket.rb +69 -0
  33. data/lib/datadog/ci/ext/environment/providers/bitrise.rb +77 -0
  34. data/lib/datadog/ci/ext/environment/providers/buddy.rb +69 -0
  35. data/lib/datadog/ci/ext/environment/providers/buildkite.rb +95 -0
  36. data/lib/datadog/ci/ext/environment/providers/circleci.rb +82 -0
  37. data/lib/datadog/ci/ext/environment/providers/codefresh.rb +49 -0
  38. data/lib/datadog/ci/ext/environment/providers/github_actions.rb +76 -0
  39. data/lib/datadog/ci/ext/environment/providers/gitlab.rb +119 -0
  40. data/lib/datadog/ci/ext/environment/providers/jenkins.rb +74 -0
  41. data/lib/datadog/ci/ext/environment/providers/local_git.rb +170 -0
  42. data/lib/datadog/ci/ext/environment/providers/teamcity.rb +29 -0
  43. data/lib/datadog/ci/ext/environment/providers/travis.rb +65 -0
  44. data/lib/datadog/ci/ext/environment/providers/user_defined_tags.rb +62 -0
  45. data/lib/datadog/ci/ext/environment/providers.rb +52 -0
  46. data/lib/datadog/ci/ext/environment.rb +82 -0
  47. data/lib/datadog/ci/ext/git.rb +37 -0
  48. data/lib/datadog/ci/ext/settings.rb +12 -0
  49. data/lib/datadog/ci/ext/test.rb +37 -0
  50. data/lib/datadog/ci/extensions.rb +19 -0
  51. data/lib/datadog/ci/flush.rb +38 -0
  52. data/lib/datadog/ci/test.rb +82 -0
  53. data/lib/datadog/ci/utils/git.rb +22 -0
  54. data/lib/datadog/ci/version.rb +28 -0
  55. data/lib/datadog/ci.rb +24 -0
  56. data/sig/datadog/ci/configuration/components.rbs +11 -0
  57. data/sig/datadog/ci/configuration/settings.rbs +14 -0
  58. data/sig/datadog/ci/contrib/cucumber/configuration/settings.rbs +12 -0
  59. data/sig/datadog/ci/contrib/cucumber/ext.rbs +25 -0
  60. data/sig/datadog/ci/contrib/cucumber/formatter.rbs +35 -0
  61. data/sig/datadog/ci/contrib/cucumber/instrumentation.rbs +16 -0
  62. data/sig/datadog/ci/contrib/cucumber/integration.rbs +25 -0
  63. data/sig/datadog/ci/contrib/cucumber/patcher.rbs +15 -0
  64. data/sig/datadog/ci/contrib/minitest/configuration/settings.rbs +12 -0
  65. data/sig/datadog/ci/contrib/minitest/ext.rbs +23 -0
  66. data/sig/datadog/ci/contrib/minitest/hooks.rbs +19 -0
  67. data/sig/datadog/ci/contrib/minitest/integration.rbs +25 -0
  68. data/sig/datadog/ci/contrib/minitest/patcher.rbs +15 -0
  69. data/sig/datadog/ci/contrib/rspec/configuration/settings.rbs +12 -0
  70. data/sig/datadog/ci/contrib/rspec/example.rbs +20 -0
  71. data/sig/datadog/ci/contrib/rspec/ext.rbs +23 -0
  72. data/sig/datadog/ci/contrib/rspec/integration.rbs +25 -0
  73. data/sig/datadog/ci/contrib/rspec/patcher.rbs +15 -0
  74. data/sig/datadog/ci/ext/app_types.rbs +9 -0
  75. data/sig/datadog/ci/ext/environment/extractor.rbs +27 -0
  76. data/sig/datadog/ci/ext/environment/providers/appveyor.rbs +48 -0
  77. data/sig/datadog/ci/ext/environment/providers/azure.rbs +56 -0
  78. data/sig/datadog/ci/ext/environment/providers/base.rbs +69 -0
  79. data/sig/datadog/ci/ext/environment/providers/bitbucket.rbs +37 -0
  80. data/sig/datadog/ci/ext/environment/providers/bitrise.rbs +41 -0
  81. data/sig/datadog/ci/ext/environment/providers/buddy.rbs +37 -0
  82. data/sig/datadog/ci/ext/environment/providers/buildkite.rbs +45 -0
  83. data/sig/datadog/ci/ext/environment/providers/circleci.rbs +41 -0
  84. data/sig/datadog/ci/ext/environment/providers/codefresh.rbs +25 -0
  85. data/sig/datadog/ci/ext/environment/providers/github_actions.rbs +37 -0
  86. data/sig/datadog/ci/ext/environment/providers/gitlab.rbs +57 -0
  87. data/sig/datadog/ci/ext/environment/providers/jenkins.rbs +35 -0
  88. data/sig/datadog/ci/ext/environment/providers/local_git.rbs +66 -0
  89. data/sig/datadog/ci/ext/environment/providers/teamcity.rbs +17 -0
  90. data/sig/datadog/ci/ext/environment/providers/travis.rbs +35 -0
  91. data/sig/datadog/ci/ext/environment/providers/user_defined_tags.rbs +33 -0
  92. data/sig/datadog/ci/ext/environment/providers.rbs +13 -0
  93. data/sig/datadog/ci/ext/environment.rbs +44 -0
  94. data/sig/datadog/ci/ext/git.rbs +53 -0
  95. data/sig/datadog/ci/ext/settings.rbs +9 -0
  96. data/sig/datadog/ci/ext/test.rbs +43 -0
  97. data/sig/datadog/ci/extensions.rbs +7 -0
  98. data/sig/datadog/ci/flush.rbs +15 -0
  99. data/sig/datadog/ci/test.rbs +18 -0
  100. data/sig/datadog/ci/utils/git.rbs +11 -0
  101. data/sig/datadog/ci/version.rbs +16 -0
  102. data/sig/datadog/ci.rbs +7 -0
  103. metadata +154 -0
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ require_relative "base"
6
+
7
+ module Datadog
8
+ module CI
9
+ module Ext
10
+ module Environment
11
+ module Providers
12
+ # Azure Pipelines: https://azure.microsoft.com/en-us/products/devops/pipelines
13
+ # Environment variables docs: https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
14
+ class Azure < Base
15
+ def provider_name
16
+ "azurepipelines"
17
+ end
18
+
19
+ def pipeline_url
20
+ return unless url_defined?
21
+
22
+ @pipeline_url ||= "#{team_foundation_server_uri}#{team_project_id}/_build/results?buildId=#{build_id}"
23
+ end
24
+
25
+ def job_url
26
+ return unless url_defined?
27
+
28
+ @job_url ||= "#{pipeline_url}&view=logs&j=#{env["SYSTEM_JOBID"]}&t=#{env["SYSTEM_TASKINSTANCEID"]}"
29
+ end
30
+
31
+ def workspace_path
32
+ env["BUILD_SOURCESDIRECTORY"]
33
+ end
34
+
35
+ def pipeline_id
36
+ build_id
37
+ end
38
+
39
+ def pipeline_number
40
+ build_id
41
+ end
42
+
43
+ def pipeline_name
44
+ env["BUILD_DEFINITIONNAME"]
45
+ end
46
+
47
+ def stage_name
48
+ env["SYSTEM_STAGEDISPLAYNAME"]
49
+ end
50
+
51
+ def job_name
52
+ env["SYSTEM_JOBDISPLAYNAME"]
53
+ end
54
+
55
+ def git_repository_url
56
+ env["SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI"] || env["BUILD_REPOSITORY_URI"]
57
+ end
58
+
59
+ def git_commit_sha
60
+ env["SYSTEM_PULLREQUEST_SOURCECOMMITID"] || env["BUILD_SOURCEVERSION"]
61
+ end
62
+
63
+ def git_branch_or_tag
64
+ env["SYSTEM_PULLREQUEST_SOURCEBRANCH"] || env["BUILD_SOURCEBRANCH"] || env["BUILD_SOURCEBRANCHNAME"]
65
+ end
66
+
67
+ def git_commit_author_name
68
+ env["BUILD_REQUESTEDFORID"]
69
+ end
70
+
71
+ def git_commit_author_email
72
+ env["BUILD_REQUESTEDFOREMAIL"]
73
+ end
74
+
75
+ def git_commit_message
76
+ env["BUILD_SOURCEVERSIONMESSAGE"]
77
+ end
78
+
79
+ def ci_env_vars
80
+ {
81
+ "SYSTEM_TEAMPROJECTID" => env["SYSTEM_TEAMPROJECTID"],
82
+ "BUILD_BUILDID" => env["BUILD_BUILDID"],
83
+ "SYSTEM_JOBID" => env["SYSTEM_JOBID"]
84
+ }.to_json
85
+ end
86
+
87
+ private
88
+
89
+ def build_id
90
+ env["BUILD_BUILDID"]
91
+ end
92
+
93
+ def team_foundation_server_uri
94
+ env["SYSTEM_TEAMFOUNDATIONSERVERURI"]
95
+ end
96
+
97
+ def team_project_id
98
+ env["SYSTEM_TEAMPROJECTID"]
99
+ end
100
+
101
+ def url_defined?
102
+ !(build_id && team_foundation_server_uri && team_project_id).nil?
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module Ext
6
+ module Environment
7
+ module Providers
8
+ class Base
9
+ attr_reader :env
10
+
11
+ def initialize(env)
12
+ @env = env
13
+ end
14
+
15
+ def job_name
16
+ end
17
+
18
+ def job_url
19
+ end
20
+
21
+ def pipeline_id
22
+ end
23
+
24
+ def pipeline_name
25
+ end
26
+
27
+ def pipeline_number
28
+ end
29
+
30
+ def pipeline_url
31
+ end
32
+
33
+ def provider_name
34
+ end
35
+
36
+ def stage_name
37
+ end
38
+
39
+ def workspace_path
40
+ end
41
+
42
+ def node_labels
43
+ end
44
+
45
+ def node_name
46
+ end
47
+
48
+ def ci_env_vars
49
+ end
50
+
51
+ def git_branch
52
+ return @branch if defined?(@branch)
53
+
54
+ set_branch_and_tag
55
+ @branch
56
+ end
57
+
58
+ def git_repository_url
59
+ end
60
+
61
+ def git_tag
62
+ return @tag if defined?(@tag)
63
+
64
+ set_branch_and_tag
65
+ @tag
66
+ end
67
+
68
+ def git_branch_or_tag
69
+ end
70
+
71
+ def git_commit_author_date
72
+ end
73
+
74
+ def git_commit_author_email
75
+ end
76
+
77
+ def git_commit_author_name
78
+ end
79
+
80
+ def git_commit_committer_date
81
+ end
82
+
83
+ def git_commit_committer_email
84
+ end
85
+
86
+ def git_commit_committer_name
87
+ end
88
+
89
+ def git_commit_message
90
+ end
91
+
92
+ def git_commit_sha
93
+ end
94
+
95
+ private
96
+
97
+ def set_branch_and_tag
98
+ branch_or_tag_string = git_branch_or_tag
99
+ @branch = @tag = nil
100
+
101
+ # @type var branch_or_tag_string: untyped
102
+ if branch_or_tag_string && branch_or_tag_string.include?("tags/")
103
+ @tag = branch_or_tag_string
104
+ else
105
+ @branch = branch_or_tag_string
106
+ end
107
+
108
+ [@branch, @tag]
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Datadog
6
+ module CI
7
+ module Ext
8
+ module Environment
9
+ module Providers
10
+ # Bitbucket Pipelines: https://bitbucket.org/product/features/pipelines
11
+ # Environment variables docs: https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/
12
+ class Bitbucket < Base
13
+ # overridden methods
14
+ def provider_name
15
+ "bitbucket"
16
+ end
17
+
18
+ def pipeline_id
19
+ env["BITBUCKET_PIPELINE_UUID"] ? env["BITBUCKET_PIPELINE_UUID"].tr("{}", "") : nil
20
+ end
21
+
22
+ def pipeline_name
23
+ env["BITBUCKET_REPO_FULL_NAME"]
24
+ end
25
+
26
+ def pipeline_number
27
+ env["BITBUCKET_BUILD_NUMBER"]
28
+ end
29
+
30
+ def pipeline_url
31
+ url
32
+ end
33
+
34
+ def job_url
35
+ url
36
+ end
37
+
38
+ def workspace_path
39
+ env["BITBUCKET_CLONE_DIR"]
40
+ end
41
+
42
+ def git_repository_url
43
+ env["BITBUCKET_GIT_SSH_ORIGIN"] || env["BITBUCKET_GIT_HTTP_ORIGIN"]
44
+ end
45
+
46
+ def git_commit_sha
47
+ env["BITBUCKET_COMMIT"]
48
+ end
49
+
50
+ def git_branch
51
+ env["BITBUCKET_BRANCH"]
52
+ end
53
+
54
+ def git_tag
55
+ env["BITBUCKET_TAG"]
56
+ end
57
+
58
+ private
59
+
60
+ def url
61
+ "https://bitbucket.org/#{env["BITBUCKET_REPO_FULL_NAME"]}/addon/pipelines/home#" \
62
+ "!/results/#{env["BITBUCKET_BUILD_NUMBER"]}"
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Datadog
6
+ module CI
7
+ module Ext
8
+ module Environment
9
+ module Providers
10
+ # Bitrise: https://bitrise.io/
11
+ # Environment variables docs: https://devcenter.bitrise.io/en/references/available-environment-variables.html
12
+ class Bitrise < Base
13
+ def provider_name
14
+ "bitrise"
15
+ end
16
+
17
+ def pipeline_id
18
+ env["BITRISE_BUILD_SLUG"]
19
+ end
20
+
21
+ def pipeline_name
22
+ env["BITRISE_TRIGGERED_WORKFLOW_ID"]
23
+ end
24
+
25
+ def pipeline_number
26
+ env["BITRISE_BUILD_NUMBER"]
27
+ end
28
+
29
+ def pipeline_url
30
+ env["BITRISE_BUILD_URL"]
31
+ end
32
+
33
+ def workspace_path
34
+ env["BITRISE_SOURCE_DIR"]
35
+ end
36
+
37
+ def git_repository_url
38
+ env["GIT_REPOSITORY_URL"]
39
+ end
40
+
41
+ def git_commit_sha
42
+ env["BITRISE_GIT_COMMIT"] || env["GIT_CLONE_COMMIT_HASH"]
43
+ end
44
+
45
+ def git_branch
46
+ env["BITRISEIO_GIT_BRANCH_DEST"] || env["BITRISE_GIT_BRANCH"]
47
+ end
48
+
49
+ def git_tag
50
+ env["BITRISE_GIT_TAG"]
51
+ end
52
+
53
+ def git_commit_message
54
+ env["BITRISE_GIT_MESSAGE"]
55
+ end
56
+
57
+ def git_commit_author_name
58
+ env["GIT_CLONE_COMMIT_AUTHOR_NAME"]
59
+ end
60
+
61
+ def git_commit_author_email
62
+ env["GIT_CLONE_COMMIT_AUTHOR_EMAIL"]
63
+ end
64
+
65
+ def git_commit_committer_name
66
+ env["GIT_CLONE_COMMIT_COMMITER_NAME"]
67
+ end
68
+
69
+ def git_commit_committer_email
70
+ env["GIT_CLONE_COMMIT_COMMITER_EMAIL"] || env["GIT_CLONE_COMMIT_COMMITER_NAME"]
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Datadog
6
+ module CI
7
+ module Ext
8
+ module Environment
9
+ module Providers
10
+ # Buddy: https://buddy.works/
11
+ # Environment variables docs: https://buddy.works/docs/pipelines/environment-variables
12
+ class Buddy < Base
13
+ def provider_name
14
+ "buddy"
15
+ end
16
+
17
+ def pipeline_id
18
+ "#{env["BUDDY_PIPELINE_ID"]}/#{env["BUDDY_EXECUTION_ID"]}"
19
+ end
20
+
21
+ def pipeline_name
22
+ env["BUDDY_PIPELINE_NAME"]
23
+ end
24
+
25
+ def pipeline_number
26
+ env["BUDDY_EXECUTION_ID"]
27
+ end
28
+
29
+ def pipeline_url
30
+ env["BUDDY_EXECUTION_URL"]
31
+ end
32
+
33
+ def workspace_path
34
+ env["CI_WORKSPACE_PATH"]
35
+ end
36
+
37
+ def git_repository_url
38
+ env["BUDDY_SCM_URL"]
39
+ end
40
+
41
+ def git_commit_sha
42
+ env["BUDDY_EXECUTION_REVISION"]
43
+ end
44
+
45
+ def git_branch
46
+ env["BUDDY_EXECUTION_BRANCH"]
47
+ end
48
+
49
+ def git_tag
50
+ env["BUDDY_EXECUTION_TAG"]
51
+ end
52
+
53
+ def git_commit_message
54
+ env["BUDDY_EXECUTION_REVISION_MESSAGE"]
55
+ end
56
+
57
+ def git_commit_committer_name
58
+ env["BUDDY_EXECUTION_REVISION_COMMITTER_NAME"]
59
+ end
60
+
61
+ def git_commit_committer_email
62
+ env["BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL"]
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ require_relative "base"
6
+
7
+ module Datadog
8
+ module CI
9
+ module Ext
10
+ module Environment
11
+ module Providers
12
+ # Buildkite: https://buildkite.com/
13
+ # Environment variables docs: https://buildkite.com/docs/pipelines/environment-variables
14
+ class Buildkite < Base
15
+ def provider_name
16
+ "buildkite"
17
+ end
18
+
19
+ def job_url
20
+ "#{env["BUILDKITE_BUILD_URL"]}##{env["BUILDKITE_JOB_ID"]}"
21
+ end
22
+
23
+ def pipeline_id
24
+ env["BUILDKITE_BUILD_ID"]
25
+ end
26
+
27
+ def pipeline_name
28
+ env["BUILDKITE_PIPELINE_SLUG"]
29
+ end
30
+
31
+ def pipeline_number
32
+ env["BUILDKITE_BUILD_NUMBER"]
33
+ end
34
+
35
+ def pipeline_url
36
+ env["BUILDKITE_BUILD_URL"]
37
+ end
38
+
39
+ def node_name
40
+ env["BUILDKITE_AGENT_ID"]
41
+ end
42
+
43
+ def node_labels
44
+ labels = env
45
+ .select { |key| key.start_with?("BUILDKITE_AGENT_META_DATA_") }
46
+ .map { |key, value| "#{key.to_s.sub("BUILDKITE_AGENT_META_DATA_", "").downcase}:#{value}" }
47
+ .sort_by(&:length)
48
+
49
+ labels.to_json unless labels.empty?
50
+ end
51
+
52
+ def workspace_path
53
+ env["BUILDKITE_BUILD_CHECKOUT_PATH"]
54
+ end
55
+
56
+ def git_repository_url
57
+ env["BUILDKITE_REPO"]
58
+ end
59
+
60
+ def git_commit_sha
61
+ env["BUILDKITE_COMMIT"]
62
+ end
63
+
64
+ def git_branch
65
+ env["BUILDKITE_BRANCH"]
66
+ end
67
+
68
+ def git_tag
69
+ env["BUILDKITE_TAG"]
70
+ end
71
+
72
+ def git_commit_author_name
73
+ env["BUILDKITE_BUILD_AUTHOR"]
74
+ end
75
+
76
+ def git_commit_author_email
77
+ env["BUILDKITE_BUILD_AUTHOR_EMAIL"]
78
+ end
79
+
80
+ def git_commit_message
81
+ env["BUILDKITE_MESSAGE"]
82
+ end
83
+
84
+ def ci_env_vars
85
+ {
86
+ "BUILDKITE_BUILD_ID" => env["BUILDKITE_BUILD_ID"],
87
+ "BUILDKITE_JOB_ID" => env["BUILDKITE_JOB_ID"]
88
+ }.to_json
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ require_relative "base"
6
+
7
+ module Datadog
8
+ module CI
9
+ module Ext
10
+ module Environment
11
+ module Providers
12
+ # Circle CI: https://circleci.com/
13
+ # Environment variables docs: https://circleci.com/docs/variables/#built-in-environment-variables
14
+ class Circleci < Base
15
+ def provider_name
16
+ "circleci"
17
+ end
18
+
19
+ def job_url
20
+ env["CIRCLE_BUILD_URL"]
21
+ end
22
+
23
+ def job_name
24
+ env["CIRCLE_JOB"]
25
+ end
26
+
27
+ def pipeline_id
28
+ env["CIRCLE_WORKFLOW_ID"]
29
+ end
30
+
31
+ def pipeline_name
32
+ env["CIRCLE_PROJECT_REPONAME"]
33
+ end
34
+
35
+ def pipeline_url
36
+ "https://app.circleci.com/pipelines/workflows/#{env["CIRCLE_WORKFLOW_ID"]}"
37
+ end
38
+
39
+ def workspace_path
40
+ env["CIRCLE_WORKING_DIRECTORY"]
41
+ end
42
+
43
+ def git_repository_url
44
+ env["CIRCLE_REPOSITORY_URL"]
45
+ end
46
+
47
+ def git_commit_sha
48
+ env["CIRCLE_SHA1"]
49
+ end
50
+
51
+ def git_branch
52
+ env["CIRCLE_BRANCH"]
53
+ end
54
+
55
+ def git_tag
56
+ env["CIRCLE_TAG"]
57
+ end
58
+
59
+ def git_commit_author_name
60
+ env["BUILD_REQUESTEDFORID"]
61
+ end
62
+
63
+ def git_commit_author_email
64
+ env["BUILD_REQUESTEDFOREMAIL"]
65
+ end
66
+
67
+ def git_commit_message
68
+ env["BUILD_SOURCEVERSIONMESSAGE"]
69
+ end
70
+
71
+ def ci_env_vars
72
+ {
73
+ "CIRCLE_WORKFLOW_ID" => env["CIRCLE_WORKFLOW_ID"],
74
+ "CIRCLE_BUILD_NUM" => env["CIRCLE_BUILD_NUM"]
75
+ }.to_json
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ require_relative "base"
6
+
7
+ module Datadog
8
+ module CI
9
+ module Ext
10
+ module Environment
11
+ module Providers
12
+ # Codefresh: https://codefresh.io/
13
+ # Environment variables docs: https://codefresh.io/docs/docs/pipelines/variables/#export-variables-to-all-steps-with-cf_export
14
+ class Codefresh < Base
15
+ def provider_name
16
+ "codefresh"
17
+ end
18
+
19
+ def job_name
20
+ env["CF_STEP_NAME"]
21
+ end
22
+
23
+ def pipeline_id
24
+ env["CF_BUILD_ID"]
25
+ end
26
+
27
+ def pipeline_name
28
+ env["CF_PIPELINE_NAME"]
29
+ end
30
+
31
+ def pipeline_url
32
+ env["CF_BUILD_URL"]
33
+ end
34
+
35
+ def git_branch_or_tag
36
+ env["CF_BRANCH"]
37
+ end
38
+
39
+ def ci_env_vars
40
+ {
41
+ "CF_BUILD_ID" => env["CF_BUILD_ID"]
42
+ }.to_json
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end