Add gitlab-CI support
PATCH v3 1/1 Add gitlab-CI support
The buildroot repository is now mirrored on
https://gitlab.com/buildroot.org/buildroot so we can use Gitlab-CI to test Buildroot. Gitlab-CI is controlled by a .gitlab-ci.yml file that exists in the repository.
For now, the only test is building all defconfigs (inspired on
https://travis-ci.org/buildroot/buildroot-defconfig-testing/). Since all the defconfigs have to be specified in the .gitlab-ci.yml file, we generate the file based on .gitlab-ci.yml.in. The generated .gitlab-ci.yml file has to be committed into the repository, though, otherwise Gitlab-CI doesn't see it. So there is also a test to verify that .gitlab-ci.yml is up-to-date.
Building all the defconfigs takes a long time. Gitlab-CI will do that every time it pulls from git.buildroot.org, which is once per hour. That is way too often. Therefore, the defconfigs are not built on pull, but only on explicit trigger through the API or when a tag is added.
---
v3: - check-gitlab-ci.yml: make sure .gitlab-ci.yml doesn't exist, so it
is really regenerated.
- Factor defconfig_script in a separate anchor, for easy testing of a limited set of defconfigs.
- fix typo (Marcus)
- install packages with --no-install-recommends (Marcus)
- explicitly add ca-certificates, rsync and file packages (Marcus)
v2: Remove the custom before-script for check-gitlab-ci.yml.
'make' is needed, so most of the rest of the before script is needed as well, so it's not so useful to avoid it.
I pushed to my private buildroot clone on gitlab and triggered a build. See https://gitlab.com/arnout/buildroot/pipelines/6435620
I think it would be useful to still apply this to master.
--- .gitlab-ci.yml | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml.in | 52 +++++++++++++++ Makefile | 3 + 3 files changed, 248 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab-ci.yml.in
.gitlab-ci.yml new file +193 -0
@@ -0,0 +1,193 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: debian:stable + +before_script: + - dpkg --add-architecture i386 + # The container has not package lists, so need to update first + - apt-get update -qq + - apt-get install -y -qq --no-install-recommends + build-essential locales bc ca-certificates file rsync + git bzr cvs mercurial subversion libc6:i386 unzip wget cpio + # To be able to generate a toolchain with locales, enable one UTF-8 locale + - sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen + - /usr/sbin/locale-gen + +.defconfig_script: &defconfig_script + - echo 'Configure Buildroot' + - make ${CI_BUILD_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +check-gitlab-ci.yml: + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +.defconfig: &defconfig + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + script: *defconfig_script + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + +acmesystems_aria_g25_128mb_defconfig: *defconfig +acmesystems_aria_g25_256mb_defconfig: *defconfig +acmesystems_arietta_g25_128mb_defconfig: *defconfig +acmesystems_arietta_g25_256mb_defconfig: *defconfig +altera_socdk_defconfig: *defconfig +altera_sockit_defconfig: *defconfig +arcturus_ucp1020_defconfig: *defconfig +arm_foundationv8_defconfig: *defconfig +arm_juno_defconfig: *defconfig +armadeus_apf27_defconfig: *defconfig +armadeus_apf28_defconfig: *defconfig +armadeus_apf51_defconfig: *defconfig +armadeus_apf9328_defconfig: *defconfig +at91sam9260eknf_defconfig: *defconfig +at91sam9g20dfc_defconfig: *defconfig +at91sam9g45m10ek_defconfig: *defconfig +at91sam9rlek_defconfig: *defconfig +at91sam9x5ek_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3_xplained_defconfig: *defconfig +atmel_sama5d3_xplained_dev_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3xek_defconfig: *defconfig +atmel_sama5d4_xplained_defconfig: *defconfig +atmel_sama5d4_xplained_dev_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig +beagleboardx15_defconfig: *defconfig +beaglebone_defconfig: *defconfig +beaglebone_qt5_defconfig: *defconfig +chromebook_snow_defconfig: *defconfig +ci20_defconfig: *defconfig +cubieboard2_defconfig: *defconfig +firefly_rk3288_defconfig: *defconfig +firefly_rk3288_demo_defconfig: *defconfig +freescale_imx28evk_defconfig: *defconfig +freescale_imx31_3stack_defconfig: *defconfig +freescale_imx6dlsabreauto_defconfig: *defconfig +freescale_imx6dlsabresd_defconfig: *defconfig +freescale_imx6qsabreauto_defconfig: *defconfig +freescale_imx6qsabresd_defconfig: *defconfig +freescale_imx6sololiteevk_defconfig: *defconfig +freescale_imx6sxsabresd_defconfig: *defconfig +freescale_imx6ulevk_defconfig: *defconfig +freescale_imx7dsabresd_defconfig: *defconfig +freescale_mpc8315erdb_defconfig: *defconfig +freescale_p1010rdb_pa_defconfig: *defconfig +galileo_defconfig: *defconfig +gdb_bfin_bf512_defconfig: *defconfig +grinn_chiliboard_defconfig: *defconfig +grinn_liteboard_defconfig: *defconfig +imx23evk_defconfig: *defconfig +imx6q-sabresd_defconfig: *defconfig +imx6ulpico_defconfig: *defconfig +lego_ev3_defconfig: *defconfig +linksprite_pcduino_defconfig: *defconfig +minnowboard_defconfig: *defconfig +minnowboard_max-graphical_defconfig: *defconfig +minnowboard_max_defconfig: *defconfig +mx25pdk_defconfig: *defconfig +mx51evk_defconfig: *defconfig +mx53loco_defconfig: *defconfig +mx6cubox_defconfig: *defconfig +mx6sx_udoo_neo_defconfig: *defconfig +mx6udoo_defconfig: *defconfig +nanopi_neo_defconfig: *defconfig +nitrogen6sx_defconfig: *defconfig +nitrogen6x_defconfig: *defconfig +nitrogen7_defconfig: *defconfig +odroidc2_defconfig: *defconfig +olimex_a20_olinuxino_lime2_defconfig: *defconfig +olimex_a20_olinuxino_lime_defconfig: *defconfig +olimex_a20_olinuxino_lime_mali_defconfig: *defconfig +olimex_a20_olinuxino_micro_defconfig: *defconfig +olimex_imx233_olinuxino_defconfig: *defconfig +openblocks_a6_defconfig: *defconfig +orangepi_one_defconfig: *defconfig +orangepi_pc_defconfig: *defconfig +pandaboard_defconfig: *defconfig +pc_x86_64_bios_defconfig: *defconfig +pc_x86_64_efi_defconfig: *defconfig +qemu_aarch64_virt_defconfig: *defconfig +qemu_arm_versatile_defconfig: *defconfig +qemu_arm_versatile_nommu_defconfig: *defconfig +qemu_arm_vexpress_defconfig: *defconfig +qemu_m68k_mcf5208_defconfig: *defconfig +qemu_m68k_q800_defconfig: *defconfig +qemu_microblazebe_mmu_defconfig: *defconfig +qemu_microblazeel_mmu_defconfig: *defconfig +qemu_mips32r2_malta_defconfig: *defconfig +qemu_mips32r2el_malta_defconfig: *defconfig +qemu_mips32r6_malta_defconfig: *defconfig +qemu_mips32r6el_malta_defconfig: *defconfig +qemu_mips64_malta_defconfig: *defconfig +qemu_mips64el_malta_defconfig: *defconfig +qemu_mips64r6_malta_defconfig: *defconfig +qemu_mips64r6el_malta_defconfig: *defconfig +qemu_nios2_10m50_defconfig: *defconfig +qemu_or1k_defconfig: *defconfig +qemu_ppc64_pseries_defconfig: *defconfig +qemu_ppc_g3beige_defconfig: *defconfig +qemu_ppc_mpc8544ds_defconfig: *defconfig +qemu_ppc_virtex_ml507_defconfig: *defconfig +qemu_sh4_r2d_defconfig: *defconfig +qemu_sh4eb_r2d_defconfig: *defconfig +qemu_sparc64_sun4u_defconfig: *defconfig +qemu_sparc_ss10_defconfig: *defconfig +qemu_x86_64_defconfig: *defconfig +qemu_x86_defconfig: *defconfig +qemu_xtensa_lx60_defconfig: *defconfig +qemu_xtensa_lx60_nommu_defconfig: *defconfig +raspberrypi0_defconfig: *defconfig +raspberrypi2_defconfig: *defconfig +raspberrypi3_defconfig: *defconfig +raspberrypi_defconfig: *defconfig +riotboard_defconfig: *defconfig +roseapplepi_defconfig: *defconfig +s6lx9_microboard_defconfig: *defconfig +sheevaplug_defconfig: *defconfig +snps_aarch64_vdk_defconfig: *defconfig +snps_archs38_vdk_defconfig: *defconfig +snps_archs38_zebu_defconfig: *defconfig +snps_axs101_defconfig: *defconfig +snps_axs103_defconfig: *defconfig +stm32f429_disco_defconfig: *defconfig +stm32f469_disco_defconfig: *defconfig +telit_evk_pro3_defconfig: *defconfig +toradex_apalis_imx6_defconfig: *defconfig +ts4800_defconfig: *defconfig +ts4900_defconfig: *defconfig +ts5x00_defconfig: *defconfig +via_imx6_vab820_defconfig: *defconfig +wandboard_defconfig: *defconfig +warp7_defconfig: *defconfig +warpboard_defconfig: *defconfig +zynq_microzed_defconfig: *defconfig +zynq_zc706_defconfig: *defconfig +zynq_zed_defconfig: *defconfig +zynq_zybo_defconfig: *defconfig
.gitlab-ci.yml.in new file +52 -0
52 lines not on this page · raw message
Makefile +3 -0
@@ -1066,6 +1066,9 @@ release: print-version: @echo $(BR2_VERSION_FULL) +.gitlab-ci.yml: .gitlab-ci.yml.in configs/*_defconfig + (cd configs; ls -1 *_defconfig) | sed 's/$$/: *defconfig/' | cat $< - > $@ + include docs/manual/manual.mk -include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(dir)/docs/*/*.mk)
Signature · 1 line
2.11.0
PATCH v3 1/1 Add gitlab-CI support
Dear Arnout,
the typo is not quite fixed, I believe ;-).
See below.
Quoted 51 lines · Arnout Vandecappelle (Essensium/Mind)
The buildroot repository is now mirrored on
https://gitlab.com/buildroot.org/buildroot so we can use Gitlab-CI to test Buildroot. Gitlab-CI is controlled by a .gitlab-ci.yml file that exists in the repository.For now, the only test is building all defconfigs (inspired on
https://travis-ci.org/buildroot/buildroot-defconfig-testing/). Since all the defconfigs have to be specified in the .gitlab-ci.yml file, we generate the file based on .gitlab-ci.yml.in. The generated .gitlab-ci.yml file has to be committed into the repository, though, otherwise Gitlab-CI doesn't see it. So there is also a test to verify that .gitlab-ci.yml is up-to-date.Building all the defconfigs takes a long time. Gitlab-CI will do that every time it pulls from git.buildroot.org, which is once per hour. That is way too often. Therefore, the defconfigs are not built on pull, but only on explicit trigger through the API or when a tag is added.
---
v3: - check-gitlab-ci.yml: make sure .gitlab-ci.yml doesn't exist, so it
is really regenerated.
- Factordefconfig_scriptin a separate anchor, for easy testing of a limited set of defconfigs.
- fix typo (Marcus)
- install packages with --no-install-recommends (Marcus)
- explicitly add ca-certificates, rsync and file packages (Marcus)v2: Remove the custom before-script for check-gitlab-ci.yml.
'make' is needed, so most of the rest of the before script is needed as well, so it's not so useful to avoid it.I pushed to my private buildroot clone on gitlab and triggered a build. See https://gitlab.com/arnout/buildroot/pipelines/6435620
I think it would be useful to still apply this to master.
--- .gitlab-ci.yml | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml.in | 52 +++++++++++++++ Makefile | 3 + 3 files changed, 248 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab-ci.yml.in.gitlab-ci.yml new file +1
-0@@ -0,0 +1,193 @@ +# Configuration for Gitlab-CI.
.gitlab-ci.yml line 11
Quoted 10 lines
.gitlab-ci.yml new file +10
-0+# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: debian:stable + +before_script: + - dpkg --add-architecture i386 + # The container has not package lists, so need to update first
Should be be 'no' instead of not here.
Quoted 246 lines
.gitlab-ci.yml new file +182
-0+ - apt-get update -qq + - apt-get install -y -qq --no-install-recommends + build-essential locales bc ca-certificates file rsync + git bzr cvs mercurial subversion libc6:i386 unzip wget cpio + # To be able to generate a toolchain with locales, enable one UTF-8 locale + - sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen + - /usr/sbin/locale-gen + +.defconfig_script: &defconfig_script + - echo 'Configure Buildroot' + - make ${CI_BUILD_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +check-gitlab-ci.yml: + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +.defconfig: &defconfig + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + script: *defconfig_script + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + +acmesystems_aria_g25_128mb_defconfig: *defconfig +acmesystems_aria_g25_256mb_defconfig: *defconfig +acmesystems_arietta_g25_128mb_defconfig: *defconfig +acmesystems_arietta_g25_256mb_defconfig: *defconfig +altera_socdk_defconfig: *defconfig +altera_sockit_defconfig: *defconfig +arcturus_ucp1020_defconfig: *defconfig +arm_foundationv8_defconfig: *defconfig +arm_juno_defconfig: *defconfig +armadeus_apf27_defconfig: *defconfig +armadeus_apf28_defconfig: *defconfig +armadeus_apf51_defconfig: *defconfig +armadeus_apf9328_defconfig: *defconfig +at91sam9260eknf_defconfig: *defconfig +at91sam9g20dfc_defconfig: *defconfig +at91sam9g45m10ek_defconfig: *defconfig +at91sam9rlek_defconfig: *defconfig +at91sam9x5ek_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3_xplained_defconfig: *defconfig +atmel_sama5d3_xplained_dev_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3xek_defconfig: *defconfig +atmel_sama5d4_xplained_defconfig: *defconfig +atmel_sama5d4_xplained_dev_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig +beagleboardx15_defconfig: *defconfig +beaglebone_defconfig: *defconfig +beaglebone_qt5_defconfig: *defconfig +chromebook_snow_defconfig: *defconfig +ci20_defconfig: *defconfig +cubieboard2_defconfig: *defconfig +firefly_rk3288_defconfig: *defconfig +firefly_rk3288_demo_defconfig: *defconfig +freescale_imx28evk_defconfig: *defconfig +freescale_imx31_3stack_defconfig: *defconfig +freescale_imx6dlsabreauto_defconfig: *defconfig +freescale_imx6dlsabresd_defconfig: *defconfig +freescale_imx6qsabreauto_defconfig: *defconfig +freescale_imx6qsabresd_defconfig: *defconfig +freescale_imx6sololiteevk_defconfig: *defconfig +freescale_imx6sxsabresd_defconfig: *defconfig +freescale_imx6ulevk_defconfig: *defconfig +freescale_imx7dsabresd_defconfig: *defconfig +freescale_mpc8315erdb_defconfig: *defconfig +freescale_p1010rdb_pa_defconfig: *defconfig +galileo_defconfig: *defconfig +gdb_bfin_bf512_defconfig: *defconfig +grinn_chiliboard_defconfig: *defconfig +grinn_liteboard_defconfig: *defconfig +imx23evk_defconfig: *defconfig +imx6q-sabresd_defconfig: *defconfig +imx6ulpico_defconfig: *defconfig +lego_ev3_defconfig: *defconfig +linksprite_pcduino_defconfig: *defconfig +minnowboard_defconfig: *defconfig +minnowboard_max-graphical_defconfig: *defconfig +minnowboard_max_defconfig: *defconfig +mx25pdk_defconfig: *defconfig +mx51evk_defconfig: *defconfig +mx53loco_defconfig: *defconfig +mx6cubox_defconfig: *defconfig +mx6sx_udoo_neo_defconfig: *defconfig +mx6udoo_defconfig: *defconfig +nanopi_neo_defconfig: *defconfig +nitrogen6sx_defconfig: *defconfig +nitrogen6x_defconfig: *defconfig +nitrogen7_defconfig: *defconfig +odroidc2_defconfig: *defconfig +olimex_a20_olinuxino_lime2_defconfig: *defconfig +olimex_a20_olinuxino_lime_defconfig: *defconfig +olimex_a20_olinuxino_lime_mali_defconfig: *defconfig +olimex_a20_olinuxino_micro_defconfig: *defconfig +olimex_imx233_olinuxino_defconfig: *defconfig +openblocks_a6_defconfig: *defconfig +orangepi_one_defconfig: *defconfig +orangepi_pc_defconfig: *defconfig +pandaboard_defconfig: *defconfig +pc_x86_64_bios_defconfig: *defconfig +pc_x86_64_efi_defconfig: *defconfig +qemu_aarch64_virt_defconfig: *defconfig +qemu_arm_versatile_defconfig: *defconfig +qemu_arm_versatile_nommu_defconfig: *defconfig +qemu_arm_vexpress_defconfig: *defconfig +qemu_m68k_mcf5208_defconfig: *defconfig +qemu_m68k_q800_defconfig: *defconfig +qemu_microblazebe_mmu_defconfig: *defconfig +qemu_microblazeel_mmu_defconfig: *defconfig +qemu_mips32r2_malta_defconfig: *defconfig +qemu_mips32r2el_malta_defconfig: *defconfig +qemu_mips32r6_malta_defconfig: *defconfig +qemu_mips32r6el_malta_defconfig: *defconfig +qemu_mips64_malta_defconfig: *defconfig +qemu_mips64el_malta_defconfig: *defconfig +qemu_mips64r6_malta_defconfig: *defconfig +qemu_mips64r6el_malta_defconfig: *defconfig +qemu_nios2_10m50_defconfig: *defconfig +qemu_or1k_defconfig: *defconfig +qemu_ppc64_pseries_defconfig: *defconfig +qemu_ppc_g3beige_defconfig: *defconfig +qemu_ppc_mpc8544ds_defconfig: *defconfig +qemu_ppc_virtex_ml507_defconfig: *defconfig +qemu_sh4_r2d_defconfig: *defconfig +qemu_sh4eb_r2d_defconfig: *defconfig +qemu_sparc64_sun4u_defconfig: *defconfig +qemu_sparc_ss10_defconfig: *defconfig +qemu_x86_64_defconfig: *defconfig +qemu_x86_defconfig: *defconfig +qemu_xtensa_lx60_defconfig: *defconfig +qemu_xtensa_lx60_nommu_defconfig: *defconfig +raspberrypi0_defconfig: *defconfig +raspberrypi2_defconfig: *defconfig +raspberrypi3_defconfig: *defconfig +raspberrypi_defconfig: *defconfig +riotboard_defconfig: *defconfig +roseapplepi_defconfig: *defconfig +s6lx9_microboard_defconfig: *defconfig +sheevaplug_defconfig: *defconfig +snps_aarch64_vdk_defconfig: *defconfig +snps_archs38_vdk_defconfig: *defconfig +snps_archs38_zebu_defconfig: *defconfig +snps_axs101_defconfig: *defconfig +snps_axs103_defconfig: *defconfig +stm32f429_disco_defconfig: *defconfig +stm32f469_disco_defconfig: *defconfig +telit_evk_pro3_defconfig: *defconfig +toradex_apalis_imx6_defconfig: *defconfig +ts4800_defconfig: *defconfig +ts4900_defconfig: *defconfig +ts5x00_defconfig: *defconfig +via_imx6_vab820_defconfig: *defconfig +wandboard_defconfig: *defconfig +warp7_defconfig: *defconfig +warpboard_defconfig: *defconfig +zynq_microzed_defconfig: *defconfig +zynq_zc706_defconfig: *defconfig +zynq_zed_defconfig: *defconfig +zynq_zybo_defconfig: *defconfig.gitlab-ci.yml.in new file +52
-0@@ -0,0 +1,52 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: debian:stable + +before_script: + - dpkg --add-architecture i386 + # The container has not package lists, so need to update first + - apt-get update -qq + - apt-get install -y -qq --no-install-recommends + build-essential locales bc ca-certificates file rsync + git bzr cvs mercurial subversion libc6:i386 unzip wget cpio + # To be able to generate a toolchain with locales, enable one UTF-8 locale + - sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen + - /usr/sbin/locale-gen + +.defconfig_script: &defconfig_script + - echo 'Configure Buildroot' + - make ${CI_BUILD_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +check-gitlab-ci.yml: + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +.defconfig: &defconfig + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + script: *defconfig_script + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt +Makefile +0
-0
Makefile release: · line 1074
Quoted 9 lines
Makefile +3
-0@@ -1066,6 +1066,9 @@ release: print-version: @echo $(BR2_VERSION_FULL) +.gitlab-ci.yml: .gitlab-ci.yml.in configs/*_defconfig + (cd configs; ls -1 *_defconfig) | sed 's/$$/: *defconfig/' | cat $< - > $@ + include docs/manual/manual.mk -include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(dir)/docs/*/*.mk)
Best wishes,
Marcus
PATCH v3 1/1 Add gitlab-CI support
Quoted 40 lines · Marcus Hoffmann
Dear Arnout,
the typo is not quite fixed, I believe ;-).
See below.Quoted 34 lines · Arnout Vandecappelle (Essensium/Mind)
The buildroot repository is now mirrored on
https://gitlab.com/buildroot.org/buildroot so we can use Gitlab-CI to test Buildroot. Gitlab-CI is controlled by a .gitlab-ci.yml file that exists in the repository.For now, the only test is building all defconfigs (inspired on
https://travis-ci.org/buildroot/buildroot-defconfig-testing/). Since all the defconfigs have to be specified in the .gitlab-ci.yml file, we generate the file based on .gitlab-ci.yml.in. The generated .gitlab-ci.yml file has to be committed into the repository, though, otherwise Gitlab-CI doesn't see it. So there is also a test to verify that .gitlab-ci.yml is up-to-date.Building all the defconfigs takes a long time. Gitlab-CI will do that every time it pulls from git.buildroot.org, which is once per hour. That is way too often. Therefore, the defconfigs are not built on pull, but only on explicit trigger through the API or when a tag is added.
---
v3: - check-gitlab-ci.yml: make sure .gitlab-ci.yml doesn't exist, so it
is really regenerated.
- Factordefconfig_scriptin a separate anchor, for easy testing of a limited set of defconfigs.
- fix typo (Marcus)
- install packages with --no-install-recommends (Marcus)
- explicitly add ca-certificates, rsync and file packages (Marcus)v2: Remove the custom before-script for check-gitlab-ci.yml.
'make' is needed, so most of the rest of the before script is needed as well, so it's not so useful to avoid it.I pushed to my private buildroot clone on gitlab and triggered a build. See https://gitlab.com/arnout/buildroot/pipelines/6435620
I forgot to trigger a new build and post the new URL:
https://gitlab.com/arnout/buildroot/pipelines/6502273
Quoted 21 lines
Quoted 21 lines
I think it would be useful to still apply this to master.
--- .gitlab-ci.yml | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml.in | 52 +++++++++++++++ Makefile | 3 + 3 files changed, 248 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab-ci.yml.in.gitlab-ci.yml new file +5
-0@@ -0,0 +1,193 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml".
Quoted 8 lines
.gitlab-ci.yml line 11
Quoted 6 lines
.gitlab-ci.yml new file +6
-0+ +image: debian:stable + +before_script: + - dpkg --add-architecture i386 + # The container has not package lists, so need to update firstShould be be 'no' instead of not here.
D'oh. Can that be fixed up while committing?
Regards,
Arnout
Quoted 9 lines
Quoted 9 lines
.gitlab-ci.yml new file +8
-0+ - apt-get update -qq + - apt-get install -y -qq --no-install-recommends + build-essential locales bc ca-certificates file rsync + git bzr cvs mercurial subversion libc6:i386 unzip wget cpio + # To be able to generate a toolchain with locales, enable one UTF-8 locale + - sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen + - /usr/sbin/locale-gen +
[snip]
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v3 1/1 Add gitlab-CI support
In reply to Arnout Vandecappelle (Essensium/Mind)Hello,
Quoted 4 lines · Arnout Vandecappelle (Essensium/Mind)
The buildroot repository is now mirrored on
https://gitlab.com/buildroot.org/buildroot so we can use Gitlab-CI to test Buildroot. Gitlab-CI is controlled by a .gitlab-ci.yml file that exists in the repository.
I've applied with some minor changes (see below).
Quoted 4 lines
Building all the defconfigs takes a long time. Gitlab-CI will do that every time it pulls from git.buildroot.org, which is once per hour. That is way too often. Therefore, the defconfigs are not built on pull, but only on explicit trigger through the API or when a tag is added.
What is the next step now? Who is going to run in a cronjob the thing that triggers the build? Can we setup a notification on the mailing list and/or IRC when there is a failure?
Quoted 1 line
+ # The container has not package lists, so need to update first
I've fixed the typo not -> no, as noticed by Marcus.
Makefile release: · line 1070
Quoted 2 lines
+.gitlab-ci.yml: .gitlab-ci.yml.in configs/*_defconfig
Makefile +1
-0+ (cd configs; ls -1 *_defconfig) | sed 's/$$/: *defconfig/' | cat $< - > $@
I've added LC_ALL=C when calling ls -1, because I did not had the same order as yours when regenerating the list of defconfigs. Apparently, depending on the locales armadeus is before or after arm_.
And I've regenerated the list of defconfigs before pushing, of course.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v3 1/1 Add gitlab-CI support
Quoted 13 lines · Thomas Petazzoni
Hello,
Quoted 4 lines · Arnout Vandecappelle (Essensium/Mind)
The buildroot repository is now mirrored on
https://gitlab.com/buildroot.org/buildroot so we can use Gitlab-CI to test Buildroot. Gitlab-CI is controlled by a .gitlab-ci.yml file that exists in the repository.I've applied with some minor changes (see below).
Quoted 2 lines
Building all the defconfigs takes a long time. Gitlab-CI will do that every time it pulls from git.buildroot.org, which is once per hour.
Note that I reduced that from once per hour to once per day. Unfortunately I
forgot why I did that :-)
Quoted 5 lines
Quoted 2 lines
That is way too often. Therefore, the defconfigs are not built on pull, but only on explicit trigger through the API or when a tag is added.
What is the next step now? Who is going to run in a cronjob the thing that triggers the build?
I think you have better access to machines that can do such a thing, so could
you set it up? Go to the triggers section on
https://gitlab.com/buildroot.org/buildroot/settings/ci_cd, create a trigger token, and use it in
curl -X POST \
-F token=TOKEN \
-F ref=master \
https://gitlab.com/api/v3/projects/2648174/trigger/buildsQuoted 2 lines
Can we setup a notification on the mailing
list and/or IRC when there is a failure?
I would wait a bit with that until any remaining issues on the gitlab side have
been ironed out. One issue I found already is that there seems to be some throttling going on in the git.freescale.org repositories, and our 12 parallel freescale defconfigs are hit by it.
Also, it turns out that the "free runners" have become a lot slower since I
first tried it, it now takes something like a day for all the defconfigs to build. So maybe we should consider setting up our own runner after all...
Regards,
Arnout
Quoted 17 lines
Quoted 1 line
+ # The container has not package lists, so need to update first
I've fixed the typo not -> no, as noticed by Marcus.
Makefile release: · line 1070
Quoted 2 lines
+.gitlab-ci.yml: .gitlab-ci.yml.in configs/*_defconfig
Makefile +1
-0+ (cd configs; ls -1 *_defconfig) | sed 's/$$/: *defconfig/' | cat $< - > $@I've added LC_ALL=C when calling ls -1, because I did not had the same order as yours when regenerating the list of defconfigs. Apparently, depending on the locales armadeus is before or after
arm_.And I've regenerated the list of defconfigs before pushing, of course.
Thanks!
Thomas
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF