#!/bin/bash # Copyright (c) 2022 fithwum # All rights reserved set -eu USER=fithwum FILE=config.yaml # openssh apt-get install openssh-client openssh-server # docker setup apt-get remove -y $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1) # Add Docker's official GPG key: apt-get update apt-get install ca-certificates curl install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: tee /etc/apt/sources.list.d/docker.sources < /dev/null chown fithwum:docker act_runner 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 tee /etc/systemd/system/act_runner.service <