exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

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