1*6236dae4SAndroid Build Coastguard Worker<!-- 2*6236dae4SAndroid Build Coastguard WorkerCopyright (C) Daniel Stenberg, <[email protected]>, et al. 3*6236dae4SAndroid Build Coastguard Worker 4*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl 5*6236dae4SAndroid Build Coastguard Worker--> 6*6236dae4SAndroid Build Coastguard Worker 7*6236dae4SAndroid Build Coastguard Worker# Continuous Integration for curl 8*6236dae4SAndroid Build Coastguard Worker 9*6236dae4SAndroid Build Coastguard WorkerCurl runs in many different environments, so every change is run against a 10*6236dae4SAndroid Build Coastguard Workerlarge number of test suites. 11*6236dae4SAndroid Build Coastguard Worker 12*6236dae4SAndroid Build Coastguard WorkerEvery pull request is verified for each of the following: 13*6236dae4SAndroid Build Coastguard Worker 14*6236dae4SAndroid Build Coastguard Worker - ... it still builds, warning-free, on Linux and macOS, with both 15*6236dae4SAndroid Build Coastguard Worker clang and gcc 16*6236dae4SAndroid Build Coastguard Worker - ... it still builds fine on Windows with several MSVC versions 17*6236dae4SAndroid Build Coastguard Worker - ... it still builds with cmake on Linux, with gcc and clang 18*6236dae4SAndroid Build Coastguard Worker - ... it follows rudimentary code style rules 19*6236dae4SAndroid Build Coastguard Worker - ... the test suite still runs 100% fine 20*6236dae4SAndroid Build Coastguard Worker - ... the release tarball (the "dist") still works 21*6236dae4SAndroid Build Coastguard Worker - ... it builds fine in-tree as well as out-of-tree 22*6236dae4SAndroid Build Coastguard Worker - ... code coverage does not shrink drastically 23*6236dae4SAndroid Build Coastguard Worker - ... different TLS backends still compile and pass tests 24*6236dae4SAndroid Build Coastguard Worker 25*6236dae4SAndroid Build Coastguard WorkerIf the pull-request fails one of these tests, it shows up as a red X and you 26*6236dae4SAndroid Build Coastguard Workerare expected to fix the problem. If you do not understand when the issue is or 27*6236dae4SAndroid Build Coastguard Workerhave other problems to fix the complaint, just ask and other project members 28*6236dae4SAndroid Build Coastguard Workercan likely help out. 29*6236dae4SAndroid Build Coastguard Worker 30*6236dae4SAndroid Build Coastguard WorkerConsider the following table while looking at pull request failures: 31*6236dae4SAndroid Build Coastguard Worker 32*6236dae4SAndroid Build Coastguard Worker | CI platform as shown in PR | State | What to look at next | 33*6236dae4SAndroid Build Coastguard Worker | ----------------------------------- | ------ | -------------------------- | 34*6236dae4SAndroid Build Coastguard Worker | CI / codeql | stable | quality check results | 35*6236dae4SAndroid Build Coastguard Worker | CI / fuzzing | stable | fuzzing results | 36*6236dae4SAndroid Build Coastguard Worker | CI / macos ... | stable | all errors and failures | 37*6236dae4SAndroid Build Coastguard Worker | Code scanning results / CodeQL | stable | quality check results | 38*6236dae4SAndroid Build Coastguard Worker | FreeBSD FreeBSD: ... | stable | all errors and failures | 39*6236dae4SAndroid Build Coastguard Worker | LGTM analysis: Python | stable | new findings | 40*6236dae4SAndroid Build Coastguard Worker | LGTM analysis: C/C++ | stable | new findings | 41*6236dae4SAndroid Build Coastguard Worker | buildbot/curl_winssl_ ... | stable | all errors and failures | 42*6236dae4SAndroid Build Coastguard Worker | AppVeyor | flaky | all errors and failures | 43*6236dae4SAndroid Build Coastguard Worker | curl.curl (linux ...) | stable | all errors and failures | 44*6236dae4SAndroid Build Coastguard Worker | curl.curl (windows ...) | flaky | repetitive errors/failures | 45*6236dae4SAndroid Build Coastguard Worker | CodeQL | stable | new findings | 46*6236dae4SAndroid Build Coastguard Worker 47*6236dae4SAndroid Build Coastguard WorkerSometimes the tests fail due to a dependency service temporarily being offline 48*6236dae4SAndroid Build Coastguard Workeror otherwise unavailable, for example package downloads. In this case you can 49*6236dae4SAndroid Build Coastguard Workerjust try to update your pull requests to rerun the tests later as described 50*6236dae4SAndroid Build Coastguard Workerbelow. 51*6236dae4SAndroid Build Coastguard Worker 52*6236dae4SAndroid Build Coastguard Worker## CI servers 53*6236dae4SAndroid Build Coastguard Worker 54*6236dae4SAndroid Build Coastguard WorkerHere are the different CI environments that are currently in use, and how they 55*6236dae4SAndroid Build Coastguard Workerare configured: 56*6236dae4SAndroid Build Coastguard Worker 57*6236dae4SAndroid Build Coastguard Worker### GitHub Actions 58*6236dae4SAndroid Build Coastguard Worker 59*6236dae4SAndroid Build Coastguard WorkerGitHub Actions runs the following tests: 60*6236dae4SAndroid Build Coastguard Worker 61*6236dae4SAndroid Build Coastguard Worker- macOS tests with a variety of different compilation options 62*6236dae4SAndroid Build Coastguard Worker- Fuzz tests ([see the curl-fuzzer repo for more 63*6236dae4SAndroid Build Coastguard Worker info](https://github.com/curl/curl-fuzzer)). 64*6236dae4SAndroid Build Coastguard Worker- Curl compiled using the Rust TLS backend with Hyper 65*6236dae4SAndroid Build Coastguard Worker- CodeQL static analysis 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard WorkerThese are each configured in different files in `.github/workflows`. 68*6236dae4SAndroid Build Coastguard Worker 69*6236dae4SAndroid Build Coastguard Worker### Azure 70*6236dae4SAndroid Build Coastguard Worker 71*6236dae4SAndroid Build Coastguard WorkerNot used anymore. 72*6236dae4SAndroid Build Coastguard Worker 73*6236dae4SAndroid Build Coastguard Worker### AppVeyor 74*6236dae4SAndroid Build Coastguard Worker 75*6236dae4SAndroid Build Coastguard WorkerAppVeyor runs a variety of different Windows builds, with different compilation 76*6236dae4SAndroid Build Coastguard Workeroptions. 77*6236dae4SAndroid Build Coastguard Worker 78*6236dae4SAndroid Build Coastguard WorkerAs of November 2021 `@bagder`, `@mback2k`, `@jay`, `@vszakats`, `@dfandrich` 79*6236dae4SAndroid Build Coastguard Workerand `@danielgustafsson` have administrator access to the AppVeyor CI 80*6236dae4SAndroid Build Coastguard Workerenvironment. Additional admins/group members can be added on request. 81*6236dae4SAndroid Build Coastguard Worker 82*6236dae4SAndroid Build Coastguard WorkerThe tests are configured in `appveyor.yml`. 83*6236dae4SAndroid Build Coastguard Worker 84*6236dae4SAndroid Build Coastguard Worker### Zuul 85*6236dae4SAndroid Build Coastguard Worker 86*6236dae4SAndroid Build Coastguard WorkerNot used anymore. 87*6236dae4SAndroid Build Coastguard Worker 88*6236dae4SAndroid Build Coastguard Worker### Circle CI 89*6236dae4SAndroid Build Coastguard Worker 90*6236dae4SAndroid Build Coastguard WorkerCircle CI runs a basic Linux test suite on Ubuntu for both x86 and ARM 91*6236dae4SAndroid Build Coastguard Workerprocessors. This is configured in `.circleci/config.yml`. 92*6236dae4SAndroid Build Coastguard Worker 93*6236dae4SAndroid Build Coastguard WorkerYou can [view the full list of CI jobs on Circle CI's 94*6236dae4SAndroid Build Coastguard Workerwebsite](https://app.circleci.com/pipelines/github/curl/curl). 95*6236dae4SAndroid Build Coastguard Worker 96*6236dae4SAndroid Build Coastguard Worker`@bagder` has access to edit the "Project Settings" on that page. Additional 97*6236dae4SAndroid Build Coastguard Workeradmins/group members can be added on request. 98*6236dae4SAndroid Build Coastguard Worker 99*6236dae4SAndroid Build Coastguard Worker### Cirrus CI 100*6236dae4SAndroid Build Coastguard Worker 101*6236dae4SAndroid Build Coastguard WorkerNot used anymore. 102