gitlab-ci: migrate to persistent repo runner

This commit is contained in:
Antoine Martin 2023-04-26 00:02:11 -04:00
parent 483012e1fe
commit 6ed69b6ae5
Signed by: forge
GPG key ID: D62A472A4AA7D541
4 changed files with 23 additions and 62 deletions

View file

@ -50,7 +50,7 @@ lint:
sudo apk add alpine-sdk lua-aports doas gzip xz qemu-$CI_QEMU_TARGET_ARCH sudo apk add alpine-sdk lua-aports doas gzip xz qemu-$CI_QEMU_TARGET_ARCH
doas addgroup $USER abuild doas addgroup $USER abuild
export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin" export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
build-rootfs.sh alpine$CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_ALPINE_TARGET_ARCH --rootfsdir $HOME/sysroot-$CI_ALPINE_TARGET_ARCH build-rootfs.sh alpine${CI_MERGE_REQUEST_TARGET_BRANCH_NAME/v} $CI_ALPINE_TARGET_ARCH --rootfsdir $HOME/sysroot-$CI_ALPINE_TARGET_ARCH
cp /etc/apk/repositories $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/. cp /etc/apk/repositories $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/.
sudo -Eu $USER CHOST=$CI_TARGET_ALPINE_ARCH build.sh sudo -Eu $USER CHOST=$CI_TARGET_ALPINE_ARCH build.sh
artifacts: artifacts:
@ -86,4 +86,4 @@ push:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual when: manual
tags: tags:
- apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME - repo

View file

@ -39,9 +39,6 @@ __UbuntuPackages="build-essential"
__AlpinePackages="alpine-base" __AlpinePackages="alpine-base"
__AlpinePackages+=" build-base" __AlpinePackages+=" build-base"
__AlpinePackages+=" linux-headers"
__AlpinePackages+=" python3"
__AlpinePackages+=" libedit"
# symlinks fixer # symlinks fixer
__UbuntuPackages+=" symlinks" __UbuntuPackages+=" symlinks"
@ -52,24 +49,12 @@ __UbuntuPackages+=" liblttng-ust-dev"
__UbuntuPackages+=" libunwind8-dev" __UbuntuPackages+=" libunwind8-dev"
__UbuntuPackages+=" libnuma-dev" __UbuntuPackages+=" libnuma-dev"
__AlpinePackages+=" gettext-dev"
__AlpinePackages+=" icu-dev"
__AlpinePackages+=" libunwind-dev"
__AlpinePackages+=" lttng-ust-dev"
__AlpinePackages+=" compiler-rt"
__AlpinePackages+=" numactl-dev"
# runtime libraries' dependencies # runtime libraries' dependencies
__UbuntuPackages+=" libcurl4-openssl-dev" __UbuntuPackages+=" libcurl4-openssl-dev"
__UbuntuPackages+=" libkrb5-dev" __UbuntuPackages+=" libkrb5-dev"
__UbuntuPackages+=" libssl-dev" __UbuntuPackages+=" libssl-dev"
__UbuntuPackages+=" zlib1g-dev" __UbuntuPackages+=" zlib1g-dev"
__AlpinePackages+=" curl-dev"
__AlpinePackages+=" krb5-dev"
__AlpinePackages+=" openssl-dev"
__AlpinePackages+=" zlib-dev"
__FreeBSDBase="12.3-RELEASE" __FreeBSDBase="12.3-RELEASE"
__FreeBSDPkg="1.17.0" __FreeBSDPkg="1.17.0"
__FreeBSDABI="12" __FreeBSDABI="12"
@ -150,7 +135,6 @@ while :; do
riscv64) riscv64)
__BuildArch=riscv64 __BuildArch=riscv64
__AlpineArch=riscv64 __AlpineArch=riscv64
__AlpinePackages="${__AlpinePackages// lldb-dev/}"
__QEMUArch=riscv64 __QEMUArch=riscv64
__UbuntuArch=riscv64 __UbuntuArch=riscv64
__UbuntuRepo="http://deb.debian.org/debian-ports" __UbuntuRepo="http://deb.debian.org/debian-ports"
@ -348,39 +332,6 @@ while :; do
shift shift
done done
case "$__AlpineVersion" in
3.14) __AlpinePackages+=" llvm11-libs" ;;
3.15) __AlpinePackages+=" llvm12-libs" ;;
3.16) __AlpinePackages+=" llvm13-libs" ;;
3.17) __AlpinePackages+=" llvm15-libs" ;;
edge) __AlpineLlvmLibsLookup=1 ;;
*)
if [[ "$__AlpineArch" =~ s390x|ppc64le ]]; then
echo boo
__AlpineVersion=3.15 # minimum version that supports lldb-dev
__AlpinePackages+=" llvm12-libs"
elif [[ "$__AlpineArch" == "x86" ]]; then
__AlpineVersion=3.17 # minimum version that supports lldb-dev
__AlpinePackages+=" llvm15-libs"
elif [[ "$__AlpineArch" == "riscv64" ]]; then
__AlpineLlvmLibsLookup=1
__AlpineVersion=edge # minimum version with APKINDEX.tar.gz (packages archive)
else
__AlpineVersion=3.13 # 3.13 to maximize compatibility
__AlpinePackages+=" llvm10-libs"
if [[ "$__AlpineArch" == "armv7" ]]; then
__AlpinePackages="${__AlpinePackages//numactl-dev/}"
fi
fi
esac
if [[ "$__AlpineVersion" =~ 3\.1[345] ]]; then
# compiler-rt--static was merged in compiler-rt package in alpine 3.16
# for older versions, we need compiler-rt--static, so replace the name
__AlpinePackages="${__AlpinePackages/compiler-rt/compiler-rt-static}"
fi
if [[ "$__BuildArch" == "armel" ]]; then if [[ "$__BuildArch" == "armel" ]]; then
__LLDB_Package="lldb-3.5-dev" __LLDB_Package="lldb-3.5-dev"
fi fi

