It's convenient to use Travis-CI for doing kernel builds. Doing so
requires a github repo, Travis-CI enabled for that repo, and a
.travis.yml file in the repository. This commit addresses the last part.
Each repository branch must have a .travis.yml file in order to run
Travis-CI jobs.

Obviously, we can't create a single configuration that works for
everyone as every developer will want to run different configs and
build targets. Therefore, this only adds a skeleton .travis.yml file.
With this a user can either set $CONFIG and $TARGET in their Travis-CI
environment or customized builds can be triggered remotely.

Here's an example of setting up a matrix build of different
architectures:

body='{
  "request": {
    "branch": "master",
    "config" : {
      "env": {
        "global": "CONFIG=defconfig TARGET=all",
        "matrix": [
          "ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-",
          "ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-",
          "ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-"
        ]
      }
    }
  }
}'

curl -s -X POST \
   -H "Content-Type: application/json" \
   -H "Accept: application/json" \
   -H "Travis-API-Version: 3" \
   -H "Authorization: token $TOKEN" \
   -d "$body" \
   https://api.travis-ci.org/repo/robherring%2Flinux/requests

Additionally, it is possible to override 'scripts' or any other part of
the config as well.

Signed-off-by: Rob Herring <[email protected]>
---
I'm wondering if there's other interest in this. If so, please chime in.

Maybe I should be looking at Gitlab CI instead, but Travis I know 
already and Gitlab just seems to be the shiniest new thing. In any case, 
both could coexist.

Rob

 .travis.yml | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 .travis.yml

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000000..ba1e59dd44f6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,23 @@
+language: c
+
+sudo: false
+dist: trusty
+
+cache:
+  apt: true
+
+env:
+  - CONFIG=allnoconfig TARGET=all
+
+addons:
+  apt:
+    packages:
+      - build-essential
+      - bc
+      - gcc-arm-linux-gnueabihf
+      - gcc-aarch64-linux-gnu
+      - gcc-powerpc-linux-gnu
+
+script:
+  - make $CONFIG
+  - make $TARGET
-- 
2.17.1

Reply via email to