path: root/pages
diff options
authorStefan Schmidt <>2020-06-15 05:32:43 -0700
committerwww-data <>2020-06-15 05:32:43 -0700
commit93ff09692746d60c8c8b2f9c4f1906b9a19950e7 (patch)
treec9b4b030f334c79e534544ebfbbcde9c740a3a89 /pages
parent1de5948a951110a6d5bc5f7fddb68a9ccdb93c8f (diff)
Wiki page changed with summary [created] by Stefan Schmidt
Diffstat (limited to 'pages')
1 files changed, 52 insertions, 0 deletions
diff --git a/pages/develop/ b/pages/develop/
new file mode 100644
index 000000000..0d6fd94ae
--- /dev/null
+++ b/pages/develop/
@@ -0,0 +1,52 @@
2~~Title: Continuous Integration~~
5# CI Overview #
7Our CI pipeline sits on [Travis CI]( and gets triggered by two different events.
8The first event is a git push to our git server (which gets instantly mirrored to our Github mirror and triggers Travis).
9The second event is a daily cron build triggered directly from Travis itself at around ~ 17:30 CEST (time can vary depending on Travis load).
11## Git push CI Pipeline ##
13Here is what happens when you push a change to
14 - A git hook on the server will push out the new changes to our GitHub mirror instantly
15 - GitHub notifies Travis CI on repo changes
16 - Travis takes the latest change (all commits in one push, not individual commits) and starts a build
17 - 6 different jobs are running on each push
18 * Native OSX build
19 * Windows cross build with MinGW and ewpi for deps
20 * Linux build with all options (as much as possible combined) enabled
21 * Linux build with all options disabled
22 * Linux build with wayland options enabled (+ninja test, ninja install & external app header test)
23 * Linux build with default options (+ninja test, ninja install & external app header test)
25Depending on the available Travis resources such a build takes 20-30 minutes (OSX is the bottleneck).
26Every developer can push to their devs/$ID/ branches to trigger these builds and check the results before putting things into Phab.
28## Daily cron CI Pipeline ##
30The daily cron job is running (~ 17:30 CEST, but Travis is not strict on this time). The cron job takes the current HEAD of master at the time the job starts. In addition to the 6 jobs we have for every build the cron jobs add 11 more to a total of 17 jobs:
31 * A release ready job which runs a full ninja dist
32 * 3 Linux distro builds (Ubuntu latest, Ubuntu LTS, Debian stable)
33 * Coverity Scan run and upload for analysis -> mail to e-devel for newly detected issues
34 * Address sanitizer enabled build
35 * Exactness job running test for elementary_test
36 * Codecov code coverage build run
37 * Native arm64 arch build
38 * Native ppc64le arch build
39 * Native s390x arch build
41Depending on the available Travis resources such a build can take up to 60 minutes
43## Testing: ##
45EFL testsuite (unit test suites + spec validation tests)
47## Docker images: ##
49To support the various builds on Travis we have a bunch of docker images with the needed dependencies for efl pre-installed. The source for these docker images is the [ci-support-files]( github repo where our Dockerfiles live. They will be automatically build on docker hub and pulled during a Travis run (when not already cached).
51## Caching: ##
52We use ccache in our builds and cache the results in the Travis caching mechanisms to save build time.