Scaffold Cloudron packaging workspace and automation
This commit is contained in:
83
scripts/ci_local.sh
Executable file
83
scripts/ci_local.sh
Executable file
@@ -0,0 +1,83 @@
|
||||
#!/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 "$@"
|
Reference in New Issue
Block a user