Files
KNELCloudronPackages/scripts/ci_local.sh

84 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
REPO_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
CI_IMAGE=${CI_IMAGE:-knel/cloudron-ci}
BUILD=${BUILD:-0}
ensure_image() {
if [[ "${BUILD}" == "1" ]]; then
docker build -t "${CI_IMAGE}" "${REPO_ROOT}/docker/ci-runner"
return
fi
if ! docker image inspect "${CI_IMAGE}" >/dev/null 2>&1; then
docker build -t "${CI_IMAGE}" "${REPO_ROOT}/docker/ci-runner"
fi
}
run_in_ci() {
local cmd=$1
docker run --rm -t \
-v "${REPO_ROOT}:/workspace" \
-v /var/run/docker.sock:/var/run/docker.sock \
"${CI_IMAGE}" "${cmd}"
}
lint() {
run_in_ci 'git config --global --add safe.directory /workspace && make lint && make status && git diff --exit-code docs/APP_STATUS.md'
}
packager_smoke() {
run_in_ci 'git config --global --add safe.directory /workspace && docker build -t knel/cloudron-packager-test docker/packager && docker run --rm knel/cloudron-packager-test cloudron --help'
}
usage() {
cat <<USAGE
Usage: $(basename "$0") [lint|status|packager-smoke|all]
Options:
lint Run make lint + status and verify dashboard is committed
status Regenerate docs/APP_STATUS.md
packager-smoke Build the helper packager image and run cloudron --help
all Execute lint and packager-smoke
Environment variables:
BUILD=1 Force rebuild of the CI image before running tasks
CI_IMAGE Override the CI harness image tag (default: knel/cloudron-ci)
USAGE
}
status_only() {
run_in_ci 'git config --global --add safe.directory /workspace && make status'
}
main() {
ensure_image
local target=${1:-all}
case "${target}" in
lint)
lint
;;
status)
status_only
;;
packager-smoke)
packager_smoke
;;
all)
lint
packager_smoke
;;
-h|--help)
usage
;;
*)
echo "Unknown target: ${target}" >&2
usage
exit 1
;;
esac
}
main "$@"