View file

@ -81,7 +81,6 @@ build_aport() {
local repo="$1" aport="$2" local repo="$1" aport="$2"
cd "$APORTSDIR/$repo/$aport" cd "$APORTSDIR/$repo/$aport"
export CHOST=$CI_ALPINE_TARGET_ARCH export CHOST=$CI_ALPINE_TARGET_ARCH
abuild deps | true
if abuild -r 2>&1 | report "build-$aport"; then if abuild -r 2>&1 | report "build-$aport"; then
checkapk | report "checkapk-$aport" || true checkapk | report "checkapk-$aport" || true
aport_ok="$aport_ok $repo/$aport" aport_ok="$aport_ok $repo/$aport"
@ -110,7 +109,12 @@ set_repositories_for() {
[ "$repo" = "$target_repo" ] && break [ "$repo" = "$target_repo" ] && break
done done
doas sh -c "printf '%s\n' $repos >> /etc/apk/repositories" doas sh -c "printf '%s\n' $repos >> /etc/apk/repositories"
doas apk update doas apk update || true
if [ "$CI_ALPINE_TARGET_ARCH" != "$ARCH" ]; then
doas sh -c "printf '%s\n' $repos >> $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/repositories"
doas cp -R /etc/apk/keys/* $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/keys/.
doas apk --root=$HOME/sysroot-$CI_ALPINE_TARGET_ARCH update || true
fi
} }
apply_offset_limit() { apply_offset_limit() {

View file

@ -19,13 +19,19 @@ gitlab_key_to_rsa $SSH_KEY rsa-private $HOME/.ssh/id_rsa
chmod 700 "$HOME"/.ssh/id_rsa chmod 700 "$HOME"/.ssh/id_rsa
chmod 700 "$HOME"/.abuild/$ABUILD_KEY_NAME.rsa chmod 700 "$HOME"/.abuild/$ABUILD_KEY_NAME.rsa
echo "PACKAGER_PRIVKEY=$HOME/.abuild/$ABUILD_KEY_NAME.rsa" >> $HOME/.abuild/abuild.conf echo "PACKAGER_PRIVKEY=$HOME/.abuild/$ABUILD_KEY_NAME.rsa" > $HOME/.abuild/abuild.conf
echo "REPODEST=$CI_PROJECT_DIR/repo-apk" >> $HOME/.abuild/abuild.conf echo "REPODEST=$HOME/repo-apk" >> $HOME/.abuild/abuild.conf
doas cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/. doas cp $HOME/.abuild/$ABUILD_KEY_NAME.rsa.pub /etc/apk/keys/.
git clone git@lab.ilot.io:ayakael/repo-apk -b $BASEBRANCH if [ -d $HOME/repo-apk ]; then
git -C $HOME/repo-apk checkout $BASEBRANCH
git -C $HOME/repo-apk pull --rebase
else
git clone git@lab.ilot.io:ayakael/repo-apk -b $BASEBRANCH $HOME/repo-apk
fi
for i in $(find packages -type f -name "*.apk"); do for i in $(find packages -type f -name "*.apk"); do
install -vDm644 $i ${i/packages/repo-apk} install -vDm644 $i ${i/packages/$HOME\/repo-apk}
done done
fetch_flags="-qn" fetch_flags="-qn"
@ -33,17 +39,17 @@ git fetch $fetch_flags "$CI_MERGE_REQUEST_PROJECT_URL" \
"+refs/heads/$BASEBRANCH:refs/heads/$BASEBRANCH" "+refs/heads/$BASEBRANCH:refs/heads/$BASEBRANCH"
for repo in $(changed_repos); do for repo in $(changed_repos); do
rm $CI_PROJECT_DIR/repo-apk/$repo/*/APKINDEX.tar.gz | true rm $HOME/repo-apk/$repo/*/APKINDEX.tar.gz | true
mkdir -p $repo/DUMMY mkdir -p $repo/DUMMY
echo "pkgname=DUMMY" > $repo/DUMMY/APKBUILD echo "pkgname=DUMMY" > $repo/DUMMY/APKBUILD
cd $repo/DUMMY cd $repo/DUMMY
for i in $(find $CI_PROJECT_DIR/repo-apk/$repo -maxdepth 1 -mindepth 1 -printf '%P '); do for i in $(find $HOME/repo-apk/$repo -maxdepth 1 -mindepth 1 -printf '%P '); do
CHOST=$i abuild index CHOST=$i abuild index
done done
cd "$CI_PROJECT_DIR" cd "$CI_PROJECT_DIR"
rm -R $repo/DUMMY rm -R $repo/DUMMY
done done
git -C repo-apk add . git -C $HOME/repo-apk add .
git -C repo-apk commit -m "Update from $CI_MERGE_REQUEST_IID - $CI_MERGE_REQUEST_TITLE" git -C $HOME/repo-apk commit -m "Update from $CI_MERGE_REQUEST_IID - $CI_MERGE_REQUEST_TITLE"
git -C repo-apk push git -C $HOME/repo-apk push