ci.sh (1090B)
1 #!/bin/bash 2 set -exvuo pipefail 3 4 # Run a single CI job locally, in the same container the buildbot uses. 5 # Usage: ./contrib/ci/ci.sh <job-name> [arch] 6 # e.g. ./contrib/ci/ci.sh 2-test 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 17 echo "Image name: ${JOB_CONTAINER}" 18 19 if [ "${CONTAINER_BUILD}" = "True" ] ; then 20 "${OCI_RUNTIME}" build \ 21 --arch "${JOB_ARCH}" \ 22 -t "${JOB_CONTAINER}" \ 23 -f contrib/ci/Containerfile . 24 fi 25 26 "${OCI_RUNTIME}" run \ 27 --rm \ 28 -ti \ 29 --arch "${JOB_ARCH}" \ 30 --env CI_COMMIT_REF="$(git rev-parse HEAD)" \ 31 --volume "${PWD}":/workdir \ 32 --workdir /workdir \ 33 "${JOB_CONTAINER}" \ 34 contrib/ci/jobs/"${JOB_NAME}"/job.sh