aboutsummaryrefslogtreecommitdiff
path: root/.shippable.yml
blob: d45c14f985c61c68945004fce2c6deff91df50bc (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
language: c
build:
  cache: true
  cache_dir_list:
    - ${SHIPPABLE_BUILD_DIR}/.ccache
    - ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu
  pre_ci_boot:
    image_name: jforissier/optee_os_ci
    image_tag: latest
    pull: true
    options: "-e HOME=/root"
  ci:
    - export LC_ALL=C
    - export CROSS_COMPILE32="ccache arm-linux-gnueabihf-"
    - export CROSS_COMPILE64="ccache aarch64-linux-gnu-"
    - export CCACHE_DIR=${SHIPPABLE_BUILD_DIR}/.ccache
    - function _make() { make -j$(getconf _NPROCESSORS_ONLN) -s $* && ccache -s && ccache -z; }
    - ccache -z

    #
    # Checkpatch
    #

    # Download the Linux checkpatch tool
    - >
      mkdir ${SHIPPABLE_BUILD_DIR}/checkpatch &&
      cd ${SHIPPABLE_BUILD_DIR}/checkpatch &&
      wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/checkpatch.pl &&
      chmod a+x checkpatch.pl &&
      wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/spelling.txt &&
      echo "invalid.struct.name" >const_structs.checkpatch &&
      export PATH=${SHIPPABLE_BUILD_DIR}/checkpatch:${PATH} &&
      source ${SHIPPABLE_BUILD_DIR}/scripts/checkpatch_inc.sh;
    # Run checkpatch on:
    # - the tip of the branch if we're not in a pull request
    # - each commit in the development branch that's not in the target branch otherwise
    # Then, if we have a pull request with more than 1 commit, also check the squashed commits
    # Useful to check if fix-up commits do indeed solve previous checkpatch errors.
    # Note: error reporting is deferred ($checkpatch_failed=1) to avoid stopping the build.
    - echo Checkpatch ;
      cd ${SHIPPABLE_BUILD_DIR} ;
      if [ "$IS_PULL_REQUEST" == "false" ]; then
        echo "Running checkpatch on branch HEAD:";
        checkpatch HEAD || export checkpatch_failed=1;
      else
        echo "Running checkpatch on each patch in pull request:";
        for c in $(git rev-list --reverse $(echo ${SHIPPABLE_COMMIT_RANGE} | sed 's/\.\.\./../')); do
          checkpatch $c || export checkpatch_failed=1;
        done;
      fi;
      if [ "$IS_PULL_REQUEST" == "true" ]; then
        if [ "$(git rev-list --count ${SHIPPABLE_COMMIT_RANGE})" -gt 1 ]; then
          echo "Running checkpatch on gobal diff (squashed commits):";
          checkdiff $(git rev-list ${SHIPPABLE_COMMIT_RANGE} | tail -1) $(git rev-list ${SHIPPABLE_COMMIT_RANGE} | head -1) || export checkpatch_failed=1;
        fi;
      fi;

    #
    # Build tests
    #

    - _make
    - _make CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make CFG_TEE_CORE_LOG_LEVEL=3 DEBUG=1
    - _make CFG_TEE_CORE_LOG_LEVEL=2 DEBUG=1
    - _make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1
    - _make CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=n DEBUG=0
    - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=y DEBUG=1
    - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0
    - _make CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make CFG_TEE_CORE_MALLOC_DEBUG=y
    - _make CFG_CORE_SANITIZE_UNDEFINED=y
    - _make CFG_CORE_SANITIZE_KADDRESS=y
    - _make CFG_CRYPTO=n
    - _make CFG_CRYPTO_{AES,DES}=n
    - _make CFG_CRYPTO_{DSA,RSA,DH}=n
    - _make CFG_CRYPTO_{DSA,RSA,DH,ECC}=n
    - _make CFG_CRYPTO_{H,C,CBC_}MAC=n
    - _make CFG_CRYPTO_{G,C}CM=n
    - _make CFG_CRYPTO_{MD5,SHA{1,224,256,384,512}}=n
    - _make CFG_CRYPTO=n CFG_CRYPTO_ECC=y
    - _make CFG_WITH_PAGER=y
    - _make CFG_WITH_PAGER=y CFG_TEE_CORE_DEBUG=y
    - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y
    - _make CFG_WITH_LPAE=y
    - _make CFG_WITH_STATS=y
    - _make CFG_RPMB_FS=y
    - _make CFG_RPMB_FS=y CFG_RPMB_TESTKEY=y
    - _make CFG_REE_FS=n CFG_RPMB_FS=y
    - _make CFG_WITH_USER_TA=n CFG_CRYPTO=n CFG_SE_API=n CFG_PCSC_PASSTHRU_READER_DRV=n
    - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_PS2MOUSE=y CFG_PL050=y CFG_PL111=y CFG_TEE_CORE_LOG_LEVEL=1 CFG_TEE_CORE_DEBUG=y DEBUG=1
    - _make CFG_WITH_PAGER=y CFG_WITH_LPAE=y CFG_RPMB_FS=y CFG_DT=y CFG_PS2MOUSE=y CFG_PL050=y CFG_PL111=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_CORE_DEBUG=n DEBUG=0
    - _make CFG_BUILT_IN_ARGS=y CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0 CFG_DT_ADDR=0 CFG_DT=y
    - _make CFG_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y
    - _make CFG_SECURE_DATA_PATH=y
    - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y
    - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_WITH_PAGER=y
    - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_RPMB_FS=y
    - _make PLATFORM=vexpress-qemu_armv8a CFG_ARM64_core=y CFG_TA_GPROF_SUPPORT=y CFG_ULIBS_GPROF=y
    - _make PLATFORM=stm-b2260
    - _make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=stm-b2260 CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make PLATFORM=stm-cannes
    - _make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=stm-cannes CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make PLATFORM=vexpress-fvp CFG_ARM32_core=y
    - _make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
    - _make PLATFORM=vexpress-fvp CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y
    - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y
    - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1 CFG_TZC400=y
    - _make PLATFORM=vexpress-fvp CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0 CFG_TZC400=y
    - _make PLATFORM=vexpress-juno
    - _make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=vexpress-juno CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make PLATFORM=vexpress-juno CFG_ARM64_core=y
    - _make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=vexpress-juno CFG_ARM64_core=y CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=sunxi CFG_TEE_CORE_LOG_LEVEL=0 CFG_TEE_TA_LOG_LEVEL=0 DEBUG=0
    - _make PLATFORM=hikey
    - _make PLATFORM=hikey CFG_ARM64_core=y
    - _make PLATFORM=hikey CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=mediatek-mt8173 CFG_ARM64_core=y
    - _make PLATFORM=imx-mx6ulevk ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0x80800000 CFG_DT_ADDR=0x83000000 CFG_DT=y DEBUG=y CFG_TEE_CORE_LOG_LEVEL=4
    - _make PLATFORM=imx-mx6ullevk ARCH=arm CFG_PAGEABLE_ADDR=0 CFG_NS_ENTRY_ADDR=0x80800000 CFG_DT=y DEBUG=y CFG_TEE_CORE_LOG_LEVEL=4
    - _make PLATFORM=imx-mx6qsabrelite
    - _make PLATFORM=imx-mx6qsabresd
    - _make PLATFORM=imx-mx6dlsabresd
    - _make PLATFORM=imx-mx7dsabresd
    - _make PLATFORM=ti-dra7xx
    - _make PLATFORM=ti-am57xx
    - _make PLATFORM=ti-am43xx
    - _make PLATFORM=sprd-sc9860
    - _make PLATFORM=sprd-sc9860 CFG_ARM64_core=y
    - _make PLATFORM=ls-ls1021atwr
    - _make PLATFORM=ls-ls1021aqds
    - _make PLATFORM=ls-ls1043ardb CFG_ARM64_core=y
    - _make PLATFORM=ls-ls1046ardb CFG_ARM64_core=y
    - _make PLATFORM=ls-ls1012ardb CFG_ARM64_core=y
    - _make PLATFORM=zynq7k-zc702
    - _make PLATFORM=zynqmp-zcu102
    - _make PLATFORM=zynqmp-zcu102 CFG_ARM64_core=y
    - _make PLATFORM=d02
    - _make PLATFORM=d02 CFG_ARM64_core=y
    - _make PLATFORM=rcar
    - _make PLATFORM=rcar CFG_ARM64_core=y
    - _make PLATFORM=rpi3
    - _make PLATFORM=rpi3 CFG_ARM64_core=y
    - _make PLATFORM=hikey-hikey960
    - _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y
    - _make PLATFORM=hikey-hikey960 CFG_ARM64_core=y CFG_TEE_TA_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=rockchip-rk322x
    - _make PLATFORM=rockchip-rk322x CFG_TEE_CORE_LOG_LEVEL=4 DEBUG=1
    - _make PLATFORM=sam
    - _make PLATFORM=marvell-armada7k8k CFG_ARM64_core=y

    #
    # Regressions tests (QEMU)
    #

    # Download Google's repo script
    - >
      mkdir -p ${SHIPPABLE_BUILD_DIR}/bin &&
      export PATH=${SHIPPABLE_BUILD_DIR}/bin:${PATH} &&
      curl https://storage.googleapis.com/git-repo-downloads/repo >${SHIPPABLE_BUILD_DIR}/bin/repo &&
      chmod +x ${SHIPPABLE_BUILD_DIR}/bin/repo;
    # Use repo to clone the OP-TEE CI environment for QEMU and link optee_os to the current checkout
    - >
      mkdir -p ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu &&
      rm -rf ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/optee_os &&
      cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu &&
      repo init -u https://github.com/OP-TEE/manifest.git -m travis.xml </dev/null &&
      repo sync -d --force-sync --no-clone-bundle --no-tags --quiet -j 2 &&
      cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/qemu &&
      git submodule update --init dtc &&
      rm -rf ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/optee_os &&
      ln -s ${SHIPPABLE_BUILD_DIR} ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/optee_os;
    # Run xtest in QEMU
    - >
      cd ${SHIPPABLE_BUILD_DIR}/optee_repo_qemu/build &&
      unset CC &&
      make -k clean 2>&1 >/dev/null &&
      ccache -z &&
      make -s -j$(getconf _NPROCESSORS_ONLN) check CROSS_COMPILE="ccache arm-linux-gnueabihf-" AARCH32_CROSS_COMPILE=arm-linux-gnueabihf- DUMP_LOGS_ON_ERROR=1 CFG_RPMB_FS=y CFG_RPMB_WRITE_KEY=y &&
      ccache -s &&
      make -k clean 2>&1 >/dev/null;

    # Make the ci step fail if we had a checkpatch error
    - test -z "${checkpatch_failed}" || (echo "There were checkpatch error(s), please check the 'Checkpatch' section above"; false)