😎完成forgejo-runner的流程
This commit is contained in:
@@ -3,34 +3,37 @@ version: "3.9"
|
|||||||
services:
|
services:
|
||||||
forgejo_runner:
|
forgejo_runner:
|
||||||
image: code.forgejo.org/forgejo/runner:7.0.0
|
image: code.forgejo.org/forgejo/runner:7.0.0
|
||||||
container_name: ${CONTAINER_NAME}
|
container_name: ${CONTAINER_NAME:-forgejo-runner}
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
user: "1000:1000" # 非 root 用户运行容器
|
||||||
- 1panel-network
|
|
||||||
command: >-
|
command: >-
|
||||||
bash -c '
|
/bin/sh -c '
|
||||||
if [ ! -f /data/.runner ]; then
|
cd /data &&
|
||||||
forgejo-runner create-runner-file --connect \
|
if [ ! -s .runner ]; then
|
||||||
|
echo ">>> Registering runner..."
|
||||||
|
forgejo-runner register --no-interactive \
|
||||||
--instance ${FORGEJO_INSTANCE_URL} \
|
--instance ${FORGEJO_INSTANCE_URL} \
|
||||||
|
--token ${RUNNER_REGISTRATION_TOKEN} \
|
||||||
--name ${RUNNER_NAME} \
|
--name ${RUNNER_NAME} \
|
||||||
--secret ${RUNNER_SHARED_SECRET} ;
|
--labels ${RUNNER_LABELS};
|
||||||
sed -i -e "s|\"labels\": null|\"labels\": [\"${RUNNER_LABELS}\"]|" /data/.runner ;
|
forgejo-runner generate-config > config.yml
|
||||||
forgejo-runner generate-config --config /data/config.yml ;
|
fi;
|
||||||
sed -i -e "s| level: info| level: debug|" /data/config.yml ;
|
echo ">>> Starting daemon..."
|
||||||
fi ;
|
forgejo-runner --config config.yml daemon
|
||||||
forgejo-runner --config /data/config.yml daemon
|
|
||||||
'
|
'
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker-forgejo-runner.sock
|
||||||
environment:
|
environment:
|
||||||
- FORGEJO_INSTANCE_URL=${FORGEJO_INSTANCE_URL}
|
- FORGEJO_INSTANCE_URL=${FORGEJO_INSTANCE_URL}
|
||||||
- RUNNER_NAME=${RUNNER_NAME}
|
- RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN}
|
||||||
- RUNNER_LABELS=${RUNNER_LABELS}
|
- RUNNER_NAME=${RUNNER_NAME:-default-runner}
|
||||||
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET}
|
- RUNNER_LABELS=${RUNNER_LABELS:-docker:docker://node:20-bookworm}
|
||||||
labels:
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
labels:
|
||||||
createdBy: "Apps"
|
createdBy: "Apps"
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
1panel-network:
|
1panel-network:
|
||||||
external: true
|
external: true
|
||||||
32
forgejo-runner/7.0.0/scripts/init.sh
Normal file
32
forgejo-runner/7.0.0/scripts/init.sh
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 创建数据目录并设置权限
|
||||||
|
mkdir -p data
|
||||||
|
touch data/.runner
|
||||||
|
touch data/config.yml
|
||||||
|
mkdir -p data/.cache
|
||||||
|
|
||||||
|
# 设置为 forgejo-runner 镜像中的默认非 root 用户
|
||||||
|
chown -R 1000:1000 data
|
||||||
|
chmod 775 data/.runner
|
||||||
|
chmod 775 data/.cache
|
||||||
|
chmod g+s data/.runner
|
||||||
|
chmod g+s data/.cache
|
||||||
|
|
||||||
|
# 创建自定义 docker context 指向 /var/run/docker-forgejo-runner.sock
|
||||||
|
SOCK_PATH="/var/run/docker-forgejo-runner.sock"
|
||||||
|
CONTEXT_NAME="forgejo-runner-context"
|
||||||
|
|
||||||
|
# 如果 context 已存在,则先删除
|
||||||
|
if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then
|
||||||
|
docker context rm -f "$CONTEXT_NAME"
|
||||||
|
echo "已删除旧的 Docker context: $CONTEXT_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker context create "$CONTEXT_NAME" \
|
||||||
|
--docker "host=unix://$SOCK_PATH"
|
||||||
|
|
||||||
|
echo "✅ 初始化完成:"
|
||||||
|
echo " - 已创建 ./data 并配置权限"
|
||||||
|
echo " - 已创建 Docker context: $CONTEXT_NAME -> $SOCK_PATH"
|
||||||
21
forgejo-runner/7.0.0/scripts/uninstall.sh
Normal file
21
forgejo-runner/7.0.0/scripts/uninstall.sh
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONTEXT_NAME="forgejo-runner-context"
|
||||||
|
SOCK_PATH="/var/run/docker-forgejo-runner.sock"
|
||||||
|
|
||||||
|
# 删除 Docker context
|
||||||
|
if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then
|
||||||
|
docker context rm -f "$CONTEXT_NAME"
|
||||||
|
echo "🗑️ 已删除 Docker context: $CONTEXT_NAME"
|
||||||
|
else
|
||||||
|
echo "⚠️ Docker context $CONTEXT_NAME 不存在,跳过删除。"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 删除 socket 文件(如果存在)
|
||||||
|
if [ -S "$SOCK_PATH" ]; then
|
||||||
|
rm -f "$SOCK_PATH"
|
||||||
|
echo "🗑️ 已删除 socket 文件: $SOCK_PATH"
|
||||||
|
else
|
||||||
|
echo "⚠️ Socket 文件 $SOCK_PATH 不存在,跳过删除。"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user