split TARGETS in stacks of 10

ImageBuilder/SDKs are build for each target + master & 19.07-snapshot
branch. This is to much for most CI runners, this separates the job and
also allows running it in parrallel if more workers are available.

Also add PGP key for 19.07 release builds.

Introduce $CI_COMMIT_REF_SLUG for testing.

Introduce $SKIP_ROOTFS for older builds not supporting docker images.

Signed-off-by: Paul Spooren <mail@aparcar.org>
pull/30/head
Paul Spooren 2019-08-14 16:22:49 -10:00
parent 35daea4a9a
commit 133f2ad712
6 changed files with 182 additions and 123 deletions

View File

@ -1,8 +1,15 @@
variables: variables:
TERM: xterm BRANCH: master
TARGETS: "cns3xxx-generic mvebu-cortexa53 mvebu-cortexa72 mvebu-cortexa9 ipq40xx-generic ipq806x-generic layerscape-armv7 layerscape-armv8_32b layerscape-armv8_64b imx6-generic octeontx-generic sunxi-cortexa8 sunxi-cortexa53 sunxi-cortexa7 bcm53xx-generic brcm47xx-mips74k brcm47xx-generic brcm47xx-legacy ath79-nand ath79-generic ath79-tiny ath25-generic ar7-ac49x ar7-generic kirkwood-generic apm821xx-sata apm821xx-nand ramips-rt305x ramips-rt3883 ramips-mt76x8 ramips-mt7620 ramips-rt288x ramips-mt7621 pistachio-generic gemini-generic brcm2708-bcm2708 brcm2708-bcm2709 brcm2708-bcm2710 x86-geode x86-generic x86-legacy x86-64 lantiq-xway_legacy lantiq-xrx200 lantiq-ase lantiq-falcon lantiq-xway mediatek-mt7622 mediatek-mt7623 mpc85xx-p1020 mpc85xx-p2020 mpc85xx-generic tegra-generic zynq-generic archs38-generic ixp4xx-harddisk ixp4xx-generic mxs-generic oxnas-ox820 octeon-generic armvirt-32 armvirt-64 arc770-generic samsung-s5pv210 omap-generic ar71xx-nand ar71xx-generic ar71xx-tiny ar71xx-mikrotik brcm63xx-generic brcm63xx-smp at91-sama5d3 at91-sama5d4 at91-sam9x at91-sama5 at91-legacy at91-sama5d2 rb532-generic malta-be" TARGETS_1: "cns3xxx-generic mvebu-cortexa53 mvebu-cortexa72 mvebu-cortexa9 ipq40xx-generic ipq806x-generic layerscape-armv7 layerscape-armv8_32b layerscape-armv8_64b imx6-generic"
TARGETS_2: "octeontx-generic sunxi-cortexa8 sunxi-cortexa53 sunxi-cortexa7 bcm53xx-generic brcm47xx-mips74k brcm47xx-generic brcm47xx-legacy ath79-nand ath79-generic"
TARGETS_3: "ath79-tiny ath25-generic ar7-ac49x ar7-generic kirkwood-generic apm821xx-sata apm821xx-nand ramips-rt305x ramips-rt3883 ramips-mt76x8"
TARGETS_4: "ramips-mt7620 ramips-rt288x ramips-mt7621 pistachio-generic gemini-generic brcm2708-bcm2708 brcm2708-bcm2709 brcm2708-bcm2710 x86-geode x86-generic"
TARGETS_5: "x86-legacy x86-64 lantiq-xway_legacy lantiq-xrx200 lantiq-ase lantiq-falcon lantiq-xway mediatek-mt7622 mediatek-mt7623 mpc85xx-p1020"
TARGETS_6: "mpc85xx-p2020 mpc85xx-generic tegra-generic zynq-generic archs38-generic ixp4xx-harddisk ixp4xx-generic mxs-generic oxnas-ox820 octeon-generic"
TARGETS_7: "armvirt-32 armvirt-64 arc770-generic samsung-s5pv210 omap-generic ar71xx-nand ar71xx-generic ar71xx-tiny ar71xx-mikrotik brcm63xx-generic"
TARGETS_8: "brcm63xx-smp at91-sama5d3 at91-sama5d4 at91-sam9x at91-sama5 at91-legacy at91-sama5d2 rb532-generic malta-be"
build-imagebuilder: .build:
image: docker:latest image: docker:latest
stage: build stage: build
services: services:
@ -11,24 +18,8 @@ build-imagebuilder:
- apk add curl rsync bash gnupg outils-signify - apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh - bash docker-common.sh
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- bash docker-imagebuilder.sh
- docker tag "$DOCKER_IMAGE:latest" "$DOCKER_IMAGE:imagebuilder"
- docker push "$DOCKER_IMAGE:imagebuilder"
variables:
TARGETS: "x86-64"
BRANCHES: "master 19.07-SNAPSHOT"
DOCKER_IMAGE: "$CI_REGISTRY_IMAGE"
test-imagebuilder: .deploy:
image: "$CI_REGISTRY_IMAGE:imagebuilder"
stage: test
script:
- cd ~/openwrt
- make image
- ls ./bin/targets/x86/64/*combined-squashfs.img.gz
deploy-imagebuilder:
image: docker:latest image: docker:latest
stage: deploy stage: deploy
only: only:
@ -39,32 +30,53 @@ deploy-imagebuilder:
- apk add curl rsync bash gnupg outils-signify - apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh - bash docker-common.sh
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
.deploy-imagebuilder:
extends: .deploy
variables:
DOCKER_IMAGE: "openwrtorg/imagebuilder"
script: script:
- bash docker-imagebuilder.sh - bash docker-imagebuilder.sh
- docker push "$DOCKER_IMAGE" - docker push "$DOCKER_IMAGE"
variables:
DOCKER_IMAGE: "openwrtorg/imagebuilder"
build-sdk: .deploy-sdk:
image: docker:latest extends: .deploy
stage: build variables:
services: DOCKER_IMAGE: "openwrtorg/sdk"
- docker:dind
before_script:
- apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script: script:
- bash docker-sdk.sh - bash docker-sdk.sh
- docker tag "$DOCKER_IMAGE:latest" "$DOCKER_IMAGE:sdk" - docker push "$DOCKER_IMAGE"
- docker push "$DOCKER_IMAGE:sdk"
build-imagebuilder:
extends: .build
variables: variables:
TARGETS: "x86-64" TARGETS: "x86-64"
BRANCHES: "master 19.07-SNAPSHOT"
DOCKER_IMAGE: "$CI_REGISTRY_IMAGE" DOCKER_IMAGE: "$CI_REGISTRY_IMAGE"
script:
- bash docker-imagebuilder.sh
- docker tag "$DOCKER_IMAGE:x86-64-$BRANCH" "$DOCKER_IMAGE:imagebuilder-$BRANCH-$CI_COMMIT_REF_SLUG"
- docker push "$DOCKER_IMAGE:imagebuilder-$BRANCH-$CI_COMMIT_REF_SLUG"
test-imagebuilder:
image: "$CI_REGISTRY_IMAGE:imagebuilder-$BRANCH-$CI_COMMIT_REF_SLUG"
stage: test
script:
- cd /home/build/openwrt/
- make image
- ls ./bin/targets/x86/64/*combined-squashfs.img.gz
build-sdk:
extends: .build
variables:
TARGETS: "x86-64"
DOCKER_IMAGE: "$CI_REGISTRY_IMAGE"
script:
- bash docker-sdk.sh
- docker tag "$DOCKER_IMAGE:x86-64-$BRANCH" "$DOCKER_IMAGE:sdk-$BRANCH-$CI_COMMIT_REF_SLUG"
- docker push "$DOCKER_IMAGE:sdk-$BRANCH-$CI_COMMIT_REF_SLUG"
test-sdk: test-sdk:
image: "$CI_REGISTRY_IMAGE:sdk" image: "$CI_REGISTRY_IMAGE:sdk-$BRANCH-$CI_COMMIT_REF_SLUG"
stage: test stage: test
script: script:
- cd ~/openwrt - cd ~/openwrt
@ -74,63 +86,117 @@ test-sdk:
- make package/busybox/compile -j$(nproc) - make package/busybox/compile -j$(nproc)
- ls ./bin/packages/x86_64/base/busybox* - ls ./bin/packages/x86_64/base/busybox*
deploy-sdk: deploy-imagebuilder-1:
image: docker:latest extends: .deploy-imagebuilder
stage: deploy
only:
- master
services:
- docker:dind
before_script:
- apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
script:
- bash docker-sdk.sh
- docker push "$DOCKER_IMAGE"
variables: variables:
DOCKER_IMAGE: "openwrtorg/sdk" TARGETS: "$TARGETS_1"
deploy-imagebuilder-2:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_2"
deploy-imagebuilder-3:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_3"
deploy-imagebuilder-4:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_4"
deploy-imagebuilder-5:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_5"
deploy-imagebuilder-6:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_6"
deploy-imagebuilder-7:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_7"
deploy-imagebuilder-8:
extends: .deploy-imagebuilder
variables:
TARGETS: "$TARGETS_8"
deploy-sdk-1:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_1"
deploy-sdk-2:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_2"
deploy-sdk-3:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_3"
deploy-sdk-4:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_4"
deploy-sdk-5:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_5"
deploy-sdk-6:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_6"
deploy-sdk-7:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_7"
deploy-sdk-8:
extends: .deploy-sdk
variables:
TARGETS: "$TARGETS_8"
build-rootfs: build-rootfs:
image: docker:latest extends: .build
stage: build except:
services: variables:
- docker:dind - $SKIP_ROOTFS
before_script:
- apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- bash docker-rootfs.sh
- docker tag "$DOCKER_IMAGE:latest" "$DOCKER_IMAGE:rootfs"
- docker push "$DOCKER_IMAGE:rootfs"
variables: variables:
TARGETS: "x86-64" TARGETS: "x86-64"
BRANCHES: "master 19.07-SNAPSHOT"
DOCKER_IMAGE: "$CI_REGISTRY_IMAGE" DOCKER_IMAGE: "$CI_REGISTRY_IMAGE"
script:
- bash docker-rootfs.sh
- docker tag "$DOCKER_IMAGE:x86-64-$BRANCH" "$DOCKER_IMAGE:rootfs-$BRANCH-$CI_COMMIT_REF_SLUG"
- docker push "$DOCKER_IMAGE:rootfs-$BRANCH-$CI_COMMIT_REF_SLUG"
test-rootfs: test-rootfs:
image: "$CI_REGISTRY_IMAGE:rootfs" image: "$CI_REGISTRY_IMAGE:rootfs-$BRANCH-$CI_COMMIT_REF_SLUG"
stage: test stage: test
except:
variables:
- $SKIP_ROOTFS
script: script:
- ls / - ls /
- ping -c 3 1.1.1.1 - ping -c 3 1.1.1.1
deploy-rootfs: deploy-rootfs:
image: docker:latest extends: .deploy
stage: deploy except:
only: variables:
- master - $SKIP_ROOTFS
services: variables:
- docker:dind DOCKER_IMAGE: "openwrtorg/rootfs"
before_script: TARGETS: "x86-64 armvirt-32 armvirt-64"
- apk add curl rsync bash gnupg outils-signify
- bash docker-common.sh
- docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
script: script:
- bash docker-rootfs.sh - bash docker-rootfs.sh
- docker push "$DOCKER_IMAGE" - docker push "$DOCKER_IMAGE"
variables:
DOCKER_IMAGE: "openwrtorg/rootfs"
BRANCHES: "master 19.07-SNAPSHOT"
TARGETS: "x86-64 armvirt-32 armvirt-64"

View File

@ -3,19 +3,17 @@
set -ex set -ex
DOCKERFILE="${DOCKERFILE:-Dockerfile}" DOCKERFILE="${DOCKERFILE:-Dockerfile}"
docker build -t "$DOCKER_IMAGE:$TARGET-$BRANCH" -f "$DOCKERFILE" ./build
if [ "$BRANCH" != "master" ]; then if [ "$BRANCH" == "master" ]; then
if [ "$TARGET" != "x86-64" ]; then docker tag "$DOCKER_IMAGE:$TARGET-$BRANCH" "$DOCKER_IMAGE:$TARGET"
docker build -t "$DOCKER_IMAGE:$TARGET-$BRANCH" -f "$DOCKERFILE" ./build if [ "$TARGET" == "x86-64" ]; then
else docker tag "$DOCKER_IMAGE:$TARGET-$BRANCH" "$DOCKER_IMAGE:latest"
docker build -t "$DOCKER_IMAGE:$BRANCH" -f "$DOCKERFILE" ./build
fi
else
if [ "$TARGET" != "x86-64" ]; then
docker build -t "$DOCKER_IMAGE:$TARGET" -f "$DOCKERFILE" ./build
else
docker build -t "$DOCKER_IMAGE:latest" -f "$DOCKERFILE" ./build
fi fi
fi fi
if [ "$TARGET" == "x86-64" ]; then
docker tag "$DOCKER_IMAGE:$TARGET-$BRANCH" "$DOCKER_IMAGE:$BRANCH"
fi
rm -rf ./build rm -rf ./build

View File

@ -10,6 +10,10 @@ export GNUPGHOME="gpg"
curl 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/626471F1.asc' | gpg --import \ curl 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/626471F1.asc' | gpg --import \
&& echo '54CC74307A2C6DC9CE618269CD84BCED626471F1:6:' | gpg --import-ownertrust && echo '54CC74307A2C6DC9CE618269CD84BCED626471F1:6:' | gpg --import-ownertrust
# PGP key for 19.07 release builds
curl 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/2074BE7A.asc' | gpg --import \
&& echo 'D9C6901F45C9B86858687DFF28A39BC32074BE7A:6:' | gpg --import-ownertrust
# LEDE Release Builder (17.01 "Reboot" Signing Key) # LEDE Release Builder (17.01 "Reboot" Signing Key)
curl 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/D52BBB6B.asc' | gpg --import \ curl 'https://git.openwrt.org/?p=keyring.git;a=blob_plain;f=gpg/D52BBB6B.asc' | gpg --import \
&& echo 'B09BE781AE8A0CD4702FDCD3833C6010D52BBB6B:6:' | gpg --import-ownertrust && echo 'B09BE781AE8A0CD4702FDCD3833C6010D52BBB6B:6:' | gpg --import-ownertrust

View File

@ -3,21 +3,18 @@
set -ex set -ex
TARGETS="${TARGETS:-x86-64}" TARGETS="${TARGETS:-x86-64}"
BRANCHES="${BRANCHES:-master}" export BRANCH="${BRANCH:-master}"
export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-imagebuilder}" export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-imagebuilder}"
export DOWNLOAD_FILE="openwrt-imagebuilder*x86_64.tar.xz" export DOWNLOAD_FILE="openwrt-imagebuilder*x86_64.tar.xz"
for TARGET in $TARGETS ; do for TARGET in $TARGETS ; do
export TARGET export TARGET
for BRANCH in $BRANCHES; do if [ "$BRANCH" == "master" ]; then
export BRANCH export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')"
if [ "$BRANCH" == "master" ]; then else
export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')" export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
else fi
export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
fi
./docker-download.sh || exit 1 ./docker-download.sh || continue
./docker-build.sh || exit 1 ./docker-build.sh || exit 1
done
done done

View File

@ -3,25 +3,22 @@
set -ex set -ex
TARGETS="${TARGETS:-x86-64}" TARGETS="${TARGETS:-x86-64}"
BRANCHES="${BRANCHES:-master}" export BRANCH="${BRANCH:-master}"
export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-rootfs}" export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-rootfs}"
export DOWNLOAD_FILE="openwrt-*-rootfs.tar.gz" export DOWNLOAD_FILE="openwrt-*-rootfs.tar.gz"
export DOCKERFILE="Dockerfile.rootfs" export DOCKERFILE="Dockerfile.rootfs"
for TARGET in $TARGETS ; do for TARGET in $TARGETS ; do
export TARGET export TARGET
for BRANCH in $BRANCHES; do if [ "$BRANCH" == "master" ]; then
export BRANCH export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')"
if [ "$BRANCH" == "master" ]; then else
export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')" export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
else fi
export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
fi
./docker-download.sh || exit 1 ./docker-download.sh || continue
cp -r ./rootfs/* ./build cp -r ./rootfs/* ./build
./docker-build.sh || exit 1 ./docker-build.sh || exit 1
done
done done

View File

@ -3,21 +3,18 @@
set -ex set -ex
TARGETS="${TARGETS:-x86-64}" TARGETS="${TARGETS:-x86-64}"
BRANCHES="${BRANCHES:-master}" export BRANCH="${BRANCH:-master}"
export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-sdk}" export DOCKER_IMAGE="${DOCKER_IMAGE:-openwrt-sdk}"
export DOWNLOAD_FILE="openwrt-sdk-*.Linux-x86_64.tar.xz" export DOWNLOAD_FILE="openwrt-sdk-*.Linux-x86_64.tar.xz"
for TARGET in $TARGETS ; do for TARGET in $TARGETS ; do
export TARGET export TARGET
for BRANCH in $BRANCHES; do if [ "$BRANCH" == "master" ]; then
export BRANCH export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')"
if [ "$BRANCH" == "master" ]; then else
export DOWNLOAD_PATH="snapshots/targets/$(echo $TARGET | tr '-' '/')" export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
else fi
export DOWNLOAD_PATH="releases/$BRANCH/targets/$(echo $TARGET | tr '-' '/')"
fi
./docker-download.sh || exit 1 ./docker-download.sh || continue
./docker-build.sh || exit 1 ./docker-build.sh || exit 1
done
done done