84 lines
1.9 KiB
Bash
Executable File
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 "$@"
|