Gitea
Office Web - Source - Docker Image - Document
Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。
本教程以 PostgreSQL 方式进行安装。
先决条件
- 确保当前服务器的 ssh 连接端口非 22 端口。以便可以通过 ssh 方式拉取和提交代码。
- 将此域名绑定到此服务器 IP,以便通过域名拉取和提交代码。
使用方法
- 创建数据库
bash
CREATE DATABASE gitea;环境变量
bash
# 若主域名使用了 CDN,则必须设置此域名
GITEA__server__SSH_DOMAIN=ssh.example.com
# 去掉 repo.actions,则默认不启用 Actions
GITEA__repository__DEFAULT_REPO_UNITS=repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki,repo.projects,repo.packages,repo.actions
GITEA__database__DB_TYPE=postgres
GITEA__database__HOST=db:5432
GITEA__database__NAME=gitea
GITEA__database__USER=gitea
GITEA__database__PASSWD=gitea
GITEA__mailer__ENABLED=true
GITEA__mailer__FROM=
GITEA__mailer__PROTOCOL=smtp
GITEA__mailer__HOST=
GITEA__mailer__IS_TLS_ENABLED=true
GITEA__mailer__USER=
GITEA__mailer__PASSWD=配置 app.ini
- 关闭注册功能
bash
[server]
# 自定义 SSH 域名
SSH_DOMAIN = ssh.example.com
[service]
# 禁止用户注册
DISABLE_REGISTRATION = true
# 显示注册按钮
SHOW_REGISTRATION_BUTTON = false
# 默认禁用新仓库的 Actions
# https://docs.gitea.com/zh-cn/next/usage/actions/faq#%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%88%91%E7%9A%84%E5%AE%9E%E4%BE%8B%E4%B8%AD%E9%BB%98%E8%AE%A4%E7%A6%81%E7%94%A8%E6%96%B0%E4%BB%93%E5%BA%93%E7%9A%84actions
[repository]
# 去掉 repo.actions 将不会为新仓库自动启用actions
# https://docs.gitea.com/zh-cn/administration/config-cheat-sheet?_highlight=default_repo_units#%E4%BB%93%E5%BA%93-repository
DEFAULT_REPO_UNITS = ...,repo.actionsCI/CD 自动构建平台
Gitea Runner
初始化配置文件
bash
docker run --entrypoint="" --rm -it gitea/act_runner:nightly act_runner generate-config > config.yaml获取注册令牌
bash
gitea --config /etc/gitea/app.ini actions generate-runner-token或全局注册令牌
bash
openssl rand -hex 24 > /some-dir/runner-token
export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
./gitea --config ...
# Docker 中使用时
## 1. 生成密钥文件
openssl rand -hex 24 > runner-token
## 2. 更新 .env 文件中 GITEA_RUNNER_REGISTRATION_TOKEN_FILE 的环境变量
## 若 GITEA_RUNNER_REGISTRATION_TOKEN 与 GITEA_RUNNER_REGISTRATION_TOKEN_FILE 同时设置时,优先使用 GITEA_RUNNER_REGISTRATION_TOKEN
GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/runner-token
## 3. 映射至容器中
gitea:
...
volumes:
- ./runner-token:/runner-token
runner:
...
volumes:
- ./runner-token:/runner-token注册 Runner
bash
./act_runner register
# 或
./act_runner --config config.yaml register非交互式
bash
./act_runner register --no-interactive --instance <instance_url> --token <registration_token> --name <runner_name> --labels <runner_labels>Runner 镜像
bash
ghcr.io/catthehacker/ubuntu:act-22.04
ghcr.io/catthehacker/ubuntu:act-24.04
ghcr.io/catthehacker/ubuntu:act-latest- 更新
config.yaml,使用对应的镜像
yaml
labels:
- "ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
- "ubuntu-24.04:docker://ghcr.io/catthehacker/ubuntu:act-24.04"
- "ubuntu-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04"Drone 平台
首先,将此域名绑定到此服务器 IP。
生成 Gitea 应用密钥
GITEA 为 Gitea 代码托管服务的域名,DRONE 为 Drone 的访问域名。
- 打开网址
https://{GITEA}/user/settings/applications。 - 最下方 创建新的 OAuth2 应用程序,应用名称设置为
Drone,重定向 URI设置为https://{DRONE}/login. - 记录下 客户端ID(DRONE_GITEA_CLIENT_ID)、客户端密钥(DRONE_GITEA_CLIENT_SECRET)。
- 执行下述命令行:
bash
# 安装
./run.sh drone {{DRONE_SERVER_HOST}} {{DRONE_GITEA_CLIENT_ID}} {{DRONE_GITEA_CLIENT_SECRET}}DRONE_SERVER_HOST: Drone 访问的实际域名 DRONE_GITEA_CLIENT_ID: Gitea 应用客户端ID DRONE_GITEA_CLIENT_SECRET: Gitea 应用客户端密钥
Woodpecker 平台
首先,将此域名绑定到此服务器 IP。
生成 Gitea 应用密钥
GITEA 为 Gitea 代码托管服务的域名,WOODPECKER 为 Woodpecker 的访问域名。
- 打开网址
https://{GITEA}/user/settings/applications。 - 最下方 创建新的 OAuth2 应用程序,应用名称设置为
Woodpecker,重定向 URI设置为https://{WOODPECKER}/authorize. - 记录下 客户端ID(WOODPECKER_GITEA_CLIENT)、客户端密钥(WOODPECKER_GITEA_SECRET)。
- 执行下述命令行:
bash
# 安装
./run.sh woodpecker {{WOODPECKER_HOST}} {{WOODPECKER_GITEA_CLIENT}} {{WOODPECKER_GITEA_SECRET}}WOODPECKER_HOST: Woodpecker 访问的实际域名 WOODPECKER_GITEA_CLIENT: Gitea 应用客户端ID WOODPECKER_GITEA_SECRET: Gitea 应用客户端密钥
教程
- 视频教程: