aboutsummaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 7f4d2377665c4d5bc24d8da0e36cf71181c1408a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
sudo: required
language: bash
dist: focal
services:
    - docker

env:
    global:
        - PROJECT_NAME='libbpf'
        - AUTHOR_EMAIL="$(git log -1 --pretty=\"%aE\")"
        - REPO_ROOT="$TRAVIS_BUILD_DIR"
        - CI_ROOT="$REPO_ROOT/travis-ci"
        - VMTEST_ROOT="$CI_ROOT/vmtest"

addons:
    apt:
        packages:
            - qemu-kvm
            - zstd
            - binutils-dev
            - elfutils
            - libcap-dev
            - libelf-dev
            - libdw-dev

stages:
    # Run Coverity periodically instead of for each PR for following reasons:
    # 1) Coverity jobs are heavily rate-limited
    # 2) Due to security restrictions of encrypted environment variables
    #    in Travis CI, pull requests made from forks can't access encrypted
    #    env variables, making Coverity unusable
    #    See: https://docs.travis-ci.com/user/pull-requests#pull-requests-and-security-restrictions
    - name: Coverity
      if: type = cron

jobs:
    include:
        - stage: Builds & Tests
          name: Kernel 5.5.0 + selftests
          language: bash
          env: KERNEL=5.5.0
          script:  $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1

        - name: Kernel LATEST + selftests
          language: bash
          env: KERNEL=LATEST
          script:  $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1

        - name: Kernel 4.9.0 + selftests
          language: bash
          env: KERNEL=4.9.0
          script:  $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1

        - name: Debian Build
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Debian Build (ASan+UBSan)
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN_ASAN || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Debian Build (clang)
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN_CLANG || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Debian Build (clang ASan+UBSan)
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN_CLANG_ASAN || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Debian Build (gcc-10)
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN_GCC10 || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Debian Build (gcc-10 ASan+UBSan)
          language: bash
          install:        $CI_ROOT/managers/debian.sh SETUP
          script:         $CI_ROOT/managers/debian.sh RUN_GCC10_ASAN || travis_terminate 1
          after_script:   $CI_ROOT/managers/debian.sh CLEANUP

        - name: Ubuntu Focal Build
          language: bash
          script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1

        - name: Ubuntu Focal Build (arm)
          arch: arm64
          language: bash
          script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1

        - name: Ubuntu Focal Build (s390x)
          arch: s390x
          language: bash
          script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1

        - name: Ubuntu Focal Build (ppc64le)
          arch: ppc64le
          language: bash
          script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1

        - stage: Coverity
          language: bash
          env:
              # Coverity configuration
              # COVERITY_SCAN_TOKEN=xxx
              # Encrypted using `travis encrypt --repo libbpf/libbpf COVERITY_SCAN_TOKEN=xxx`
              - secure: "I9OsMRHbb82IUivDp+I+w/jEQFOJgBDAqYqf1ollqCM1QhocxMcS9bwIAgfPhdXi2hohV7sRrVMZstahY67FAvJLGxNopi4tAPDIAaIFxgO0yDxMhaTMx5xDfMwlIm2FOP/9gB9BQsd6M7CmoQZgXYwBIv7xd1ooxoQrh2rOK1YrRl7UQu3+c3zPTjDfIYZzR3bFttMqZ9/c4U0v8Ry5IFXrel3hCshndHA1TtttJrUSrILlZcmVc1ch7JIy6zCbCU/2lGv0B/7rWXfF8MT7O9jPtFOhJ1DEcd2zhw2n4j9YT3a8OhtnM61LA6ask632mwCOsxpFLTun7AzuR1Cb5mdPHsxhxnCHcXXARa2mJjem0QG1NhwxwJE8sbRDapojexxCvweYlEN40ofwMDSnj/qNt95XIcrk0tiIhGFx0gVNWvAdmZwx+N4mwGPMTAN0AEOFjpgI+ZdB89m+tL/CbEgE1flc8QxUxJhcp5OhH6yR0z9qYOp0nXIbHsIaCiRvt/7LqFRQfheifztWVz4mdQlCdKS9gcOQ09oKicPevKO1L0Ue3cb7Ug7jOpMs+cdh3XokJtUeYEr1NijMHT9+CTAhhO5RToWXIZRon719z3fwoUBNDREATwVFMlVxqSO/pbYgaKminigYbl785S89YYaZ6E5UvaKRHM6KHKMDszs="
              - COVERITY_SCAN_PROJECT_NAME="libbpf"
              - COVERITY_SCAN_NOTIFICATION_EMAIL="${AUTHOR_EMAIL}"
              - COVERITY_SCAN_BRANCH_PATTERN="$TRAVIS_BRANCH"
              # Note: `make -C src/` as a BUILD_COMMAND will not work here
              - COVERITY_SCAN_BUILD_COMMAND_PREPEND="cd src/"
              - COVERITY_SCAN_BUILD_COMMAND="make"
          install:
              - sudo echo 'deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse' >>/etc/apt/sources.list
              - sudo apt-get update
              - sudo apt-get -y build-dep libelf-dev
              - sudo apt-get install -y libelf-dev pkg-config
          script:
              - scripts/coverity.sh || travis_terminate 1
    allow_failures:
        - env: KERNEL=x.x.x