ci.sh (1209B)
1 #!/bin/bash 2 set -exvuo pipefail 3 4 # Run a single CI job in a container. 5 # 6 # contrib/ci/ci.sh <job-name> [arch] 7 # 8 # Requires podman 9 # Fails if not found in PATH 10 OCI_RUNTIME=$(which podman) 11 REPO_NAME=$(basename "${PWD}") 12 JOB_NAME="${1}" 13 JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}") 14 JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}:${JOB_ARCH}") 15 CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True") 16 CONTAINERFILE="contrib/ci/$JOB_ARCH.Containerfile" 17 18 if ! [[ -f "$CONTAINERFILE" ]]; 19 then 20 CONTAINERFILE="$(dirname "$CONTAINERFILE")/Containerfile" 21 fi 22 23 echo "Image name: ${JOB_CONTAINER}" 2>&1 24 echo "Containerfile: ${CONTAINERFILE}" 2>&1 25 26 if [ "${CONTAINER_BUILD}" = "True" ] ; 27 then 28 "${OCI_RUNTIME}" build \ 29 --arch "${JOB_ARCH}" \ 30 -t "${JOB_CONTAINER}" \ 31 -f "$CONTAINERFILE" . 32 fi 33 34 "${OCI_RUNTIME}" run \ 35 --rm \ 36 -ti \ 37 --arch "${JOB_ARCH}" \ 38 --env CI_COMMIT_REF="$(git rev-parse HEAD)" \ 39 --volume "${PWD}":/workdir \ 40 --workdir /workdir \ 41 "${JOB_CONTAINER}" \ 42 contrib/ci/jobs/"${JOB_NAME}"/job.sh