跳到主要内容

Gitea

阅读量: 101
阅读人次: 102

import SourceCodeBlock from '@site/src/components/SourceCodeBlock';

Gitea 是一个轻量级的 DevOps 平台。它为团队和开发人员带来了从规划到生产的高效且轻松的操作。

以前选择使用 Gitea 二进制可执行文件在服务器上进行部署,现在觉得部署和备份成本太高,还是 Docker镜像 比较方便快捷。

id amass # 确认amass用户的uid、gid
docker run -d --restart=always --name=gitea \
-p 2022:22 -p 3000:3000 \
-e USER_UID=1000 -e USER_GID=100 \
-e TZ="Asia/Shanghai" \
-v /mnt/user/appdata/gitea:/data \
gitea/gitea:1.24.6

参考 反向代理 一节,修改配置文件:/mnt/user/appdata/gitea/gitea/conf/app.ini

因为 actions/checkout 不支持设置 Sub Path,所以我们也不使用 Gitea 的 Sub Path 以用来节省域名了。(自己实现 checkout 很繁琐,对于跨平台也有很多细节需要考虑。)

[server]
ROOT_URL = https://gitea.amass.fun
SSH_DOMAIN = gitea.amass.fun
SSH_PORT = 2022

[service]
# 禁止外部用户自己注册,只能管理员创建账号
DISABLE_REGISTRATION = true

# 开启 Gitea Actions 功能
[actions]
ENABLED = true

[repository]
DEFAULT_BRANCH = master

MySQL配置

数据库准备,推荐使用字符集 utf8mb4_0900_as_cs

Act Runner

在 unRaid 应用市场提供的 Act Runner 不支持 Docker-in-Docker 功能,那么实际作用就很小了,为了满足实际需求,我们自己构建。

使用:

rm -fr /mnt/user/appdata/gitea-runner
docker run -d --name='gitea-runner' --restart=always \
-e TZ="Asia/Shanghai" \
-e GITEA_RUNNER_REGISTRATION_TOKEN='your_token' \
-e GITEA_RUNNER_NAME='unraid_act_runner' \
-e GITEA_RUNNER_LABELS='ubuntu-24.04,ubuntu-latest' \
-e GITEA_INSTANCE_URL='https://gitea.amass.fun' \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /mnt/user/appdata/gitea-runner/data:/data \
registry.cn-shenzhen.aliyuncs.com/amass_law/act_runner:0.2.13

GITEA_RUNNER_REGISTRATION_TOKEN:在Actions设置创建 Runner的下拉框可以找到。

Windows

这里我们记录Windows下的搭建步骤,先向Gitea服务器进行注册:

.\act_runner.exe register --no-interactive --instance https://gitea.amass.fun \
--token your_token --name windows11_unraid --labels windows11

注册成功后会在当前文件夹下生成一个.runner文件。如果想重新进行修改注册,可以删掉这个文件然后再次执行上述命令。

执行:

.\act_runner.exe daemon

即可启动 Act Runner 以接收并执行后续对应Gitea服务器的 actions。不过为了使得其可以开机运行,我们借助WinSW创建Windows服务,下载WinSW的可执行程序WinSW-x64.exe,拷贝到act_runner.exe所在的目录下。注意目录路径不能有空格和非ASCII字符。

WinSW-x64.exe命名成act_runner-service.exe(事实上名字任意,只要和后面的xml文件同名即可),再创建配置文件:

D:\gitea\act_runner-service.xml
<!-- act_runner-service.xml -->
<service>
<id>act_runner</id>
<name>act_runner</name>
<description>Act runner is a runner for Gitea based on Gitea fork of act.</description>
<executable>D:\gitea\act_runner.exe</executable>
<onfailure action="restart" delay="5 sec" />
<resetfailure>1 day</resetfailure>
<arguments>daemon</arguments>
<workingdirectory>D:\gitea</workingdirectory>
<priority>AboveNormal</priority>
<stoptimeout>15 sec</stoptimeout>
<stopparentprocessfirst>false</stopparentprocessfirst>
<startmode>Automatic</startmode>
<waithint>15 sec</waithint>
<sleeptime>1 sec</sleeptime>
<logpath>D:\gitea\logs</logpath>
<log mode="roll-by-time">
<pattern>yyyyMMdd</pattern>
</log>
</service>

然后执行如下命令:

.\act_runner-service.exe install 	# 安装这个service
.\act_runner-service.exe start # 启动这个service

下载并安装Node.jsGit for Windows

执行如下命令,以让Windows可以成功执行任何powershell脚本:

Set-ExecutionPolicy Unrestricted

迁移、备份

打包数据目录:

cd /mnt/user/appdata/
tar czvf gitea.tar.gz ./gitea

数据库导出

使用 HeidiSQL 备份数据库:

为了确保所有数据都能完成导出,建议将 最大 INSERT 大小 的值尽可能加大。

数据库导入

首先选中 MySQL 实例:

然后导入sql:

选择我们之前导出的文件 gitea.sql,按提示确认之后,数据库即可导入完成。