master
c 44 lines 1.67 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "ci.h"
4
5 #include <stdlib.h>
6
7 bool nd_is_running_under_ci(void) {
8 const char *ci_vars[] = {
9 "CI", // Generic CI flag
10 "CONTINUOUS_INTEGRATION", // Alternate generic flag
11 "BUILD_NUMBER", // Jenkins, TeamCity
12 "RUN_ID", // AWS CodeBuild, some others
13 "TRAVIS", // Travis CI
14 "GITHUB_ACTIONS", // GitHub Actions
15 "GITHUB_TOKEN", // GitHub Actions
16 "GITLAB_CI", // GitLab CI
17 "CIRCLECI", // CircleCI
18 "APPVEYOR", // AppVeyor
19 "BITBUCKET_BUILD_NUMBER", // Bitbucket Pipelines
20 "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI", // Azure DevOps
21 "TF_BUILD", // Azure DevOps (alternate)
22 "BAMBOO_BUILDKEY", // Bamboo CI
23 "GO_PIPELINE_NAME", // GoCD
24 "HUDSON_URL", // Hudson CI
25 "TEAMCITY_VERSION", // TeamCity
26 "CI_NAME", // Some environments (e.g., CodeShip)
27 "CI_WORKER", // AppVeyor (alternate)
28 "CI_SERVER", // Generic
29 "HEROKU_TEST_RUN_ID", // Heroku CI
30 "BUILDKITE", // Buildkite
31 "DRONE", // Drone CI
32 "SEMAPHORE", // Semaphore CI
33 "NETLIFY", // Netlify CI
34 "NOW_BUILDER", // Vercel (formerly Zeit Now)
35 NULL
36 };
37
38 for (const char **env = ci_vars; *env; env++) {
39 if(getenv(*env))
40 return true;
41 }
42
43 return false;
44 }