#!/bin/bash # usage: laminarc run checkout_ci remote="ssh://src.liz.coffee:2222/cgit" rev="" \ # refname="refs/..." RUN=`date +%s` RETURN="$PWD" WORKING_DIR="$PWD/$RUN" export LOG_PREFIX="[checkout_ci.$RUN]" log "starting checkout_ci job $remote @ $refname - $rev in $WORKING_DIR" mkdir -p "$WORKING_DIR" && cd "$WORKING_DIR" CODE="$WORKING_DIR/src" checkout="$rev" path="$CODE" fetch_code CI_WORKFLOW="$CODE/.ci/ci.json" if [[ ! -e "$CI_WORKFLOW" ]]; then log "no CI configuration found" exit 0 fi PIPELINE_GENERATOR_PATH=$(jq -r '.pipeline' "$CI_WORKFLOW") if [[ "$PIPELINE_GENERATOR_PATH" == *".."* ]]; then log "no '..'" exit 1 fi log "building the pipeline..." PIPELINE="$WORKING_DIR/pipeline.json" docker run --rm --network none --cap-drop ALL --security-opt no-new-privileges \ -e refname="$refname" -e rev="$rev" -e remote="$remote" \ -v "$CODE/$PIPELINE_GENERATOR_PATH:/pipeline_generator" \ oci.liz.coffee/img/liz-ci:release /pipeline_generator \ > "$PIPELINE" pipeline="$PIPELINE" run_pipeline log "cleaning up working directory" cd "$RETURN" && rm -rf "$WORKING_DIR" log "checkout_ci run done"