Files
unity/unity-command/acquire_lock.sh

33 lines
917 B
Bash

#!/bin/bash
# Script to acquire a Docker-based lock for Unity image retagging
# Usage: acquire_lock.sh <lockName>
LOCK_NAME="$1"
TIMEOUT=10
WAIT_TIME=0.2
if [ -z "$LOCK_NAME" ]; then
echo "Error: LOCK_NAME parameter is required"
exit 1
fi
echo "Acquiring Docker lock '$LOCK_NAME' (timeout 10s)..."
# First, wait for any existing lock to be released
START_TS=$(date +%s)
while docker image ls --format '{{.Repository}}:{{.Tag}}' | grep -qx "$LOCK_NAME"; do
NOW_TS=$(date +%s)
ELAPSED=$((NOW_TS - START_TS))
if [ "$ELAPSED" -ge $TIMEOUT ]; then
echo "Lock '$LOCK_NAME' still held after ${ELAPSED}s; proceeding anyway."
break
fi
echo "Lock '$LOCK_NAME' is held by another job. Waiting $WAIT_TIME seconds... (${ELAPSED}s elapsed)"
sleep $WAIT_TIME
done
# Now create our lock
docker pull hello-world
docker tag hello-world "$LOCK_NAME"
echo "Lock acquired: $LOCK_NAME"