ci_info/
config.rs

1//! # config
2//!
3//! Predefined config of CI vendors.
4//!
5
6use crate::types::{EnvValue, Vendor, VendorConfig};
7
8pub(crate) fn create() -> Vec<VendorConfig> {
9    vec![
10        VendorConfig {
11            name: "Agola".to_string(),
12            vendor: Vendor::Agola,
13            ci_env: EnvValue::Exists("AGOLA_REPOSITORY_URL".to_string()),
14            pr_env: None,
15            branch_name_env: Some("AGOLA_GIT_BRANCH".to_string()),
16        },
17        VendorConfig {
18            name: "AppCenter".to_string(),
19            vendor: Vendor::AppCenter,
20            ci_env: EnvValue::Exists("APPCENTER_BUILD_ID".to_string()),
21            pr_env: None,
22            branch_name_env: Some("APPCENTER_BRANCH".to_string()),
23        },
24        VendorConfig {
25            name: "AppCircle".to_string(),
26            vendor: Vendor::AppCircle,
27            ci_env: EnvValue::Exists("AC_APPCIRCLE".to_string()),
28            pr_env: None,
29            branch_name_env: Some("AC_GIT_BRANCH".to_string()),
30        },
31        VendorConfig {
32            name: "AppVeyor".to_string(),
33            vendor: Vendor::AppVeyor,
34            ci_env: EnvValue::Exists("APPVEYOR".to_string()),
35            pr_env: Some(EnvValue::Exists("APPVEYOR_PULL_REQUEST_NUMBER".to_string())),
36            branch_name_env: Some("APPVEYOR_REPO_BRANCH".to_string()),
37        },
38        VendorConfig {
39            name: "AWS CodeBuild".to_string(),
40            vendor: Vendor::AWSCodeBuild,
41            ci_env: EnvValue::Exists("CODEBUILD_BUILD_ARN".to_string()),
42            pr_env: None,
43            branch_name_env: None,
44        },
45        VendorConfig {
46            name: "Azure Pipelines".to_string(),
47            vendor: Vendor::AzurePipelines,
48            ci_env: EnvValue::Exists("TF_BUILD".to_string()),
49            pr_env: Some(EnvValue::Value(
50                "BUILD_REASON".to_string(),
51                "PullRequest".to_string(),
52            )),
53            branch_name_env: Some("BUILD_SOURCEBRANCHNAME".to_string()),
54        },
55        VendorConfig {
56            name: "Bamboo".to_string(),
57            vendor: Vendor::Bamboo,
58            ci_env: EnvValue::Exists("bamboo_planKey".to_string()),
59            pr_env: None,
60            branch_name_env: None,
61        },
62        VendorConfig {
63            name: "Bitbucket Pipelines".to_string(),
64            vendor: Vendor::BitbucketPipelines,
65            ci_env: EnvValue::Exists("BITBUCKET_COMMIT".to_string()),
66            pr_env: Some(EnvValue::Exists("BITBUCKET_PR_ID".to_string())),
67            branch_name_env: Some("BITBUCKET_BRANCH".to_string()),
68        },
69        VendorConfig {
70            name: "Bitrise".to_string(),
71            vendor: Vendor::Bitrise,
72            ci_env: EnvValue::Exists("BITRISE_IO".to_string()),
73            pr_env: Some(EnvValue::Exists("BITRISE_PULL_REQUEST".to_string())),
74            branch_name_env: Some("BITRISE_GIT_BRANCH".to_string()),
75        },
76        VendorConfig {
77            name: "Buddy".to_string(),
78            vendor: Vendor::Buddy,
79            ci_env: EnvValue::Exists("BUDDY_WORKSPACE_ID".to_string()),
80            pr_env: Some(EnvValue::Exists(
81                "BUDDY_EXECUTION_PULL_REQUEST_ID".to_string(),
82            )),
83            branch_name_env: Some("BUDDY_EXECUTION_BRANCH".to_string()),
84        },
85        VendorConfig {
86            name: "Buildkite".to_string(),
87            vendor: Vendor::Buildkite,
88            ci_env: EnvValue::Exists("BUILDKITE".to_string()),
89            pr_env: Some(EnvValue::NotEqual(
90                "BUILDKITE_PULL_REQUEST".to_string(),
91                "false".to_string(),
92            )),
93            branch_name_env: None,
94        },
95        VendorConfig {
96            name: "CircleCI".to_string(),
97            vendor: Vendor::CircleCI,
98            ci_env: EnvValue::Exists("CIRCLECI".to_string()),
99            pr_env: Some(EnvValue::Exists("CIRCLE_PULL_REQUEST".to_string())),
100            branch_name_env: Some("CIRCLE_BRANCH".to_string()),
101        },
102        VendorConfig {
103            name: "Cirrus CI".to_string(),
104            vendor: Vendor::CirrusCI,
105            ci_env: EnvValue::Exists("CIRRUS_CI".to_string()),
106            pr_env: Some(EnvValue::Exists("CIRRUS_PR".to_string())),
107            branch_name_env: Some("CIRRUS_BRANCH".to_string()),
108        },
109        VendorConfig {
110            name: "Codefresh".to_string(),
111            vendor: Vendor::Codefresh,
112            ci_env: EnvValue::Exists("CF_BUILD_ID".to_string()),
113            pr_env: Some(EnvValue::Exists("CF_PULL_REQUEST_ID".to_string())),
114            branch_name_env: Some("CF_BRANCH".to_string()),
115        },
116        VendorConfig {
117            name: "Codemagic".to_string(),
118            vendor: Vendor::Codemagic,
119            ci_env: EnvValue::Exists("CM_BUILD_ID".to_string()),
120            pr_env: Some(EnvValue::Value(
121                "CM_PULL_REQUEST".to_string(),
122                "true".to_string(),
123            )),
124            branch_name_env: Some("CM_BRANCH".to_string()),
125        },
126        VendorConfig {
127            name: "Codeship".to_string(),
128            vendor: Vendor::Codeship,
129            ci_env: EnvValue::Value("CI_NAME".to_string(), "codeship".to_string()),
130            pr_env: None,
131            branch_name_env: Some("CI_BRANCH".to_string()),
132        },
133        VendorConfig {
134            name: "Drone".to_string(),
135            vendor: Vendor::Drone,
136            ci_env: EnvValue::Exists("DRONE".to_string()),
137            pr_env: Some(EnvValue::Value(
138                "DRONE_BUILD_EVENT".to_string(),
139                "pull_request".to_string(),
140            )),
141            branch_name_env: None,
142        },
143        VendorConfig {
144            name: "dsari".to_string(),
145            vendor: Vendor::DSARI,
146            ci_env: EnvValue::Exists("DSARI".to_string()),
147            pr_env: None,
148            branch_name_env: None,
149        },
150        VendorConfig {
151            name: "Earthly".to_string(),
152            vendor: Vendor::EARTHLY,
153            ci_env: EnvValue::Exists("EARTHLY_CI".to_string()),
154            pr_env: None,
155            branch_name_env: None,
156        },
157        VendorConfig {
158            name: "Flow CI".to_string(),
159            vendor: Vendor::FlowCI,
160            ci_env: EnvValue::Exists("FLOWCI_JOB_BUILD_NUM".to_string()),
161            pr_env: None,
162            branch_name_env: Some("FLOWCI_GIT_BRANCH".to_string()),
163        },
164        VendorConfig {
165            name: "Gitea Actions".to_string(),
166            vendor: Vendor::GiteaActions,
167            ci_env: EnvValue::Exists("GITEA_ACTIONS".to_string()),
168            pr_env: None,
169            branch_name_env: None,
170        },
171        VendorConfig {
172            name: "GitHub Actions".to_string(),
173            vendor: Vendor::GitHubActions,
174            ci_env: EnvValue::Exists("GITHUB_ACTIONS".to_string()),
175            pr_env: Some(EnvValue::Value(
176                "GITHUB_EVENT_NAME".to_string(),
177                "pull_request".to_string(),
178            )),
179            branch_name_env: None,
180        },
181        VendorConfig {
182            name: "GitLab CI".to_string(),
183            vendor: Vendor::GitLabCI,
184            ci_env: EnvValue::Exists("GITLAB_CI".to_string()),
185            pr_env: Some(EnvValue::Exists("CI_MERGE_REQUEST_ID".to_string())),
186            branch_name_env: Some("CI_COMMIT_REF_NAME".to_string()),
187        },
188        VendorConfig {
189            name: "Gerrit".to_string(),
190            vendor: Vendor::Gerrit,
191            ci_env: EnvValue::Exists("GERRIT_PROJECT".to_string()),
192            pr_env: None,
193            branch_name_env: None,
194        },
195        VendorConfig {
196            name: "GoCD".to_string(),
197            vendor: Vendor::GoCD,
198            ci_env: EnvValue::Exists("GO_PIPELINE_LABEL".to_string()),
199            pr_env: None,
200            branch_name_env: None,
201        },
202        VendorConfig {
203            name: "Google Cloud Build".to_string(),
204            vendor: Vendor::GoogleCloudBuild,
205            ci_env: EnvValue::Exists("BUILDER_OUTPUT".to_string()),
206            pr_env: None,
207            branch_name_env: None,
208        },
209        VendorConfig {
210            name: "Harness CI".to_string(),
211            vendor: Vendor::HarnessCI,
212            ci_env: EnvValue::Exists("HARNESS_BUILD_ID".to_string()),
213            pr_env: None,
214            branch_name_env: None,
215        },
216        VendorConfig {
217            name: "Heroku".to_string(),
218            vendor: Vendor::Heroku,
219            ci_env: EnvValue::Contains("NODE".to_string(), "heroku".to_string()),
220            pr_env: None,
221            branch_name_env: Some("HEROKU_TEST_RUN_BRANCH".to_string()),
222        },
223        VendorConfig {
224            name: "Hudson".to_string(),
225            vendor: Vendor::Hudson,
226            ci_env: EnvValue::Exists("HUDSON_URL".to_string()),
227            pr_env: None,
228            branch_name_env: Some("BRANCH_NAME".to_string()),
229        },
230        VendorConfig {
231            name: "Jenkins".to_string(),
232            vendor: Vendor::Jenkins,
233            ci_env: EnvValue::AllExists(vec!["JENKINS_URL".to_string(), "BUILD_ID".to_string()]),
234            pr_env: Some(EnvValue::AnyExists(vec![
235                "ghprbPullId".to_string(),
236                "CHANGE_ID".to_string(),
237            ])),
238            branch_name_env: Some("BRANCH_NAME".to_string()),
239        },
240        VendorConfig {
241            name: "JenkinsX".to_string(),
242            vendor: Vendor::JenkinsX,
243            ci_env: EnvValue::AllExists(vec![
244                "JX_CHART_REPOSITORY".to_string(),
245                "BUILD_ID".to_string(),
246            ]),
247            pr_env: Some(EnvValue::Exists("PULL_NUMBER".to_string())),
248            branch_name_env: Some("BRANCH_NAME".to_string()),
249        },
250        VendorConfig {
251            name: "Layer CI".to_string(),
252            vendor: Vendor::LayerCI,
253            ci_env: EnvValue::Exists("LAYERCI".to_string()),
254            pr_env: Some(EnvValue::Exists("LAYERCI_PULL_REQUEST".to_string())),
255            branch_name_env: Some("LAYERCI_BRANCH".to_string()),
256        },
257        VendorConfig {
258            name: "Magnum CI".to_string(),
259            vendor: Vendor::MagnumCI,
260            ci_env: EnvValue::Exists("MAGNUM".to_string()),
261            pr_env: None,
262            branch_name_env: None,
263        },
264        VendorConfig {
265            name: "Netlify CI".to_string(),
266            vendor: Vendor::NetlifyCI,
267            ci_env: EnvValue::Value("NETLIFY".to_string(), "true".to_string()),
268            pr_env: Some(EnvValue::NotEqual(
269                "PULL_REQUEST".to_string(),
270                "false".to_string(),
271            )),
272            branch_name_env: Some("BRANCH".to_string()),
273        },
274        VendorConfig {
275            name: "Nevercode".to_string(),
276            vendor: Vendor::Nevercode,
277            ci_env: EnvValue::Exists("NEVERCODE".to_string()),
278            pr_env: Some(EnvValue::NotEqual(
279                "NEVERCODE_PULL_REQUEST".to_string(),
280                "false".to_string(),
281            )),
282            branch_name_env: Some("NEVERCODE_BRANCH".to_string()),
283        },
284        VendorConfig {
285            name: "Prow".to_string(),
286            vendor: Vendor::Prow,
287            ci_env: EnvValue::Exists("PROW_JOB_ID".to_string()),
288            pr_env: Some(EnvValue::NotEmpty("PULL_NUMBER".to_string())),
289            branch_name_env: Some("PULL_BASE_REF".to_string()),
290        },
291        VendorConfig {
292            name: "Render".to_string(),
293            vendor: Vendor::Render,
294            ci_env: EnvValue::Exists("RENDER".to_string()),
295            pr_env: Some(EnvValue::Value(
296                "IS_PULL_REQUEST".to_string(),
297                "true".to_string(),
298            )),
299            branch_name_env: None,
300        },
301        VendorConfig {
302            name: "Sail CI".to_string(),
303            vendor: Vendor::SailCI,
304            ci_env: EnvValue::Exists("SAILCI".to_string()),
305            pr_env: Some(EnvValue::Exists("SAIL_PULL_REQUEST_NUMBER".to_string())),
306            branch_name_env: None,
307        },
308        VendorConfig {
309            name: "Screwdriver".to_string(),
310            vendor: Vendor::Screwdriver,
311            ci_env: EnvValue::Exists("SCREWDRIVER".to_string()),
312            pr_env: Some(EnvValue::NotEmpty("SD_PULL_REQUEST".to_string())),
313            branch_name_env: Some("GIT_BRANCH".to_string()),
314        },
315        VendorConfig {
316            name: "Semaphore".to_string(),
317            vendor: Vendor::Semaphore,
318            ci_env: EnvValue::Exists("SEMAPHORE".to_string()),
319            pr_env: Some(EnvValue::Exists("PULL_REQUEST_NUMBER".to_string())),
320            branch_name_env: Some("SEMAPHORE_GIT_BRANCH".to_string()),
321        },
322        VendorConfig {
323            name: "SourceHut".to_string(),
324            vendor: Vendor::SourceHut,
325            ci_env: EnvValue::Contains("JOB_URL".to_string(), "builds.sr.ht".to_string()),
326            pr_env: None,
327            branch_name_env: None,
328        },
329        VendorConfig {
330            name: "Strider CD".to_string(),
331            vendor: Vendor::StriderCD,
332            ci_env: EnvValue::Exists("STRIDER".to_string()),
333            pr_env: None,
334            branch_name_env: None,
335        },
336        VendorConfig {
337            name: "TaskCluster".to_string(),
338            vendor: Vendor::TaskCluster,
339            ci_env: EnvValue::AllExists(vec!["TASK_ID".to_string(), "RUN_ID".to_string()]),
340            pr_env: None,
341            branch_name_env: None,
342        },
343        VendorConfig {
344            name: "TeamCity".to_string(),
345            vendor: Vendor::TeamCity,
346            ci_env: EnvValue::Exists("TEAMCITY_VERSION".to_string()),
347            pr_env: None,
348            branch_name_env: None,
349        },
350        VendorConfig {
351            name: "Travis CI".to_string(),
352            vendor: Vendor::TravisCI,
353            ci_env: EnvValue::Exists("TRAVIS".to_string()),
354            pr_env: Some(EnvValue::NotEqual(
355                "TRAVIS_PULL_REQUEST".to_string(),
356                "false".to_string(),
357            )),
358            branch_name_env: Some("TRAVIS_BRANCH".to_string()),
359        },
360        VendorConfig {
361            name: "Vela".to_string(),
362            vendor: Vendor::Vela,
363            ci_env: EnvValue::Exists("VELA_BUILD_NUMBER".to_string()),
364            pr_env: Some(EnvValue::Exists("VELA_PULL_REQUEST".to_string())),
365            branch_name_env: Some("VELA_BUILD_BRANCH".to_string()),
366        },
367        VendorConfig {
368            name: "Vercel".to_string(),
369            vendor: Vendor::Vercel,
370            ci_env: EnvValue::AnyExists(vec!["NOW_BUILDER".to_string(), "VERCEL".to_string()]),
371            pr_env: Some(EnvValue::Exists("VERCEL_GIT_PULL_REQUEST_ID".to_string())),
372            branch_name_env: None,
373        },
374        VendorConfig {
375            name: "Woodpecker CI".to_string(),
376            vendor: Vendor::WoodpeckerCI,
377            ci_env: EnvValue::Value("CI".to_string(), "woodpecker".to_string()),
378            pr_env: Some(EnvValue::NotEmpty("CI_COMMIT_PULL_REQUEST".to_string())),
379            branch_name_env: Some("CI_COMMIT_BRANCH".to_string()),
380        },
381        VendorConfig {
382            name: "Xcode Cloud".to_string(),
383            vendor: Vendor::XcodeCloud,
384            ci_env: EnvValue::Exists("CI_XCODE_PROJECT".to_string()),
385            pr_env: Some(EnvValue::NotEmpty("CI_PULL_REQUEST_NUMBER".to_string())),
386            branch_name_env: Some("CI_BRANCH".to_string()),
387        },
388        VendorConfig {
389            name: "Xcode Server".to_string(),
390            vendor: Vendor::XcodeServer,
391            ci_env: EnvValue::Exists("XCS".to_string()),
392            pr_env: None,
393            branch_name_env: None,
394        },
395        VendorConfig {
396            name: "Unknown".to_string(),
397            vendor: Vendor::Unknown,
398            ci_env: EnvValue::AnyExists(vec![
399                "CI".to_string(),
400                "CONTINUOUS_INTEGRATION".to_string(),
401                "BUILD_NUMBER".to_string(),
402                "RUN_ID".to_string(),
403            ]),
404            pr_env: None,
405            branch_name_env: None,
406        },
407    ]
408}