Skip to content

Commit 41b4976

Browse files
committed
better
1 parent bc7e85d commit 41b4976

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

Github/Runners/run_linux.sh

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,9 @@ set_configuration() {
234234
#Export for consistency with original script
235235
export PODMAN_CONTAINER_NAME="${CONTAINER_NAME}"
236236
export PODMAN_CONTAINER_IMAGE="${CONTAINER_IMAGE}"
237-
export PODMAN_ENV_FILE="$(realpath ${ENV_FILE})"
238-
export PODMAN_LOG_FILE="$(realpath ${LOG_FILE})"
237+
PODMAN_ENV_FILE="$(realpath "${ENV_FILE}")"
238+
PODMAN_LOG_FILE="$(realpath "${LOG_FILE}")"
239+
export PODMAN_ENV_FILE PODMAN_LOG_FILE
239240
export PODMAN_PULL_POLICY="${PULL_POLICY}"
240241
}
241242
#Check and configure sudo requirements
@@ -321,29 +322,39 @@ show_configuration() {
321322
}
322323
#Cleanup function
323324
cleanup_containers() {
325+
if [[ "${ACTION}" == "cleanup" && "${CONTAINER_NAME}" == "${DEFAULT_CONTAINER_NAME}" ]]; then
326+
log_error "Container name must be explicitly specified when using --cleanup"
327+
log_error "Use: $0 --cleanup --name YOUR_CONTAINER_NAME"
328+
exit 1
329+
fi
330+
324331
log_info "Cleaning up existing containers..."
325-
${PODMAN_SUDO} podman stop "${CONTAINER_NAME}" &>/dev/null
326-
${PODMAN_SUDO} podman rm "${CONTAINER_NAME}" --force &>/dev/null
332+
${PODMAN_SUDO} podman stop "${CONTAINER_NAME}" &>/dev/null || true
333+
${PODMAN_SUDO} podman rm "${CONTAINER_NAME}" --force &>/dev/null || true
327334

328-
if [[ "$ACTION" == "cleanup" ]]; then
335+
if [[ "${ACTION}" == "cleanup" ]]; then
329336
log_info "Removing container image..."
330-
${PODMAN_SUDO} podman rmi "${CONTAINER_IMAGE}" --force &>/dev/null
337+
${PODMAN_SUDO} podman rmi "${CONTAINER_IMAGE}" --force &>/dev/null || true
331338
log_info "Cleanup completed"
332339
exit 0
333340
fi
334341
}
335342
#Stop containers
336343
stop_containers() {
337344
log_info "Stopping running containers..."
338-
${PODMAN_SUDO} podman stop "$(${PODMAN_SUDO} podman ps -aqf name=${CONTAINER_NAME})" &>/dev/null &
339-
wait
340-
${PODMAN_SUDO} podman stop "$(${PODMAN_SUDO} podman ps -aqf name=${CONTAINER_NAME})" &>/dev/null && sleep 5
345+
local container_ids
346+
container_ids="$(${PODMAN_SUDO} podman ps -aqf name="${CONTAINER_NAME}" 2>/dev/null || true)"
347+
if [[ -n "${container_ids}" ]]; then
348+
${PODMAN_SUDO} podman stop ${container_ids} &>/dev/null &
349+
wait
350+
${PODMAN_SUDO} podman stop ${container_ids} &>/dev/null && sleep 5
351+
fi
341352
log_info "Containers stopped"
342353
}
343354
#Show logs
344355
show_logs() {
345356
local container_id
346-
container_id="$(${PODMAN_SUDO} podman ps -qf name=${CONTAINER_NAME})"
357+
container_id="$(${PODMAN_SUDO} podman ps -qf name="${CONTAINER_NAME}")"
347358

348359
if [[ -z "${container_id}" ]]; then
349360
log_error "No running container found with name: ${CONTAINER_NAME}"
@@ -394,7 +405,7 @@ run_container() {
394405
pull_image
395406

396407
#Create required directories
397-
${PODMAN_SUDO} mkdir -p "${DEFAULT_CONTAINER_TMP_VOLUME}" 2>/dev/null
408+
${PODMAN_SUDO} mkdir -p "${DEFAULT_CONTAINER_TMP_VOLUME}" 2>/dev/null || true
398409
if [[ ! -d "${DEFAULT_CONTAINER_TMP_VOLUME}" || ! -w "${DEFAULT_CONTAINER_TMP_VOLUME}" ]]; then
399410
mkdir -p "${FALLBACK_CONTAINER_TMP_VOLUME}" 2>/dev/null
400411
if [[ ! -d "${FALLBACK_CONTAINER_TMP_VOLUME}" || ! -w "${FALLBACK_CONTAINER_TMP_VOLUME}" ]]; then
@@ -437,7 +448,7 @@ run_container() {
437448

438449
#Get container details
439450
local container_id
440-
container_id="$(${PODMAN_SUDO} podman ps -qf name=${CONTAINER_NAME})"
451+
container_id="$(${PODMAN_SUDO} podman ps -qf name="${CONTAINER_NAME}")"
441452
export PODMAN_ID="${container_id}"
442453

443454
if [[ -z "${container_id}" ]]; then
@@ -447,7 +458,7 @@ run_container() {
447458
fi
448459

449460
local log_path
450-
log_path="$(${PODMAN_SUDO} podman inspect --format='{{.HostConfig.LogConfig.Path}}' ${CONTAINER_NAME} 2>/dev/null || echo "N/A")"
461+
log_path="$(${PODMAN_SUDO} podman inspect --format='{{.HostConfig.LogConfig.Path}}' "${CONTAINER_NAME}" 2>/dev/null || echo "N/A")"
451462
export PODMAN_LOGPATH="${log_path}"
452463

453464
log_info "Container started successfully"
@@ -464,15 +475,24 @@ run_container() {
464475
#Monitor runner process
465476
log_info "Monitoring runner process..."
466477
while true; do
467-
if ! pgrep -f "/usr/local/bin/manager.sh" > /dev/null; then
478+
# Check if container is still running first
479+
if ! ${PODMAN_SUDO} podman ps -q --filter "id=${container_id}" | grep -qi "${container_id}"; then
480+
log_warn "Container has stopped"
481+
break
482+
fi
483+
484+
# Check if manager process is running inside container
485+
local process_check
486+
process_check="$(${PODMAN_SUDO} podman exec "${container_id}" ps aux 2>/dev/null | grep -c "/usr/local/bin/manager.sh" || echo "0")"
487+
if [[ "${process_check}" -eq 0 ]]; then
468488
log_warn "Runner process has stopped"
469489
if [[ "${VERBOSE}" == "1" ]]; then
470490
cat "${LOG_FILE}"
471491
fi
472492
${PODMAN_SUDO} podman stop "${container_id}" --ignore
473493
break
474494
fi
475-
sleep 5
495+
sleep 12
476496
done
477497

478498
log_info "Runner completed"

0 commit comments

Comments
 (0)