diff --git a/main/runner.sh b/main/runner.sh index 5038ffb..6f88e1b 100644 --- a/main/runner.sh +++ b/main/runner.sh @@ -1,8 +1,10 @@ #!/bin/bash # Copyright (c) 2022 fithwum # All rights reserved +set -eu USER=fithwum +FILE=config.yaml # openssh apt-get install openssh-client openssh-server @@ -39,10 +41,50 @@ wget https://gitea.com/gitea/act_runner/releases/download/v0.2.13/act_runner-0.2 mv act_runner-*-linux-amd64 act_runner chmod +x act_runner -./act_runner generate-config | tee config.yaml > /dev/null +./act_runner generate-config | tee $FILE > /dev/null chown fithwum:docker act_runner -chown fithwum:docker config.yaml -./act_runner --config config.yaml register +chown fithwum:docker $FILE + +############################################################################################ +# Count label entries inside the labels block +LABEL_COUNT=$(awk ' + $0 ~ /^ labels:/ {in=1; next} + in && $0 ~ /^ - / {c++} + in && NF==0 {in=0} + END {print c+0} +' "$FILE") + +if [ "$LABEL_COUNT" -ne 3 ]; then + echo "[ERROR] Expected exactly 3 labels, found $LABEL_COUNT. Aborting." + exit 1 +fi + +# Verify expected existing labels +awk ' + $0 ~ /^ labels:/ {in=1; next} + in && $0 ~ /^ - / {print} + in && NF==0 {exit} +' "$FILE" | grep -qx ' - "vm-ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"' \ +&& grep -qx ' - "vm-ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"' \ +&& grep -qx ' - "vm-ubuntu-20.04:docker://docker.gitea.com/runner-images:ubuntu-20.04"' \ +|| { + echo "[ERROR] Existing labels do not match expected values. Aborting." + exit 1 +} + +# Replace block +sed -i '/^ labels:/,/^$/c\ + labels:\n\ + - "vm-ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"\n\ + - "vm-ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"\n\ + - "vm-ubuntu-20.04:docker://docker.gitea.com/runner-images:ubuntu-20.04"\n\ + - "vm-docker-build:docker://catthehacker/ubuntu:custom-latest-20240215"\n\ + - "vm-docker-build2:docker://catthehacker/ubuntu:act-latest"' "$FILE" + +echo "[OK] labels block updated safely." +############################################################################################ + +./act_runner --config $FILE register ./act_runner register --no-interactive --instance --token --name @@ -53,7 +95,7 @@ Documentation=https://gitea.com/gitea/act_runner After=docker.service [Service] -ExecStart=/usr/local/bin/act_runner daemon --config /usr/local/bin/config.yaml +ExecStart=/usr/local/bin/act_runner daemon --config /usr/local/bin/$FILE ExecReload=/bin/kill -s HUP $MAINPID WorkingDirectory=/usr/local/bin TimeoutSec=0