mirror of
git://f0xx.org/android_cast
synced 2026-07-29 05:37:52 +03:00
sync BE
This commit is contained in:
@@ -25,6 +25,10 @@ CLONE_DEPTH="${BUILD_GIT_DEPTH:-1}"
|
||||
SOURCE_DIR="${OUT_DIR}/src"
|
||||
DOCKER_WORKSPACE="${WORK_DIR}"
|
||||
CONTAINER_NAME="androidcast-bld-${BUILD_ID}"
|
||||
RESUME_FROM="${BUILD_RESUME_FROM:-}"
|
||||
REUSE_SRC_DIR="${BUILD_REUSE_SRC_DIR:-}"
|
||||
SSH_DEBUG="${BUILD_SSH_DEBUG:-0}"
|
||||
SSH_DEBUG_SECONDS="${BUILD_SSH_DEBUG_SECONDS:-7200}"
|
||||
|
||||
mkdir -p "$(dirname "$LOG_FILE")" "$OUT_DIR"
|
||||
|
||||
@@ -136,22 +140,89 @@ sync_shared_checkout() {
|
||||
run_logged git_safe -C "${WORK_DIR}" rev-parse HEAD
|
||||
}
|
||||
|
||||
log "[runner] image=${IMAGE} ci_version=${CI_VERSION} build_id=${BUILD_ID} container=${CONTAINER_NAME}"
|
||||
log "[runner] workdir=${WORK_DIR} out=${OUT_DIR} isolate=${ISOLATE_SOURCE}"
|
||||
should_skip_git() {
|
||||
[[ "$RESUME_FROM" == "docker-build" || "$RESUME_FROM" == "docker-run" ]]
|
||||
}
|
||||
|
||||
if [[ "$ISOLATE_SOURCE" == "1" ]]; then
|
||||
prepare_isolated_source
|
||||
should_skip_docker_build() {
|
||||
[[ "$RESUME_FROM" == "docker-run" ]] && docker image inspect "$IMAGE" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
reuse_source_tree() {
|
||||
if [[ -n "$REUSE_SRC_DIR" && -d "${REUSE_SRC_DIR}/.git" ]]; then
|
||||
log "[runner] reuse: source tree from ${REUSE_SRC_DIR}"
|
||||
rm -rf "${SOURCE_DIR}"
|
||||
mkdir -p "${SOURCE_DIR}"
|
||||
cp -a "${REUSE_SRC_DIR}/." "${SOURCE_DIR}/"
|
||||
DOCKER_WORKSPACE="${SOURCE_DIR}"
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
run_git_step() {
|
||||
if [[ "$ISOLATE_SOURCE" == "1" ]]; then
|
||||
prepare_isolated_source
|
||||
else
|
||||
sync_shared_checkout
|
||||
DOCKER_WORKSPACE="${WORK_DIR}"
|
||||
fi
|
||||
}
|
||||
|
||||
start_ssh_debug_container() {
|
||||
log "[runner] SSH debug: starting container ${CONTAINER_NAME} (${SSH_DEBUG_SECONDS}s)"
|
||||
docker rm -f "${CONTAINER_NAME}" 2>/dev/null || true
|
||||
run_step docker-run-ssh docker run -d --name "${CONTAINER_NAME}" \
|
||||
-v "${DOCKER_WORKSPACE}:/workspace" \
|
||||
-v "${ROOT}/out:/workspace/out" \
|
||||
-w /workspace \
|
||||
-e BUILD_ID="${BUILD_ID}" \
|
||||
-e OUT_DIR="/workspace/out/builds/${BUILD_ID}" \
|
||||
"$IMAGE" \
|
||||
sleep "${SSH_DEBUG_SECONDS}"
|
||||
printf '%s\n' 'ssh_debug' > "${OUT_DIR}/runner.mode"
|
||||
local host
|
||||
host="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo builder)"
|
||||
log "[runner] SSH debug: session open on ${host}"
|
||||
log "[runner] SSH debug: ssh <you>@${host}"
|
||||
log "[runner] SSH debug: docker exec -it ${CONTAINER_NAME} bash"
|
||||
log "[runner] SSH debug: workspace is /workspace inside the container"
|
||||
log "[runner] finished build_id=${BUILD_ID} (ssh debug — stop build or wait ${SSH_DEBUG_SECONDS}s)"
|
||||
}
|
||||
|
||||
log "[runner] image=${IMAGE} ci_version=${CI_VERSION} build_id=${BUILD_ID} container=${CONTAINER_NAME}"
|
||||
log "[runner] workdir=${WORK_DIR} out=${OUT_DIR} isolate=${ISOLATE_SOURCE} resume=${RESUME_FROM:-full}"
|
||||
|
||||
if should_skip_git; then
|
||||
if reuse_source_tree; then
|
||||
log "[runner] resume: skipped git (reused source)"
|
||||
elif [[ "$ISOLATE_SOURCE" != "1" && -d "${WORK_DIR}/.git" ]]; then
|
||||
DOCKER_WORKSPACE="${WORK_DIR}"
|
||||
log "[runner] resume: skipped git (shared workdir ${WORK_DIR})"
|
||||
else
|
||||
log "[runner] resume: no reusable source; running git step"
|
||||
run_git_step
|
||||
fi
|
||||
else
|
||||
sync_shared_checkout
|
||||
run_git_step
|
||||
fi
|
||||
|
||||
log "[runner] docker workspace=${DOCKER_WORKSPACE}"
|
||||
|
||||
run_step docker-build docker build \
|
||||
--build-arg ANDROIDCAST_CI_VERSION="${CI_VERSION}" \
|
||||
-t "$IMAGE" \
|
||||
-f "${ROOT}/Dockerfile" \
|
||||
"${ROOT}"
|
||||
if should_skip_docker_build; then
|
||||
log "[runner] resume: skipped docker-build (image ${IMAGE} exists)"
|
||||
else
|
||||
run_step docker-build docker build \
|
||||
--build-arg ANDROIDCAST_CI_VERSION="${CI_VERSION}" \
|
||||
-t "$IMAGE" \
|
||||
-f "${ROOT}/Dockerfile" \
|
||||
"${ROOT}"
|
||||
fi
|
||||
|
||||
if [[ "$SSH_DEBUG" == "1" ]]; then
|
||||
start_ssh_debug_container
|
||||
exit 0
|
||||
fi
|
||||
|
||||
run_step docker-run docker run --rm --name "${CONTAINER_NAME}" \
|
||||
-v "${DOCKER_WORKSPACE}:/workspace" \
|
||||
|
||||
Reference in New Issue
Block a user