prplos/.gitlab/sdk.yml
Petr Štetiar c6daa92b26
ci: sync with current prplos branch state
Sync CI bits with the current state in prplos branch on commit
9af7fff65169 ("ci: fix build Docker image sdk-x86-64 job").

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2025-07-31 10:31:53 +00:00

189 lines
5.7 KiB
YAML

variables:
CI_DESIGNATED_BRANCH: prplos-next
stages:
- generate
- build
.build feed with SDK:
tags:
- package-builder
stage: build
image: $CI_SDK_IMAGE
variables:
CI_SDK_TOPDIR: /home/builder
CI_SDK_INSTALL_FEEDS: base packages luci routing
CI_SDK_BUILD_CONFIG: >
+BUILD_LOG -AUTOREMOVE -ALL -ALL_NONSHARED -ALL_KMODS -SIGNED_PACKAGES
before_script:
- set -o pipefail
- cd $CI_SDK_TOPDIR
- mkdir logs
- sed -i 's;https://git.openwrt.org;https://gitlab.com/openwrt;' feeds.conf.default
- echo "src-include defaults feeds.conf.default" > feeds.conf
- echo "src-link ci $CI_PROJECT_DIR" >> feeds.conf
- >
for feed in $CI_SDK_INSTALL_FEEDS ci; do
./scripts/feeds update "$feed" ;
./scripts/feeds install -a -p "$feed" ;
done 2>&1 | tee logs/build.log
- sync
- sleep 1
- sync
- >
for option in $CI_SDK_BUILD_CONFIG $CI_SDK_BUILD_CONFIG_EXTRA; do
echo "$option" | sed -E "s/^\+(.*)$/CONFIG_\1=y/;s/^\-(.*)$/CONFIG_\1=n/" >> .config
done
- cat .config | tee --append logs/build.log
- make defconfig | tee --append logs/build.log
- ./scripts/diffconfig.sh | tee --append logs/build.log
- sync
- sleep 1
- sync
script:
- >
test -n "$CI_SDK_BEFORE_COMPILE_COMMAND" &&
echo "Running CI_SDK_BEFORE_COMPILE_COMMAND=$CI_SDK_BEFORE_COMPILE_COMMAND" &&
/bin/sh -c "$CI_SDK_BEFORE_COMPILE_COMMAND"
- >
for package in $CI_SDK_BUILD_PACKAGES; do
make V=sc package/$package/{download,check} FIXUP=1
done 2>&1 | tee --append logs/build.log
- >
topdir=$(pwd);
for feed in $(find feeds -follow -name .git); do
pushd $(dirname $feed) > /dev/null; git diff-index --exit-code HEAD || {
ret=$?
echo "Feed $(dirname $feed) packages integrity issues, please check feed-packages-hash-issues.patch from artifacts"
git diff | tee $topdir/feed-packages-hash-issues.patch
exit $ret
}
popd > /dev/null
done
- >
for package in $CI_SDK_BUILD_PACKAGES; do
make -j ${CI_SDK_BUILD_PARALLEL:-$(nproc)} package/$package/compile
done 2>&1 | tee --append logs/build.log
after_script:
- cp -R "$CI_SDK_TOPDIR/logs" $CI_PROJECT_DIR
- >
if grep -qr 'make\[[[:digit:]]\].*Error [[:digit:]]$' logs; then
printf "\n====== Showing Make errors found in the log files ======";
for file in $(grep -lr 'make\[[[:digit:]]\].*Error [[:digit:]]$' logs); do
printf "\n====== Make errors from $CI_JOB_URL/artifacts/file/$file ======\n" ;
grep -r -C5 'make\[[[:digit:]]\].*Error [[:digit:]]$' $file ;
done
fi
artifacts:
expire_in: 1 month
when: always
paths:
- logs/
- ./feed-packages-hash-issues.patch
.generate SDK package build jobs:
stage: generate
image: alpine
variables:
CI_SDK_BUILD_PACKAGES: |
please-provide
CI_SDK_PACKAGE_JOBS_TEMPLATE: |
{% if env['CI_SDK_PIPELINE_SOURCE'] %}
workflow:
rules:
- if: $$CI_PIPELINE_SOURCE == "{{ env['CI_SDK_PIPELINE_SOURCE'] }}"
{% endif %}
include:
- remote: https://gitlab.com/prpl-foundation/prplos/prplos/-/raw/$CI_DESIGNATED_BRANCH/.gitlab/sdk.yml
{% for sdk in env['CI_SDK_TARGETS'].rstrip().split("\n") %}
{% for package in env['CI_SDK_BUILD_PACKAGES'].rstrip().split("\n") %}
build {{ package | trim }} with {{ sdk | trim }} SDK:
extends: .build feed with {{ sdk | trim }} SDK
variables:
CI_SDK_BUILD_PACKAGES: {{ package | trim }}
CI_SDK_BUILD_CONFIG_EXTRA: +PACKAGE_{{ package | trim }}
{% endfor %}
{% endfor %}
before_script:
- apk add python3 py3-pip
- pip3 install jinja2
script:
- |
echo "$CI_SDK_PACKAGE_JOBS_TEMPLATE" | python3 -c '
import os
import sys
import jinja2
sys.stdout.write(
jinja2.Template(sys.stdin.read()
).render(env=os.environ))' > sdk-package-jobs.yml
- cat sdk-package-jobs.yml
artifacts:
paths:
- sdk-package-jobs.yml
.execute SDK package build jobs:
stage: build
needs:
- generate
trigger:
include:
- artifact: sdk-package-jobs.yml
job: generate
strategy: depend
.build feed with OpenWrt SDK:
extends: .build feed with SDK
variables:
CI_SDK_BEFORE_COMPILE_COMMAND: sudo apt-get update; sudo apt-get install -y python3-yaml
CI_SDK_TOPDIR: /home/build/openwrt
.build feed with intel_mips-xrx500 SDK:
extends: .build feed with SDK
variables:
CI_SDK_IMAGE: registry.gitlab.com/prpl-foundation/prplos/prplos/$CI_DESIGNATED_BRANCH/sdk-intel_mips-xrx500:latest
CI_SDK_INSTALL_FEEDS: base packages luci routing feed_intel
.build feed with ipq40xx-generic SDK:
extends: .build feed with SDK
variables:
CI_SDK_IMAGE: registry.gitlab.com/prpl-foundation/prplos/prplos/$CI_DESIGNATED_BRANCH/sdk-ipq40xx-generic:latest
.build feed with mvebu-cortexa9 SDK:
extends: .build feed with SDK
variables:
CI_SDK_IMAGE: registry.gitlab.com/prpl-foundation/prplos/prplos/$CI_DESIGNATED_BRANCH/sdk-mvebu-cortexa9:latest
.build feed with x86-64 SDK:
extends: .build feed with SDK
variables:
CI_SDK_IMAGE: registry.gitlab.com/prpl-foundation/prplos/prplos/$CI_DESIGNATED_BRANCH/sdk-x86-64:latest
.build feed with ath79-generic-19.07.7 SDK:
extends: .build feed with OpenWrt SDK
variables:
CI_SDK_IMAGE: openwrtorg/sdk:ath79-generic-19.07.7
.build feed with x86-64-22.03.2 SDK:
extends: .build feed with OpenWrt SDK
variables:
CI_SDK_BEFORE_COMPILE_COMMAND: sudo apt-get update; sudo apt-get install -y python3-yaml
CI_SDK_IMAGE: openwrt/sdk:x86-64-22.03.2