😎分开实现,dind以及宿主机
This commit is contained in:
parent
5cd791bdb2
commit
ca06eda632
|
|
@ -0,0 +1,67 @@
|
||||||
|
additionalProperties:
|
||||||
|
formFields:
|
||||||
|
- default: http://1.2.3.4:3000
|
||||||
|
edit: true
|
||||||
|
envKey: FORGEJO_INSTANCE_URL
|
||||||
|
labelEn: Forgejo Instance
|
||||||
|
labelZh: Forgejo 实例
|
||||||
|
required: true
|
||||||
|
rule: paramExtUrl
|
||||||
|
type: text
|
||||||
|
label:
|
||||||
|
en: Forgejo Instance
|
||||||
|
ja: Forgejo インスタンス
|
||||||
|
ms: Instans Forgejo
|
||||||
|
pt-br: Instância Forgejo
|
||||||
|
ru: Экземпляр Forgejo
|
||||||
|
ko: Forgejo 인스턴스
|
||||||
|
zh-Hant: Forgejo 實例
|
||||||
|
zh: Forgejo 实例
|
||||||
|
- default: '<registration_token>'
|
||||||
|
edit: true
|
||||||
|
envKey: RUNNER_REGISTRATION_TOKEN
|
||||||
|
labelEn: Registration Token
|
||||||
|
labelZh: Registration Token
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
label:
|
||||||
|
en: Registration Token
|
||||||
|
ja: 登録トークン
|
||||||
|
ms: Token Pendaftaran
|
||||||
|
pt-br: Token de Registro
|
||||||
|
ru: Токен регистрации
|
||||||
|
ko: 등록 토큰
|
||||||
|
zh-Hant: 註冊令牌
|
||||||
|
zh: 注册令牌
|
||||||
|
- default: '<runner_name>'
|
||||||
|
edit: true
|
||||||
|
envKey: RUNNER_NAME
|
||||||
|
labelEn: Runner Name
|
||||||
|
labelZh: Runner Name
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
label:
|
||||||
|
en: Runner Name
|
||||||
|
ja: ランナー名
|
||||||
|
ms: Nama Pelari
|
||||||
|
pt-br: Nome do Runner
|
||||||
|
ru: Имя бегуна
|
||||||
|
ko: 러너 이름
|
||||||
|
zh-Hant: 執行器名稱
|
||||||
|
zh: 运行器名称
|
||||||
|
- default: '<runner_labels>'
|
||||||
|
edit: true
|
||||||
|
envKey: RUNNER_LABELS
|
||||||
|
labelEn: Runner Labels
|
||||||
|
labelZh: Runner Labels
|
||||||
|
required: true
|
||||||
|
type: text
|
||||||
|
label:
|
||||||
|
en: Runner Labels
|
||||||
|
ja: ランナータグ
|
||||||
|
ms: Label Pelari
|
||||||
|
pt-br: Rótulos do Runner
|
||||||
|
ru: Метки бегуна
|
||||||
|
ko: 러너 레이블
|
||||||
|
zh-Hant: 執行器標籤
|
||||||
|
zh: 运行器标签
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
version: "3.9"
|
||||||
|
services:
|
||||||
|
dind:
|
||||||
|
image: docker:dind
|
||||||
|
container_name: forgejo-dind
|
||||||
|
privileged: true
|
||||||
|
restart: 'unless-stopped'
|
||||||
|
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
|
||||||
|
environment:
|
||||||
|
DOCKER_TLS_CERTDIR: ""
|
||||||
|
volumes:
|
||||||
|
- ./data/dind-data:/var/lib/docker
|
||||||
|
- ./data/daemon.json:/etc/docker/daemon.json:ro
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
labels:
|
||||||
|
createdBy: "Apps"
|
||||||
|
forgejo_runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:7.0.0
|
||||||
|
container_name: ${CONTAINER_NAME:-forgejo-runner}
|
||||||
|
depends_on:
|
||||||
|
dind:
|
||||||
|
condition: service_started
|
||||||
|
links:
|
||||||
|
- dind
|
||||||
|
restart: always
|
||||||
|
user: "1000:1000" # 非 root 用户运行容器
|
||||||
|
command: "/data/scripts/register.sh"
|
||||||
|
volumes:
|
||||||
|
- ./data/runner-data:/data
|
||||||
|
- ./scripts/register.sh:/data/scripts/register.sh:ro
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://dind:2375
|
||||||
|
- FORGEJO_INSTANCE_URL=${FORGEJO_INSTANCE_URL}
|
||||||
|
- RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN}
|
||||||
|
- RUNNER_NAME=${RUNNER_NAME}
|
||||||
|
- RUNNER_LABELS=${RUNNER_LABELS}
|
||||||
|
networks:
|
||||||
|
- 1panel-network
|
||||||
|
labels:
|
||||||
|
createdBy: "Apps"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
1panel-network:
|
||||||
|
external: true
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 正在初始化 Forgejo Runner 所需目录..."
|
||||||
|
|
||||||
|
# 进入项目目录
|
||||||
|
mkdir -p data
|
||||||
|
cd data
|
||||||
|
|
||||||
|
## ----------------------------
|
||||||
|
## Runner 数据目录及权限设置
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
mkdir -p runner-data
|
||||||
|
touch runner-data/.runner
|
||||||
|
touch runner-data/config.yml
|
||||||
|
mkdir -p runner-data/.cache
|
||||||
|
|
||||||
|
# 设置权限为 forgejo-runner 镜像中默认用户(UID 1000)
|
||||||
|
chown -R 1000:1000 runner-data
|
||||||
|
chmod 775 runner-data/.runner
|
||||||
|
chmod 775 runner-data/.cache
|
||||||
|
chmod g+s runner-data/.runner
|
||||||
|
chmod g+s runner-data/.cache
|
||||||
|
|
||||||
|
## ----------------------------
|
||||||
|
## Docker-in-Docker 数据目录
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
mkdir -p dind-data
|
||||||
|
echo "📦 已创建 ./data/dind-data 目录(用于持久化 dind 镜像和元数据)"
|
||||||
|
|
||||||
|
## ----------------------------
|
||||||
|
## daemon.json 镜像加速配置
|
||||||
|
## ----------------------------
|
||||||
|
|
||||||
|
if [ -f /etc/docker/daemon.json ]; then
|
||||||
|
echo "📥 检测到宿主机的 /etc/docker/daemon.json,正在复制..."
|
||||||
|
cp /etc/docker/daemon.json ./daemon.json
|
||||||
|
else
|
||||||
|
echo "📄 未检测到宿主机 daemon.json,正在生成默认镜像加速配置..."
|
||||||
|
cat > ./daemon.json <<EOF
|
||||||
|
{
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://docker.1panel.live",
|
||||||
|
"https://docker.1ms.run"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# 设置 register.sh 可执行权限
|
||||||
|
chmod +x ./scripts/register.sh
|
||||||
|
|
||||||
|
# 完成信息
|
||||||
|
echo "✅ 初始化完成:"
|
||||||
|
echo " - ./data/runner-data 已就绪并设置权限"
|
||||||
|
echo " - ./data/dind-data 创建完毕(dind 镜像缓存目录)"
|
||||||
|
echo " - ./data/daemon.json 已生成或复制"
|
||||||
|
echo " - ./scripts/register.sh 设置为可执行文件"
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 等待 dockerd 可用
|
||||||
|
echo "⏳ Waiting for Docker daemon on dind..."
|
||||||
|
until curl -s http://dind:2375/_ping | grep -q "OK"; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo "✅ Docker daemon is ready."
|
||||||
|
|
||||||
|
cd /data
|
||||||
|
|
||||||
|
if [ ! -s .runner ]; then
|
||||||
|
echo ">>> Registering runner..."
|
||||||
|
forgejo-runner register --no-interactive \
|
||||||
|
--instance "$FORGEJO_INSTANCE_URL" \
|
||||||
|
--token "$RUNNER_REGISTRATION_TOKEN" \
|
||||||
|
--name "$RUNNER_NAME" \
|
||||||
|
--labels "$RUNNER_LABELS"
|
||||||
|
forgejo-runner generate-config > config.yml
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ">>> Starting daemon..."
|
||||||
|
exec forgejo-runner --config config.yml daemon
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Forgejo Actions Runner
|
||||||
|
|
||||||
|
**Forgejo Actions Runner** 是 Forgejo 的官方运行器组件,用于执行 CI/CD 工作流中的各类任务。它与 Forgejo Actions 系统集成,支持本地或远程运行任务,帮助用户构建自动化 DevOps 流程。
|
||||||
|
|
||||||
|
> 该容器基于Dind,安全性更强,与宿主机完全独立,基本没有越权,适合组织使用
|
||||||
|
|
||||||
|
适合希望**完全自托管** CI/CD 流水线的个人或组织部署使用。
|
||||||
|
|
||||||
|
## ✨ 特性
|
||||||
|
|
||||||
|
- 与 Forgejo Actions 完全集成
|
||||||
|
- 支持自定义容器或直接在主机运行
|
||||||
|
- 多 Runner 支持并行执行
|
||||||
|
- 支持 amd64 / arm64 等架构
|
||||||
|
- 简单易用,部署轻量
|
||||||
|
|
||||||
|
## ⚙️ 快速开始(Docker 部署)
|
||||||
|
|
||||||
|
### 1. 启动 Forgejo 主服务(略)
|
||||||
|
|
||||||
|
确保 Forgejo 主程序已部署并启用了 Actions 功能。
|
||||||
|
|
||||||
|
### 2. 运行 Action Runner 容器
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d --name forgejo-runner \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v /opt/runner:/data \
|
||||||
|
codeberg.org/forgejo/runner:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 初始化注册
|
||||||
|
|
||||||
|
首次运行后,进入容器进行注册:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it forgejo-runner forgejo-runner register
|
||||||
|
```
|
||||||
|
|
||||||
|
你需要提供:
|
||||||
|
|
||||||
|
- **Forgejo 实例 URL**(例如 `https://git.example.com`)
|
||||||
|
- **Runner Token**(从仓库或组织设置中获取)
|
||||||
|
- **运行模式**(Docker / shell 等)
|
||||||
|
- **标签**(可选,便于任务调度)
|
||||||
|
|
||||||
|
## 🔄 自动启动示例(Docker Compose)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
forgejo-runner:
|
||||||
|
image: codeberg.org/forgejo/runner:latest
|
||||||
|
container_name: forgejo-runner
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./runner-data:/data
|
||||||
|
restart: unless-stopped
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📘 文档与资源
|
||||||
|
|
||||||
|
- 项目主页:https://forgejo.org/docs/latest/admin/actions/
|
||||||
|
- 源码仓库:https://code.forgejo.org/forgejo/runner
|
||||||
|
|
||||||
|
## 🧑🤝🧑 关于 Forgejo Runner
|
||||||
|
|
||||||
|
Forgejo Runner 是社区主导的 CI 执行器,致力于提供安全、可控、可扩展的构建环境。它是 Forgejo 构建完整 DevOps 生态的重要组成部分。
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
name: Forgejo Runner Docker in Docker
|
||||||
|
tags:
|
||||||
|
- DevOps
|
||||||
|
title: Forgejo Actions 的 Runner 基于 Dind
|
||||||
|
description: Forgejo Actions 的 Runner
|
||||||
|
additionalProperties:
|
||||||
|
key: forgejo-runner-dind
|
||||||
|
name: Forgejo Runner Docker in Docker
|
||||||
|
tags:
|
||||||
|
- DevOps
|
||||||
|
shortDescZh: Forgejo Actions 的 Runner
|
||||||
|
shortDescEn: A runner for Forgejo based on Forgejo fork of act
|
||||||
|
description:
|
||||||
|
en: A runner for Forgejo based on Forgejo fork of act
|
||||||
|
ja: act の Forgejo フォークに基づいた Forgejo 用ランナー
|
||||||
|
ms: Penjalank untuk Forgejo berdasarkan fork Forgejo dari act
|
||||||
|
pt-br: Um runner para Forgejo baseado no fork do Forgejo do act
|
||||||
|
ru: Раннер для Forgejo на основе форка Forgejo от act
|
||||||
|
ko: act의 Forgejo 포크를 기반으로 한 Forgejo용 러너
|
||||||
|
zh-Hant: 基於 Forgejo fork 的 act 的 Forgejo 執行器
|
||||||
|
zh: 基于 Forgejo fork 的 act 的 Forgejo 运行器
|
||||||
|
type: tool
|
||||||
|
crossVersionUpdate: true
|
||||||
|
limit: 0
|
||||||
|
recommend: 0
|
||||||
|
website: https://forgejo.org/docs/latest/admin/actions/
|
||||||
|
github: https://code.forgejo.org/forgejo/runner
|
||||||
|
document: https://forgejo.org/docs/latest/admin/actions/
|
||||||
|
architectures:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.0 KiB |
Loading…
Reference in New Issue