[PATCH 1/1] ci: Add gitlab-ci.yml

Gylstorff Quirin quirin.gylstorff at siemens.com
Fri Sep 4 11:15:12 CEST 2020



On 9/3/20 8:49 PM, Jan Kiszka wrote:
> On 03.09.20 19:51, Gylstorff Quirin wrote:
>>
>>
>> On 9/3/20 4:05 PM, Jan Kiszka wrote:
>>> On 03.09.20 15:57, Q. Gylstorff wrote:
>>>> From: Quirin Gylstorff <quirin.gylstorff at siemens.com>
>>>>
>>>> Derive .gitlab-ci.yml from .travis.yml to allow ci build on
>>>> denx.gitlab.de.
>>>>
>>>> Changes:
>>>>    - The base image is switched to debian:buster.
>>>>
>>>> Signed-off-by: Quirin Gylstorff <quirin.gylstorff at siemens.com>
>>>> ---
>>>>    .gitlab-ci.yml | 254 +++++++++++++++++++++++++++++++++++++++++++++++++
>>>>    1 file changed, 254 insertions(+)
>>>>    create mode 100644 .gitlab-ci.yml
>>>>
>>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>>>> new file mode 100644
>>>> index 000000000..10d9ef8d6
>>>> --- /dev/null
>>>> +++ b/.gitlab-ci.yml
>>>> @@ -0,0 +1,254 @@
>>>> +#
>>>> +# Xenomai Real-Time System
>>>> +#
>>>> +# Copyright (c) Siemens AG, 2020
>>>> +#
>>>> +# Authors:
>>>> +#  Quirin Gylstorff <quirin.gylstorff at siemens.com>
>>>> +#
>>>> +# SPDX-License-Identifier: MIT
>>>> +
>>>> +stages:
>>>> +  - build
>>>> +
>>>> +default:
>>>> +  image: debian:buster
>>>> +
>>>> +variables:
>>>> +  GIT_STRATEGY: clone
>>>> +  KDIR: "/tmp/kernel"
>>>> +  USE_CCACHE: "1"
>>>> +  CCACHE_MAXSIZE: "400M"
>>>> +  IPIPE_MIRROR_URL: "https://gitlab.denx.de/Xenomai"
>>>> +  PACKAGES: "gcc-8 gcc-8-aarch64-linux-gnu libc6-dev-arm64-cross \
>>>> +             gcc-8-arm-linux-gnueabihf libc6-dev-armhf-cross \
>>>> +             gcc-8-powerpc-linux-gnu libc6-dev-powerpc-cross  \
>>>> +             u-boot-tools git make bc bison libelf-dev autotools-dev \
>>>> +             autoconf autogen libtool pkg-config ccache flex
>>>> libssl-dev"
>>>> +
>>>> +.build:
>>>> +  stage: build
>>>> +  before_script:
>>>> +    - apt update
>>>> +    - apt install -y ${PACKAGES}
>>>> +    - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800
>>>> +    - update-alternatives --install /usr/bin/aarch64-linux-gnu-gcc
>>>> aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-8 800
>>>> +    - update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc
>>>> arm-linux-gnueabihf-gcc /usr/bin/arm-linux-gnueabihf-gcc-8 800
>>>> +    - update-alternatives --install /usr/bin/powerpc-linux-gnu-gcc
>>>> powerpc-linux-gnu-gcc /usr/bin/powerpc-linux-gnu-gcc-8 800
>>>> +    - REV=$(git ls-remote --tags --refs ${IPIPE_KERNEL} | sed
>>>> "s|.*[[:space:]]refs/tags/||" | grep "${IPIPE_REV}" | sort -r -n -t -
>>>> -k 5 -k 6 | head -1)
>>>> +    - test -n "${REV}" || REV="${IPIPE_REV}"
>>>> +    - echo $?
>>>> +    - git clone --depth 1 --branch ${REV} ${IPIPE_KERNEL} ${KDIR}
>>>> +    - case "${ARCH}" in
>>>> +      "arm64")
>>>> +      export CROSS_COMPILE=aarch64-linux-gnu-
>>>> +      export CONFIGURE_OPTS="--host=aarch64-linux-gnu
>>>> --with-cc=aarch64-linux-gnu-gcc"
>>>> +      ;;
>>>> +      "arm")
>>>> +      export CROSS_COMPILE=arm-linux-gnueabihf-
>>>> +      export CONFIGURE_OPTS="--host=arm-linux-gnueabihf
>>>> --with-cc=arm-linux-gnueabihf-gcc"
>>>> +      ;;
>>>> +      "powerpc")
>>>> +      export CROSS_COMPILE=powerpc-linux-gnu-
>>>> +      export CONFIGURE_OPTS="--host=powerpc-linux-gnu
>>>> --with-cc=powerpc-linux-gnu-gcc"
>>>> +      ;;
>>>> +      "x86")
>>>> +      export CROSS_COMPILE=
>>>> +      export CONFIGURE_OPTS="--enable-dlopen-libs
>>>> --enable-lazy-setsched"
>>>> +      ;;
>>>> +      esac
>>>> +    - mkdir ~/ccache
>>>> +    - ln -s /usr/bin/ccache ~/ccache/aarch64-linux-gnu-gcc
>>>> +    - ln -s /usr/bin/ccache ~/ccache/arm-linux-gnueabihf-gcc
>>>> +    - ln -s /usr/bin/ccache ~/ccache/powerpc-linux-gnu-gcc
>>>> +    - export PATH=~/ccache:$PATH
>>>> +    - ${CROSS_COMPILE}gcc --version
>>>> +
>>>> +  script:
>>>> +    - pushd ${KDIR}
>>>> +    - make -j $(nproc) ${KERNEL_DEFCONFIG}
>>>> +    # Generic settings
>>>> +    - ./scripts/config -d DEBUG_INFO
>>>> +    # I-pipe and Xenomai settings
>>>> +    - ./scripts/config -e IPIPE
>>>> +    - ./scripts/config -e XENOMAI
>>>> +    - ./scripts/config -e XENO_OPT_SCHED_CLASSES
>>>> +    - ./scripts/config -e XENO_OPT_SCHED_WEAK
>>>> +    - ./scripts/config -e XENO_OPT_SCHED_TP
>>>> +    - ./scripts/config -e XENO_OPT_SCHED_SPORADIC
>>>> +    - ./scripts/config -e XENO_OPT_SCHED_QUOTA
>>>> +    - ./scripts/config -e XENO_OPT_SHIRQ
>>>> +    - ./scripts/config -e XENO_OPT_SCALABLE_SCHED
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_COBALT
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_MEMORY
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_CONTEXT
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_USER
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_LEGACY
>>>> +    - ./scripts/config -e XENO_OPT_DEBUG_TRACE_RELAX
>>>> +    - ./scripts/config -e XENO_DRIVERS_16550A
>>>> +    - ./scripts/config -e XENO_DRIVERS_16550A_ANY
>>>> +    - ./scripts/config -e XENO_DRIVERS_16550A_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_16550A_PCI_MOXA
>>>> +    - ./scripts/config -e XENO_DRIVERS_IMX_UART
>>>> +    - ./scripts/config -e XENO_DRIVERS_RTDMTEST
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_LOOPBACK
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_VIRT
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_FLEXCAN
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_ISA
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_MEM
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_PEAK_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_IXXAT_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_ADV_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_PLX_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_EMS_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_ESD_PCI
>>>> +    - ./scripts/config -e XENO_DRIVERS_CAN_SJA1000_PEAK_DNG
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET
>>>> +    - ./scripts/config -e XENO_DRIVERS_RTNET_CHECKED
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_ETH_P_ALL
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_RTIPV4_NETROUTING
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_RTIPV4_ROUTER
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_RTIPV4_DEBUG
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_RTIPV4_TCP
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_RTIPV4_TCP_ERROR_INJECTION
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_NOMAC
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_RTCFG_DEBUG
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_PCNET32
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_TULIP
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_DRV_EEPRO100_DBG
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_E1000E
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_NATSEMI
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_VIA_RHINE
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_IGB
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_R8169
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_SMC91111
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_EXP_DRIVERS
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_3C59X
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_E1000_NEW
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_DRV_RT2500
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_ADDON_RTCAP
>>>> +    - ./scripts/config -m XENO_DRIVERS_NET_ADDON_PROXY
>>>> +    - ./scripts/config -e XENO_DRIVERS_NET_ADDON_PROXY_ARP
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY_DEBUG
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY_DEBUG_FTRACE
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY_FAKE
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY_NI_PCIMIO
>>>> +    - ./scripts/config -e XENO_DRIVERS_ANALOGY_S526
>>>> +    - ./scripts/config -e XENO_DRIVERS_RTIPC
>>>> +    - ./scripts/config -e XENO_DRIVERS_UDD
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_BCM2835
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_MXC
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_SUN8I_H3
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_ZYNQ7000
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_XILINX
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_OMAP
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIO_DEBUG
>>>> +    - ./scripts/config -e XENO_DRIVERS_GPIOPWM
>>>> +    - ./scripts/config -e XENO_DRIVERS_SPI_BCM2835
>>>> +    - ./scripts/config -e XENO_DRIVERS_SPI_SUN6I
>>>> +    - ./scripts/config -e XENO_DRIVERS_SPI_OMAP2_MCSPI_RT
>>>> +    - ./scripts/config -e XENO_DRIVERS_SPI_DEBUG
>>>> +    - popd
>>>> +    - scripts/prepare-kernel.sh --arch=${ARCH} --linux=${KDIR}
>>>> +    - pushd ${KDIR}
>>>> +    - make -j $(nproc) olddefconfig
>>>> +    - make -j $(nproc) all
>>>> +    - popd
>>>> +    - scripts/bootstrap
>>>> +    - ./configure --enable-smp ${CONFIGURE_OPTS}
>>>> +    - make -j $(nproc)
>>>> +    - ccache -s
>>>> +
>>>> +
>>>> +arm-4.19-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: arm
>>>> +    IPIPE_REV: ipipe-core-4.19..*-arm-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-arm.git
>>>> +    KERNEL_DEFCONFIG: multi_v7_defconfig
>>>> +
>>>> +arm-4.14-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: arm
>>>> +    IPIPE_REV: ipipe-core-4.14..*-arm-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-arm.git
>>>> +    KERNEL_DEFCONFIG: multi_v7_defconfig
>>>> +
>>>> +arm-4.4-cip-head:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: arm
>>>> +    IPIPE_REV: ipipe-4.4.y-cip
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe.git
>>>> +    KERNEL_DEFCONFIG: multi_v7_defconfig
>>>> +
>>>> +arm64-4.19-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: arm64
>>>> +    IPIPE_REV: ipipe-core-4.19..*-arm64-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-arm64.git
>>>> +    KERNEL_DEFCONFIG: defconfig
>>>> +
>>>> +arm64-4.14-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: arm64
>>>> +    IPIPE_REV: ipipe-core-4.14..*-arm64-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-arm64.git
>>>> +    KERNEL_DEFCONFIG: defconfig
>>>> +
>>>> +x86-4.19-cip-head:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: x86
>>>> +    IPIPE_REV: ipipe-x86-4.19.y-cip
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-x86.git
>>>> +    KERNEL_DEFCONFIG: x86_64_defconfig
>>>> +
>>>> +x86-4.19-cip-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: x86
>>>> +    IPIPE_REV: ipipe-core-4.19..*cip.*-x86-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-x86.git
>>>> +    KERNEL_DEFCONFIG: x86_64_defconfig
>>>> +
>>>> +x86-4.14-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: x86
>>>> +    IPIPE_REV: ipipe-core-4.14..*-x86-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-x86.git
>>>> +    KERNEL_DEFCONFIG: x86_64_defconfig
>>>> +
>>>> +x86-4.4-cip-head:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: x86
>>>> +    IPIPE_REV: ipipe-4.4.y-cip
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe.git
>>>> +    KERNEL_DEFCONFIG: x86_64_defconfig
>>>> +
>>>> +x86-4.4-cip-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +     ARCH: x86
>>>> +     IPIPE_REV: ipipe-core-4.4..*-cip.*-x86-.*
>>>> +     IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe.git
>>>> +     KERNEL_DEFCONFIG: x86_64_defconfig
>>>> +
>>>> +powerpc-4.19-release:
>>>> +  extends: .build
>>>> +  variables:
>>>> +    ARCH: powerpc
>>>> +    IPIPE_REV: ipipe-core-4.19..*-ppc32-.*
>>>> +    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-ppc32.git
>>>> +    KERNEL_DEFCONFIG: mpc5200_defconfig
>>>>
>>>
>>> Great! Except that we should either drop .travis-ci.yml or try to factor
>>> out the common parts.
>>>
>>> Is there any chance to do the latter, specifically to avoid that we need
>>> to change two files for adding one new kernel version? If not, we should
>>> bury Travis after testing gitlab for a while.
>>>
>>> Do you have a link to a test run at hand?
>>
>> Yes here is a link[1] to the run. I need to send a v2 as the cip builds
>> are not that stable and fail more than the are successful. Something
>> with the version. I will try to get the travis and gitlab configs merge.
>> Should be possible with some kind of include or move them to scripts.
>>
>> [1]:https://gitlab.com/Quirin.Gy/xenomai/-/pipelines/185329147
>>
> 
> It's the HEAD builds that are failing - do you happen to miss git in the
> build container at that stage?

No different git versions and commandline :-(

On Debian you need to add --head to get the heads.

Quirin
> 
> Jan
> 



More information about the Xenomai mailing list