generate-jobs (2357B)
1 #!/bin/bash 2 set -e 3 4 export CI_DIR="$(pwd)/$(dirname $0)"; 5 6 # the number to use as a base for gen ci job indexes 7 BASE_IDX=100; 8 # the amount of indexes to increment - the room a script has to put scripts in. 9 INCREMENT=5; 10 11 # our build targets 12 BUILD_FOR=( 13 # Format: 14 # distro codename arch 15 # The codename must also be a tag on the distro 16 "debian bookworm amd64" 17 "debian bookworm arm64" 18 "debian trixie amd64" 19 "debian trixie arm64" 20 "debian unstable amd64" 21 "debian unstable arm64" 22 # "debian unstable riscv64" 23 ) 24 25 declare -A DISTRO_IMAGES; 26 DISTRO_IMAGES['debian']='docker.io/library/debian'; 27 DISTRO_IMAGES['archlinux']='docker.io/library/archlinux'; 28 29 chmod +w -R $CI_DIR/jobs; 30 rm -rf $CI_DIR/jobs/*-gen $CI_DIR/jobs/*-generated; 31 32 TMPBINDIR="/tmp/ci-temp-bin-$RANDOM/" 33 mkdir -p "$TMPBINDIR" 34 export PATH="$PATH:$TMPBINDIR" 35 36 mkfn() { 37 echo "$2" > "$TMPBINDIR/$1"; 38 chmod +x "$TMPBINDIR/$1"; 39 } 40 41 mkfn mktarget '#!/bin/bash 42 RELATIVEIDX=$1 43 JOBNAME="$2" 44 OURIDX=$(($IDX + $RELATIVEIDX)) 45 JOB="${OURIDX}-${JOBNAME}-${DISTRO}-${CODENAME}-${ARCH}-gen" 46 cd "$CI_DIR/jobs" 47 mkdir -p "${JOB}" 48 echo -n "${JOB}" 49 ' 50 51 for TARGET in "${BUILD_FOR[@]}"; do 52 export DISTRO=$(awk '{print $1}' <<< "$TARGET"); 53 export CODENAME=$(awk '{print $2}' <<< "$TARGET"); 54 export ARCH=$(awk '{print $3}' <<< "$TARGET"); 55 export OCI_IMAGE="${DISTRO_IMAGES[$DISTRO]}:$CODENAME"; 56 export DISTRO_TARGET="$CI_DIR/targets/$DISTRO"; 57 if [[ -d "$DISTRO_TARGET/$CODENAME-$ARCH" ]]; then 58 DISTRO_TARGET="$DISTRO_TARGET/$CODENAME-$ARCH"; 59 elif [[ -d "$DISTRO_TARGET/$CODENAME/$ARCH" ]]; then 60 DISTRO_TARGET="$DISTRO_TARGET/$CODENAME/$ARCH"; 61 elif [[ -d "$DISTRO_TARGET/$ARCH/$CODENAME" ]]; then 62 DISTRO_TARGET="$DISTRO_TARGET/$ARCH/$CODENAME"; 63 elif [[ -d "$DISTRO_TARGET/$ARCH" ]]; then 64 DISTRO_TARGET="$DISTRO_TARGET/$ARCH"; 65 elif [[ -d "$DISTRO_TARGET/$CODENAME" ]]; then 66 DISTRO_TARGET="$DISTRO_TARGET/$CODENAME"; 67 fi; 68 export CONTAINERFILE="$DISTRO_TARGET/Containerfile"; 69 export IDX=$BASE_IDX; 70 echo ""; 71 echo "> Generating scripts for $DISTRO ($CODENAME) on architecture $ARCH"; 72 echo "| > Base Image: $OCI_IMAGE"; 73 echo "| > Base Containerfile: $CONTAINERFILE"; 74 echo "| > Index: $BASE_IDX"; 75 "$DISTRO_TARGET/setup-job.sh"; 76 BASE_IDX=$(($BASE_IDX + $INCREMENT)); 77 done; 78 79 rm -rf "$TMPBINDIR" 80 chmod +x -R $CI_DIR/jobs/*-gen 81 chmod -w -R $CI_DIR/jobs/*-gen