stage: generate-gitlab-ci
script: ./support/scripts/generate-gitlab-ci-yml support/misc/gitlab-ci.yml.in > generated-gitlab-ci.yml
artifacts:
+ when: always
paths:
- generated-gitlab-ci.yml
+ - br-test-pkg/*/.config
+ - br-test-pkg/*/missing.config
buildroot-pipeline:
stage: build
- artifact: generated-gitlab-ci.yml
job: generate-gitlab-ci-yml
strategy: depend
+ variables:
+ PARENT_PIPELINE_ID: $CI_PIPELINE_ID
- test-output/*/.config
- test-output/*/images/*
+.test_pkg:
+ stage: build
+ before_script:
+ - OUTPUT_DIR=${CI_JOB_NAME}
+ script:
+ - echo "Configure Buildroot for ${OUTPUT_DIR}"
+ - make O=${OUTPUT_DIR} syncconfig
+ - make O=${OUTPUT_DIR} savedefconfig
+ - echo 'Build buildroot'
+ - *run_make
+ needs:
+ - pipeline: $PARENT_PIPELINE_ID
+ job: generate-gitlab-ci-yml
+ artifacts:
+ when: always
+ expire_in: 2 weeks
+ paths:
+ - build.log
+ - br-test-pkg/*/.config
+ - br-test-pkg/*/defconfig
+ - br-test-pkg/*/build/build-time.log
+ - br-test-pkg/*/build/packages-file-list*.txt
gen_tests() {
local -a basics defconfigs runtimes
- local do_basics do_defconfigs do_runtime
+ local do_basics do_defconfigs do_runtime do_testpkg
local defconfigs_ext cfg tst
basics=( DEVELOPERS flake8 package )
esac
fi
+ # Retrieve defconfig for test-pkg from the git commit message (if any)
+ if grep -q -E '^test-pkg config:$' <<<"${CI_COMMIT_DESCRIPTION}"; then
+ sed -r -n -e '/^test-pkg config:$/{:a;n;p;ba;}' \
+ <<<"${CI_COMMIT_DESCRIPTION}" \
+ >defconfig.frag
+ if [ ! -s defconfig.frag ]; then
+ printf "Empty configuration fragment.\n" >&2; exit 1
+ fi
+ # Use --all since we expect the user having already pre-tested the
+ # new package with the default subset of toolchains.
+ ./utils/test-pkg \
+ --all --prepare-only \
+ --config-snippet defconfig.frag \
+ --build-dir br-test-pkg >&2
+ do_testpkg=( $(ls -1 br-test-pkg/*/.config 2>/dev/null |xargs -r dirname ) )
+ if [ "${#do_testpkg[@]}" -eq 0 ]; then
+ printf "Configuration fragment enables no test.\n" >&2; exit 1
+ fi
+ fi
+
# If nothing else, at least do the basics to generate a valid pipeline
if [ -z "${do_defconfigs}" \
-a -z "${do_runtime}" \
+ -a -z "${do_testpkg}" \
]
then
do_basics=true
if ${do_runtime:-false}; then
printf '%s: { extends: .runtime_test_base }\n' "${runtimes[@]}"
fi
+
+ if [ -n "${do_testpkg}" ]; then
+ printf '%s: { extends: .test_pkg }\n' "${do_testpkg[@]}"
+ fi
}
main "${@}"