aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/ci/vendors.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/internal/ci/vendors.go')
-rw-r--r--cli/internal/ci/vendors.go253
1 files changed, 253 insertions, 0 deletions
diff --git a/cli/internal/ci/vendors.go b/cli/internal/ci/vendors.go
new file mode 100644
index 0000000..13bce77
--- /dev/null
+++ b/cli/internal/ci/vendors.go
@@ -0,0 +1,253 @@
+package ci
+
+type vendorEnvs struct {
+ Any []string
+ All []string
+}
+
+// Vendor describes a CI/CD vendor execution environment
+type Vendor struct {
+ // Name is the name of the vendor
+ Name string
+ // Constant is the environment variable prefix used by the vendor
+ Constant string
+ // Env is one or many environment variables that can be used to quickly determine the vendor (using simple os.Getenv(env) check)
+ Env vendorEnvs
+ // EvalEnv is key/value map of environment variables that can be used to quickly determine the vendor
+ EvalEnv map[string]string
+}
+
+// Vendors is a list of common CI/CD vendors (from https://github.com/watson/ci-info/blob/master/vendors.json)
+var Vendors = []Vendor{
+ {
+ Name: "Appcircle",
+ Constant: "APPCIRCLE",
+ Env: vendorEnvs{Any: []string{"AC_APPCIRCLE"}},
+ },
+ {
+ Name: "AppVeyor",
+ Constant: "APPVEYOR",
+ Env: vendorEnvs{Any: []string{"APPVEYOR"}},
+ },
+ {
+ Name: "AWS CodeBuild",
+ Constant: "CODEBUILD",
+ Env: vendorEnvs{Any: []string{"CODEBUILD_BUILD_ARN"}},
+ },
+ {
+ Name: "Azure Pipelines",
+ Constant: "AZURE_PIPELINES",
+ Env: vendorEnvs{Any: []string{"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"}},
+ },
+ {
+ Name: "Bamboo",
+ Constant: "BAMBOO",
+ Env: vendorEnvs{Any: []string{"bamboo_planKey"}},
+ },
+ {
+ Name: "Bitbucket Pipelines",
+ Constant: "BITBUCKET",
+ Env: vendorEnvs{Any: []string{"BITBUCKET_COMMIT"}},
+ },
+ {
+ Name: "Bitrise",
+ Constant: "BITRISE",
+ Env: vendorEnvs{Any: []string{"BITRISE_IO"}},
+ },
+ {
+ Name: "Buddy",
+ Constant: "BUDDY",
+ Env: vendorEnvs{Any: []string{"BUDDY_WORKSPACE_ID"}},
+ },
+ {
+ Name: "Buildkite",
+ Constant: "BUILDKITE",
+ Env: vendorEnvs{Any: []string{"BUILDKITE"}},
+ },
+ {
+ Name: "CircleCI",
+ Constant: "CIRCLE",
+ Env: vendorEnvs{Any: []string{"CIRCLECI"}},
+ },
+ {
+ Name: "Cirrus CI",
+ Constant: "CIRRUS",
+ Env: vendorEnvs{Any: []string{"CIRRUS_CI"}},
+ },
+ {
+ Name: "Codefresh",
+ Constant: "CODEFRESH",
+ Env: vendorEnvs{Any: []string{"CF_BUILD_ID"}},
+ },
+ {
+ Name: "Codemagic",
+ Constant: "CODEMAGIC",
+ Env: vendorEnvs{Any: []string{"CM_BUILD_ID"}},
+ },
+ {
+ Name: "Codeship",
+ Constant: "CODESHIP",
+ EvalEnv: map[string]string{
+ "CI_NAME": "codeship",
+ },
+ },
+ {
+ Name: "Drone",
+ Constant: "DRONE",
+ Env: vendorEnvs{Any: []string{"DRONE"}},
+ },
+ {
+ Name: "dsari",
+ Constant: "DSARI",
+ Env: vendorEnvs{Any: []string{"DSARI"}},
+ },
+ {
+ Name: "Expo Application Services",
+ Constant: "EAS",
+ Env: vendorEnvs{Any: []string{"EAS_BUILD"}},
+ },
+ {
+ Name: "GitHub Actions",
+ Constant: "GITHUB_ACTIONS",
+ Env: vendorEnvs{Any: []string{"GITHUB_ACTIONS"}},
+ },
+ {
+ Name: "GitLab CI",
+ Constant: "GITLAB",
+ Env: vendorEnvs{Any: []string{"GITLAB_CI"}},
+ },
+ {
+ Name: "GoCD",
+ Constant: "GOCD",
+ Env: vendorEnvs{Any: []string{"GO_PIPELINE_LABEL"}},
+ },
+ {
+ Name: "Google Cloud Build",
+ Constant: "GOOGLE_CLOUD_BUILD",
+ Env: vendorEnvs{Any: []string{"BUILDER_OUTPUT"}},
+ },
+ {
+ Name: "LayerCI",
+ Constant: "LAYERCI",
+ Env: vendorEnvs{Any: []string{"LAYERCI"}},
+ },
+ {
+ Name: "Gerrit",
+ Constant: "GERRIT",
+ Env: vendorEnvs{Any: []string{"GERRIT_PROJECT"}},
+ },
+ {
+ Name: "Hudson",
+ Constant: "HUDSON",
+ Env: vendorEnvs{Any: []string{"HUDSON"}},
+ },
+ {
+ Name: "Jenkins",
+ Constant: "JENKINS",
+ Env: vendorEnvs{All: []string{"JENKINS_URL", "BUILD_ID"}},
+ },
+ {
+ Name: "Magnum CI",
+ Constant: "MAGNUM",
+ Env: vendorEnvs{Any: []string{"MAGNUM"}},
+ },
+ {
+ Name: "Netlify CI",
+ Constant: "NETLIFY",
+ Env: vendorEnvs{Any: []string{"NETLIFY"}},
+ },
+ {
+ Name: "Nevercode",
+ Constant: "NEVERCODE",
+ Env: vendorEnvs{Any: []string{"NEVERCODE"}},
+ },
+ {
+ Name: "ReleaseHub",
+ Constant: "RELEASEHUB",
+ Env: vendorEnvs{Any: []string{"RELEASE_BUILD_ID"}},
+ },
+ {
+ Name: "Render",
+ Constant: "RENDER",
+ Env: vendorEnvs{Any: []string{"RENDER"}},
+ },
+ {
+ Name: "Sail CI",
+ Constant: "SAIL",
+ Env: vendorEnvs{Any: []string{"SAILCI"}},
+ },
+ {
+ Name: "Screwdriver",
+ Constant: "SCREWDRIVER",
+ Env: vendorEnvs{Any: []string{"SCREWDRIVER"}},
+ },
+ {
+ Name: "Semaphore",
+ Constant: "SEMAPHORE",
+ Env: vendorEnvs{Any: []string{"SEMAPHORE"}},
+ },
+ {
+ Name: "Shippable",
+ Constant: "SHIPPABLE",
+ Env: vendorEnvs{Any: []string{"SHIPPABLE"}},
+ },
+ {
+ Name: "Solano CI",
+ Constant: "SOLANO",
+ Env: vendorEnvs{Any: []string{"TDDIUM"}},
+ },
+ {
+ Name: "Sourcehut",
+ Constant: "SOURCEHUT",
+ EvalEnv: map[string]string{
+ "CI_NAME": "sourcehut",
+ },
+ },
+ {
+ Name: "Strider CD",
+ Constant: "STRIDER",
+ Env: vendorEnvs{Any: []string{"STRIDER"}},
+ },
+ {
+ Name: "TaskCluster",
+ Constant: "TASKCLUSTER",
+ Env: vendorEnvs{All: []string{"TASK_ID", "RUN_ID"}},
+ },
+ {
+ Name: "TeamCity",
+ Constant: "TEAMCITY",
+ Env: vendorEnvs{Any: []string{"TEAMCITY_VERSION"}},
+ },
+ {
+ Name: "Travis CI",
+ Constant: "TRAVIS",
+ Env: vendorEnvs{Any: []string{"TRAVIS"}},
+ },
+ {
+ Name: "Vercel",
+ Constant: "VERCEL",
+ Env: vendorEnvs{Any: []string{"NOW_BUILDER", "VERCEL"}},
+ },
+ {
+ Name: "Visual Studio App Center",
+ Constant: "APPCENTER",
+ Env: vendorEnvs{Any: []string{"APPCENTER"}},
+ },
+ {
+ Name: "Woodpecker",
+ Constant: "WOODPECKER",
+ EvalEnv: map[string]string{
+ "CI": "woodpecker",
+ },
+ },
+ {
+ Name: "Xcode Cloud",
+ Constant: "XCODE_CLOUD",
+ Env: vendorEnvs{Any: []string{"CI_XCODE_PROJECT"}},
+ },
+ {
+ Name: "Xcode Server",
+ Constant: "XCODE_SERVER",
+ Env: vendorEnvs{Any: []string{"XCS"}},
+ },
+}