docs: update zh-tw (#265)

Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <[email protected]>
Co-authored-by: ifurther <[email protected]>
Co-committed-by: ifurther <[email protected]>
This commit is contained in:
ifurther
2025-09-03 21:00:35 +00:00
committed by techknowlogick
parent 908a27589d
commit cb462089e9
88 changed files with 3545 additions and 3423 deletions
@@ -10,36 +10,36 @@ sidebar_position: 20
## 要求
建议在Docker容器中运行Job,因此您需要首先安Docker。
确保Docker守护程正在运行。
建议在Docker容器中运行Job,因此您需要首先安Docker。
确保Docker守护程正在运行。
其他与Docker API兼容的OCI容器引擎也应该可以正常工作,但尚未经测试。
其他与Docker API兼容的OCI容器引擎也應該可以正常工作,但尚未经测试。
但是,如果您确定要直接在主机上运行Job,则不需要Docker。
## 安
## 安
有多种安Act Runner的方法。
有多种安Act Runner的方法。
### 下载二制文件
### 下载二制文件
您可以从[发布页面](https://gitea.com/gitea/act_runner/releases)下载二制文件。
您可以从[發佈页面](https://gitea.com/gitea/act_runner/releases)下载二制文件。
然而,如果您想使用最新的夜间构建版本,可以从[下载页面](https://dl.gitea.com/act_runner/)下载。
下载二制文件时,确保您已经下载了适用于您的平台的正确版本。
您可以通运行以下命令行检查:
下载二制文件时,确保您已经下载了适用于您的平台的正确版本。
您可以通运行以下命令行检查:
```bash
chmod +x act_runner
./act_runner --version
```
如果看到版本信息,则表示您已经下载了正确的二制文件。
如果看到版本信息,则表示您已经下载了正确的二制文件。
### 使用 Docker 镜像
您可以使用[docker hub](https://hub.docker.com/r/gitea/act_runner/tags)上的Docker镜像。
与二制文件类似,您可以使用`nightly`标签使用最新的夜间构建版本,而`latest`标签是最新的稳定版本。
与二制文件类似,您可以使用`nightly`標籤使用最新的夜间构建版本,而`latest`標籤是最新的稳定版本。
```bash
docker pull docker.io/gitea/act_runner:latest # for the latest stable release
@@ -48,9 +48,9 @@ docker pull docker.io/gitea/act_runner:nightly # for the latest nightly build
## 配置
配置通配置文件行。它是可的,当没有指定配置文件时,将使用默认配置。
配置通配置文件行。它是可的,当没有指定配置文件时,将使用默认配置。
您可以通运行以下命令生成配置文件:
您可以通运行以下命令生成配置文件:
```bash
./act_runner generate-config
@@ -63,54 +63,54 @@ docker pull docker.io/gitea/act_runner:nightly # for the latest nightly build
./act_runner --config config.yaml [command]
```
您亦可以如下使用 docker 建配置文件:
您亦可以如下使用 docker 建配置文件:
```bash
docker run --entrypoint="" --rm -it docker.io/gitea/act_runner:latest act_runner generate-config > config.yaml
```
当使用Docker镜像时,可以使用`CONFIG_FILE`环境变量指定配置文件。确保将文件作卷挂载到容器中:
当使用Docker镜像时,可以使用`CONFIG_FILE`环境变量指定配置文件。确保将文件作卷挂载到容器中:
```bash
docker run -v $(pwd)/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
```
您可能注意到上面的命令都是不完整的,因为现在还不是运行Act Runner的时候。
您可能注意到上面的命令都是不完整的,因為現在還不是运行Act Runner的时候。
在运行Act Runner之前,我们需要首先将其注册到您的Gitea实例中。
## 注册
在运行Act Runner之前,需要行注册,因Runner需要知道从哪里获取Job并且对于Gitea实例来说,识别Runner也很重要。
在运行Act Runner之前,需要行注册,因Runner需要知道从哪里获取Job並且對於Gitea实例来说,识别Runner也很重要。
### Runner级别
您可以在不同级别上注册Runner,它可以是:
- 实例级别:Runner将实例中的所有存库运行Job。
- 组织级别:Runner将为组织中的所有存库运行Job。
-库级别:Runner将其所属的存库运行Job。
- 实例级别:Runner将实例中的所有存库运行Job。
- 組織级别:Runner将為組織中的所有存库运行Job。
-库级别:Runner将其所属的存库运行Job。
注意,即使存库具有自己的存库级别Runner,它仍然可以使用实例级别或组织级别Runner。未来的版本可能提供更多对此行更好控制的项。
注意,即使存库具有自己的存库级别Runner,它仍然可以使用实例级别或組織级别Runner。未来的版本可能提供更多对此行更好控制的项。
### 获取注册令牌
Runner级别决定了从哪里获取注册令牌。
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
如果您法看到设置页面,确保您具有正确的权限且已启用 Actions。
如果您法看到设置页面,确保您具有正确的权限且已启用 Actions。
注册令牌的格式是一个随机字符串 `D0gvfu2iHfUjNqCYVljVyRV14fISpJxxxxxxxxxx`
注册令牌也可以通 Gitea 的 [命令行](../../administration/command-line.md#actions-generate-runner-token) 获得:
注册令牌也可以通 Gitea 的 [命令行](../../administration/command-line.md#actions-generate-runner-token) 获得:
```
gitea --config /etc/gitea/app.ini actions generate-runner-token
```
用户也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 环境变量以在 Gitea 启动时设置全局的注册令牌,例如:
使用者也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 环境变量以在 Gitea 启动时设置全局的注册令牌,例如:
```
openssl rand -hex 24 > /some-dir/runner-token
@@ -118,19 +118,19 @@ export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
./gitea --config ...
```
来自环境变量的令牌在通 Web 界面或 API 重置(重新建新令牌)前将一直有效。
来自环境变量的令牌在通 Web 界面或 API 重置(重新建新令牌)前将一直有效。
令牌可用于注册多个 Runner,直到使用 Web 界面中的令牌重置链接将其撤销替换新令牌。
令牌可用于注册多个 Runner,直到使用 Web 界面中的令牌重置链接将其撤销替换新令牌。
### 注册Runner
可以通运行以下命令来注册Act Runner:
可以通运行以下命令来注册Act Runner:
```bash
./act_runner register
```
或者,您可以使用 `--config` 项来指定前面部分提到的配置文件。
或者,您可以使用 `--config` 项来指定前面部分提到的配置文件。
```bash
./act_runner --config config.yaml register
@@ -140,26 +140,26 @@ export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
- Gitea 实例的 URL,例如 `https://gitea.com/``http://192.168.8.8:3000/`
- 注册令牌。
- Runner名(可)。如果留空,将使用主机名。
- Runner标签(可)。如果留空,将使用默认标签
- Runner名(可)。如果留空,将使用主机名。
- Runner標籤(可)。如果留空,将使用默认標籤
您可能对Runner标签感到困惑,稍后将对其行解释。
您可能对Runner標籤感到困惑,稍后将对其行解释。
如果您想以非交互方式注册Runner,可以使用参数执行以下操作。
如果您想以非交互方式注册Runner,可以使用參數執行以下操作。
```bash
./act_runner register --no-interactive --instance <instance_url> --token <registration_token> --name <runner_name> --labels <runner_labels>
```
注册Runner后,您可以在当前目中找到一个名 `.runner` 的新文件。文件存注册信息。
不要手动编辑文件。
如果此文件丢失或损坏,可以直接删除它重新注册。
注册Runner后,您可以在当前目中找到一个名 `.runner` 的新文件。文件存注册信息。
不要手动编辑文件。
如果此文件丢失或损坏,可以直接删除它重新注册。
如果您想将注册信息存在其他位置,在配置文件中指定,不要忘记指定 `--config` 项。
如果您想将注册信息存在其他位置,在配置文件中指定,不要忘记指定 `--config` 项。
### 使用Docker注册Runner
如果您使用的是Docker镜像,注册行会略有不同。在这种情况下,注册和运行合并为一步,因此您需要在运行Act Runner时指定注册信息。
如果您使用的是Docker镜像,注册行会略有不同。在这种情况下,注册和运行合並為一步,因此您需要在运行Act Runner时指定注册信息。
```bash
docker run \
@@ -176,7 +176,7 @@ docker run \
```
您可能注意到我们已将`/var/run/docker.sock`挂载到容器中。
这是因Act Runner将在Docker容器中运行Job,因此它需要与Docker守护进程进行通信。
这是因Act Runner将在Docker容器中运行Job,因此它需要与Docker守护進程進行通信。
如前所述,如果要在主机上直接运行Job,可以将其移除。
需要明确的是,这里的 "主机" 实际上指的是当前运行 Act Runner的容器,而不是主机机器本身。
@@ -205,11 +205,11 @@ services:
如果你不打算在工作流中使用 `actions/cache`,你可以忽略本段。
如果您在使用 `actions/cache` 时没有行额外的配置,将会返回以下错误信息:
如果您在使用 `actions/cache` 时没有行额外的配置,将会返回以下错误信息:
> Failed to restore: getCacheEntry failed: connect ETIMEDOUT IP:PORT
这个错误的原因是 runner 容器和作业容器位于不同的网络中,因此作业容器法访问 runner 容器。
因此,配置 cache 动作以确保其正常运行是非常重要的。按照以下步骤操作:
这个错误的原因是 runner 容器和作业容器位于不同的网络中,因此作业容器法访问 runner 容器。
因此,配置 cache 动作以确保其正常运行是非常重要的。按照以下步骤操作:
- 1.获取 Runner 容器所在主机的 LAN(本地局域网) IP 地址。
- 2.获取一个 Runner 容器所在主机的空闲端口号。
@@ -234,27 +234,27 @@ docker run \
-d gitea/act_runner:nightly
```
### 标签
### 標籤
Runner的标签用于确定Runner可以运行哪些Job以及如何运行它们。
Runner的標籤用于确定Runner可以运行哪些Job以及如何运行它们。
默认标签为`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
它们是逗号分隔的列表,每个项目都是一个标签
默认標籤為`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
它们是逗号分隔的列表,每个项目都是一个標籤
让我们以 `ubuntu-22.04:docker://node:16-bullseye` 例。
它意味着Runner可以运行带有`runs-on: ubuntu-22.04`的Job并且该Job将在使用`node:16-bullseye`镜像的Docker容器中运行。
让我们以 `ubuntu-22.04:docker://node:16-bullseye` 例。
它意味着Runner可以运行带有`runs-on: ubuntu-22.04`的Job並且該Job将在使用`node:16-bullseye`镜像的Docker容器中运行。
如果默认镜像法满足您的需求,且您有足够的磁盘空间可以使用更好、更大的镜像,您可以将其更改`ubuntu-22.04:docker://<您喜欢的镜像>`
如果默认镜像法满足您的需求,且您有足够的硬碟空间可以使用更好、更大的镜像,您可以将其更改`ubuntu-22.04:docker://<您喜欢的镜像>`
您可以在[act 镜像](https://github.com/nektos/act/blob/master/IMAGES.md)上找到更多有用的镜像。
如果您想直接在主机上运行Job,您可以将其更改`ubuntu-22.04:host``ubuntu-22.04``:host`是可的。
然而,我们建议您使用类似`linux_amd64:host``windows:host`的特殊名,以避免误用。
如果您想直接在主机上运行Job,您可以将其更改`ubuntu-22.04:host``ubuntu-22.04``:host`是可的。
然而,我们建议您使用类似`linux_amd64:host``windows:host`的特殊名,以避免误用。
从 Gitea 1.21 开始,您可以通修改 runner 的配置文件中的 `container.labels` 来更改标签(如果没有配置文件,参考 [配置教程](#配置)),通过执`./act_runner daemon --config config.yaml` 命令重启 runner 之后,这些新定义的标签就会生效。
从 Gitea 1.21 开始,您可以通修改 runner 的配置文件中的 `container.labels` 来更改標籤(如果没有配置文件,参考 [配置教程](#配置)),通過執`./act_runner daemon --config config.yaml` 命令重启 runner 之后,这些新定义的標籤就会生效。
## 运行
注册完Runner后,您可以通运行以下命令来运行它:
注册完Runner后,您可以通运行以下命令来运行它:
```bash
./act_runner daemon
@@ -262,6 +262,6 @@ Runner的标签用于确定Runner可以运行哪些Job以及如何运行它们
./act_runner daemon --config config.yaml
```
Runner将从Gitea实例获取Job自动运行它们。
Runner将从Gitea实例获取Job自动运行它们。
由于Act Runner仍处于开发中,建议定期检查最新版本并进行升级。
由于Act Runner仍处于开发中,建议定期检查最新版本並進行升级。
@@ -12,13 +12,13 @@ sidebar_position: 15
### Action URL绝对路径
Gitea Actions支持通URL绝对路径定义actions,这意味着您可以使用来自任何Git存库的Actions。
Gitea Actions支持通URL绝对路径定义actions,这意味着您可以使用来自任何Git存库的Actions。
例如,`uses: https://github.com/actions/checkout@v4``uses: http://your_gitea.com/owner/repo@branch`
### 使用Go编写Actions
Gitea Actions支持使用Go编写Actions。
参阅[建Go Actions](https://blog.gitea.com/creating-go-actions/)。
参阅[Go Actions](https://blog.gitea.com/creating-go-actions/)。
### 支持非标准的调度语法 @yearly, @monthly, @weekly, @daily, @hourly
@@ -29,97 +29,97 @@ Github Actions 不支持这些语法,详见: https://docs.github.com/en/acti
### `concurrency`
这是用于一次运行一个Job。
参阅[使用](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
参阅[使用](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
Gitea Actions目前不支持此功能。
### `run-name`
这是工作流生成的工作流运行的名
参阅[GitHub Actions 的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
这是工作流生成的工作流运行的名
参阅[GitHub Actions 的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
Gitea Actions目前不支持此功能。
### `permissions`和`jobs.<job_id>.permissions`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.timeout-minutes`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.continue-on-error`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.environment`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
Gitea Actions 目前不支持此功能。
### 复杂的`runs-on`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
Gitea Actions目前只支持`runs-on: xyz``runs-on: [xyz]`
### `hashFiles`表达式
参阅[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
参阅[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
Gitea Actions目前不支持此功能,如果使用它,结果将始终空字符串。
Gitea Actions目前不支持此功能,如果使用它,结果将始终空字符串。
解决方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
解决方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
## 缺失的功能
### 问题匹配器
问题匹配器是一种描Actions输出以查找指定正则表达式模式并在用户界面中突出显示信息的方法。
参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
问题匹配器是一种描Actions输出以查找指定正则表达式模式並在使用者界面中突出显示信息的方法。
参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
Gitea Actions目前不支持此功能。
### 错误建注释
### 错误建注释
参阅[错误建注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
参阅[错误建注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
Gitea Actions目前不支持此功能。
### 表达式
对于 [表达式](https://docs.github.com/en/actions/learn-github-actions/expressions), 当前 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支持。
對於 [表达式](https://docs.github.com/en/actions/learn-github-actions/expressions), 当前 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支持。
## 缺失的UI功能
### 预处理和后处理步骤
预处理和后处理步骤在Job日志用户界面中没有自己的用户界面。
预处理和后处理步骤在Job日志使用者界面中没有自己的使用者界面。
### 服务步骤
服务步骤在Job日志用户界面中没有自己的用户界面。
服务步骤在Job日志使用者界面中没有自己的使用者界面。
## 不一样的行
## 不一样的行
### 下载Actions
`[actions].DEFAULT_ACTIONS_URL` 保持默认值 `github` 时,Gitea将会从 https://github.com 下载相对路径的actions。比如:
`[actions].DEFAULT_ACTIONS_URL` 保持默认值 `github` 时,Gitea将会从 https://github.com 下载相对路径的actions。比如:
如果你使用 `uses: actions/checkout@v4`Gitea将会从 https://github.com/actions/checkout.git 下载这个 actions 项目。
如果你想要从另外一个 Git服务下载actions,你只需要使用绝对URL `uses: https://gitea.com/actions/checkout@v4` 来下载。
如果你的 Gitea 实例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改 `[actions].DEFAULT_ACTIONS_URL = self`。这样所有的相对路径的actions引用,将不再会从 github.com 去下载,而会从这个 Gitea 实例自己的仓库中去下载。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下载 actions。
如果你的 Gitea 实例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改 `[actions].DEFAULT_ACTIONS_URL = self`。这样所有的相对路径的actions引用,将不再会从 github.com 去下载,而会从这个 Gitea 实例自己的存放庫中去下载。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下载 actions。
设置`[actions].DEFAULT_ACTIONS_URL`行配置。参阅[配置备忘](../../administration/config-cheat-sheet.md#actions-actions)。
设置`[actions].DEFAULT_ACTIONS_URL`行配置。参阅[配置备忘](../../administration/config-cheat-sheet.md#actions-actions)。
### 上下文可用性
不检查上下文可用性,因此您可以在更多地方使用env上下文。
参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。
参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。
@@ -6,119 +6,119 @@ sidebar_position: 40
# Gitea Actions设计
Gitea Actions由多个组件组成。本文将对它们行逐个描述。
Gitea Actions由多个组件组成。本文将对它们行逐个描述。
## Act
[nektos/act](https://github.com/nektos/act) 项目是一个优秀的工具,允许你在本地运行GitHub Actions。
我们受到了它的启发,思考它是否可能Gitea运行Actions。
我们受到了它的启发,思考它是否可能Gitea运行Actions。
然而,尽管[nektos/act](https://github.com/nektos/act)被设计一个命令行工具,但我们实际上需要的是一个专Gitea修改的Go库。
因此,我们在[gitea/act](https://gitea.com/gitea/act)基础上行了分叉。
然而,尽管[nektos/act](https://github.com/nektos/act)被设计一个命令行工具,但我们实际上需要的是一个专Gitea修改的Go库。
因此,我们在[gitea/act](https://gitea.com/gitea/act)基础上行了分叉。
这是一个软分叉,将定期跟上游。
虽然添加了一些自定义提交,但我们会尽力避免对原始代码行太多更改。
这是一个软分叉,将定期跟上游。
虽然添加了一些自定义提交,但我们会尽力避免对原始代码行太多更改。
分叉的 act 只是Gitea特定用途的桥接或适配器。
添加了一些额外的提交,例如:
添加了一些额外的提交,例如:
-行日志输出到日志记录器钩子,以便报告给Gitea
- 禁用 GraphQL URL,因Gitea不支持它
-行日志输出到日志记录器钩子,以便报告给Gitea
- 禁用 GraphQL URL,因Gitea不支持它
- 每个Job启动一个新的容器,而不是重复使用,以确保隔离性。
这些修改没有理由合到上游。
如果用户只想在本地运行可信的Actions,它们是没有意义的。
这些修改没有理由合到上游。
如果使用者只想在本地运行可信的Actions,它们是没有意义的。
然而,将来可能会出重叠,例如两个项目都需要的必要错误修复或新功能。
在这些情况下,我们将向上游仓库贡献变更。
然而,将来可能会出重叠,例如两个项目都需要的必要错误修复或新功能。
在这些情况下,我们将向上游存放庫贡献变更。
## act runner
Gitea的Runner被称为act runner,因它基于act。
Gitea的Runner被稱為act runner,因它基于act。
与其他CIRunner一样,我们将其设计Gitea的外部部分,这意味着它应该在与Gitea不同的服务器上运行。
与其他CIRunner一样,我们将其设计Gitea的外部部分,这意味着它應該在与Gitea不同的服务器上运行。
了确保Runner连接到正确的Gitea实例,我们需要使用令牌注册它。
此外,Runner通声明自己的标签向Gitea报告它可以运行的Job型。
了确保Runner连接到正确的Gitea实例,我们需要使用令牌注册它。
此外,Runner通声明自己的標籤向Gitea报告它可以运行的Job型。
之前,我们提到工作流文件中的 `runs-on: ubuntu-latest` 表示Job将在具有`ubuntu-latest`标签的Runner上运行。
但是,Runner如何知道要运行 `ubuntu-latest`?答案在于将标签映射到环境。
这就是什么在注册程中添加自定义标签时,需要输入一些复杂内容,比如`my_custom_label:docker://centos:7`
这意味着Runner可以接受需要在`my_custom_label`上运行的Job并通过使用`centos:7`镜像的Docker容器来运行它。
之前,我们提到工作流文件中的 `runs-on: ubuntu-latest` 表示Job将在具有`ubuntu-latest`標籤的Runner上运行。
但是,Runner如何知道要运行 `ubuntu-latest`?答案在于将標籤映射到环境。
这就是什么在注册程中添加自定义標籤时,需要输入一些复杂内容,比如`my_custom_label:docker://centos:7`
这意味着Runner可以接受需要在`my_custom_label`上运行的Job並通過使用`centos:7`镜像的Docker容器来运行它。
然而,Docker不是唯一的择。
然而,Docker不是唯一的择。
act 也支持直接在主机上运行Job。
这是通`linux_arm:host`这样的标签实现的。
这个标签表示Runner可以接受需要在`linux_arm`上运行的Job直接在主机上运行它们。
这是通`linux_arm:host`这样的標籤实現的。
这个標籤表示Runner可以接受需要在`linux_arm`上运行的Job直接在主机上运行它们。
标签的设计遵循格式`label[:schema[:args]]`
如果省略了schema,则默认`host`
標籤的设计遵循格式`label[:schema[:args]]`
如果省略了schema,则默认`host`
因此,
- `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带有`my_custom_label`标签的Job。
- `my_custom_label:host`:在主机上直接运行带有`my_custom_label`标签的Job。
- `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带有`my_custom_label`標籤的Job。
- `my_custom_label:host`:在主机上直接运行带有`my_custom_label`標籤的Job。
- `my_custom_label`:等同于`my_custom_label:host`
- `my_custom_label:vm:ubuntu-latest`:(仅为示例,未实)使用带有`ubuntu-latest` ISO的虚拟机运行带有`my_custom_label`标签的Job。
- `my_custom_label:vm:ubuntu-latest`:(僅為示例,未实)使用带有`ubuntu-latest` ISO的虚拟机运行带有`my_custom_label`標籤的Job。
## 通信协议
由于act runner是Gitea的独立部分,我们需要一种协议让Runner与Gitea实例行通信。
然而,我们不认让Gitea监听一个新端口是个好主意。
由于act runner是Gitea的独立部分,我们需要一种协议让Runner与Gitea实例行通信。
然而,我们不认让Gitea监听一个新端口是个好主意。
相反,我们希望重用HTTP端口,这意味着我们需要一个与HTTP兼容的协议。
因此,我们择使用基于HTTP的gRPC。
因此,我们择使用基于HTTP的gRPC。
我们使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 行连接。
有关 gRPC 的更多信息,访问[其官方网站](https://grpc.io/)。
我们使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 行连接。
有关 gRPC 的更多信息,访问[其官方网站](https://grpc.io/)。
## 网络架构
让我们来看一下整的网络架构。
这将帮助您解决一些问题,解释什么使用回环地址注册Runner是个不好的主意。
让我们来看一下整的网络架构。
这将帮助您解决一些问题,解释什么使用回环地址注册Runner是个不好的主意。
![network](/images/usage/actions/network.png)
图片中标记了四个网络连接,且箭头的方向表示建立连接的方向。
图片中标记了四个网络连接,且箭头的方向表示建立连接的方向。
### 连接 1act runner到Gitea实例
act runner 必能够连接到Gitea以接收任务发送行结果回来。
act runner 必能够连接到Gitea以接收任务发送行结果回来。
### 连接 2Job容器到Gitea实例
即使Job容器位于同一台机器上,它们的网络命名空间与Runner不同。
举个例子,如果工作流中包含 `actions/checkout@v4`,Job容器需要连接到Gitea来获取代码。
获取代码不总是运行某些Job所必需的,但在大多数情况下是必需的。
获取代码不总是运行某些Job所必需的,但在大多数情况下是必需的。
如果您使用回环地址注册Runner,当Runner与Gitea在同一台机器上时,Runner可以连接到Gitea。
然而,如果Job容器尝试从本地主机获取代码,它将失败,因Gitea不在同一个容器中。
然而,如果Job容器尝试从本地主机获取代码,它将失败,因Gitea不在同一个容器中。
### 连接 3act runner到互联网
当您使用诸如 `actions/checkout@v4` 的一些Actions时,act runner下载的是脚本,而不是Job容器。
默认情况下,它从[github.com](http://github.com/)下载,因此需要访问互联网。如果您设置的是 self,
那么默认将从您的当前Gitea实例下载,那么此步骤不需要连接到互联网。
默认从Docker Hub下载一些Docker镜像,这也需要互联网访问。
默认从Docker Hub下载一些Docker镜像,这也需要互联网访问。
然而,互联网访问不是绝对必需的。
然而,互联网访问不是绝对必需的。
您可以配置您的Gitea实例从您的内部网络设施中获取 Actions 或镜像。
实际上,您的Gitea实例可以同时充当 Actions 市场和镜像注册表。
您可以将GitHub上的Actions仓库镜像到您的Gitea实例,将其用作普通Actions。
而 [Gitea 容器注册](usage/packages/container.md) 可用作Docker镜像注册表。
实际上,您的Gitea实例可以同时充当 Actions 市场和镜像註冊表。
您可以将GitHub上的Actions存放庫镜像到您的Gitea实例,将其用作普通Actions。
而 [Gitea 容器註冊](usage/packages/container.md) 可用作Docker镜像註冊表。
### 连接 4Job容器到互联网
当使用诸如`actions/setup-go@v5`的Actions时,可能需要从互联网下载资源,以设置Job容器中的Go语言环境。
因此,成功完成这些Actions需要访问互联网。
然而,这也是可的。
您可以使用自定义的Actions来避免依赖互联网访问,或者可以使用已安所有依赖项的打包的Docker镜像来运行Job。
然而,这也是可的。
您可以使用自定义的Actions来避免依赖互联网访问,或者可以使用已安所有依赖项的打包的Docker镜像来运行Job。
## 总结
使用Gitea Actions只需要确保Runner能够连接到Gitea实例。
互联网访问是可的,但如果没有互联网访问,将需要额外的工作。
换句话说:当Runner能够自行查询互联网时,它的工作效果最好,但您不需要将其暴露给互联网(论是单向还是双向)。
互联网访问是可的,但如果没有互联网访问,将需要额外的工作。
换句话说:当Runner能够自行查询互联网时,它的工作效果最好,但您不需要将其暴露给互联网(论是單向還是双向)。
如果您在使用Gitea Actions时遇到任何网络问题,希望上面的图片能够帮助您行故障排除。
如果您在使用Gitea Actions时遇到任何网络问题,希望上面的图片能够帮助您行故障排除。
@@ -8,22 +8,22 @@ sidebar_position: 100
本页面包含一些关于Gitea Actions的常见问题和答案。
## 是否可以在我的实例中默认禁用新仓库的Actions
## 是否可以在我的实例中默认禁用新存放庫的Actions
是的,当您实例启用Actions时,您可以择默认启用actions元以适用于所有新仓库
是的,当您实例启用Actions时,您可以择默认启用actions元以适用于所有新存放庫
```ini
[repository]
; 去掉 repo.actions 将不会为新仓库自动启用actions
; 去掉 repo.actions 将不会為新存放庫自动启用actions
DEFAULT_REPO_UNITS = ...,repo.actions
```
## 在工作流文件中应该使用`${{ github.xyz }}`是`${{ gitea.xyz }}`
## 在工作流文件中應該使用`${{ github.xyz }}`是`${{ gitea.xyz }}`
您可以使用`github.xyz`Gitea将正常工作。
如前所述,Gitea Actions的设计是与GitHub Actions兼容的。
然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出不同型的密钥(因您在Gitea上使用此工作流,而不是GitHub)。
,这完全是可的,因目前这两个项的效果是相同的。
然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出不同型的密钥(因您在Gitea上使用此工作流,而不是GitHub)。
,这完全是可的,因目前这两个项的效果是相同的。
## 使用`actions/checkout@v4`等Actions时,Job容器会从何处下载脚本?
@@ -42,46 +42,46 @@ GitHub 上有成千上万个 [Actions 脚本](https://github.com/marketplace?typ
注意,`https://``http://`前缀是必需的!
这是与 GitHub Actions 的一个区别,GitHub Actions 只允许使用托管在 GitHub 上的 actions 脚本。
用户理应拥有权利去灵活决定如何运行 Actions。
使用者理應拥有权利去灵活决定如何运行 Actions。
另外,如果您希望您的 Runner 默认从您自己的 Gitea 实例下载 Actions,可以通设置 `[actions].DEFAULT_ACTIONS_URL`行配置。
另外,如果您希望您的 Runner 默认从您自己的 Gitea 实例下载 Actions,可以通设置 `[actions].DEFAULT_ACTIONS_URL`行配置。
参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
## 如何限制Runner的权限?
Runner具有连接到您的Gitea实例的权限。
当任何Runner接收到要运行的Job时,它将临时获得与Job关联的仓库的有限权限。
如果您想Runner提供更多权限,允许它访问更多私有仓库或外部系统,您可以向其传递[密钥](usage/actions/secrets.md)。
Runner具有连接到您的Gitea实例的权限。
当任何Runner接收到要运行的Job时,它将临时获得与Job关联的存放庫的有限权限。
如果您想Runner提供更多权限,允许它访问更多私有存放庫或外部系统,您可以向其传递[密钥](usage/actions/secrets.md)。
对于 Actions 的细粒度权限控制是一项复杂的工作。
在未来,我们将添加更多项以使Gitea更可配置,例如允许对仓库进行更多写访问或对同一组织中的所有仓库进行读访问。
對於 Actions 的细粒度权限控制是一项复杂的工作。
在未来,我们将添加更多项以使Gitea更可配置,例如允许对存放庫進行更多写访问或对同一組織中的所有存放庫進行读访问。
## 如何避免被黑客攻
## 如何避免被黑客攻
有两种可能的攻击类型:未知的Runner窃取您的仓库中的代码或密钥,或恶意脚本控制您的Runner。
有两种可能的攻擊類型:未知的Runner窃取您的存放庫中的代码或密钥,或恶意脚本控制您的Runner。
避免前者意味着不允许您不认识的人您的仓库、组织或实例注册Runner。
避免前者意味着不允许您不认识的人您的存放庫、組織或实例注册Runner。
后者要复杂一些。
如果您公司使用私有的Gitea实例,您可能不需要担心安全问题,因您信任您的同事,且可以追究他们的责任。
如果您公司使用私有的Gitea实例,您可能不需要担心安全问题,因您信任您的同事,且可以追究他们的责任。
对于公共实例,情况略有不同。
對於公共实例,情况略有不同。
以下是我们在 [gitea.com](http://gitea.com/)上的做法:
- 我们仅为 "gitea" 组织注册Runner,因此我们的Runner不会行来自其他仓库的Job。
- 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上行这样的操作,但出于安全考虑,我们择不这样做。
- 对于 fork 的拉取求,需要获得批准才能运行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)为其仓库或组织注册自己的Runner,我们不会反对,只是不会在我们的组织中使用它。然而,他们应该注意确保Runner不被他们不认识的其他用户使用。
- 我们僅為 "gitea" 組織注册Runner,因此我们的Runner不会行来自其他存放庫的Job。
- 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上行这样的操作,但出于安全考虑,我们择不这样做。
- 對於 fork 的拉取求,需要获得批准才能运行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)為其存放庫或組織注册自己的Runner,我们不会反对,只是不会在我们的組織中使用它。然而,他们應該注意确保Runner不被他们不认识的其他使用者使用。
## act runner支持哪些操作系统?
它在Linux、macOS和Windows上运行良好。
虽然理论上支持其他操作系统,但需要一步测试。
虽然理论上支持其他操作系统,但需要一步测试。
需要注意的一点是,如果择直接在主机上运行Job而不是在Job容器中运行,操作系统之间的环境差异可能会导致意外的失败。
需要注意的一点是,如果择直接在主机上运行Job而不是在Job容器中运行,操作系统之间的环境差异可能会导致意外的失败。
例如,在大多数情况下,Windows上没有可用的bash,而act尝试默认使用bash运行脚本。
因此,您需要在工作流文件中将默认shell指定`powershell`,参考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
因此,您需要在工作流文件中将默认shell指定`powershell`,参考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
```yaml
defaults:
@@ -89,66 +89,66 @@ defaults:
shell: powershell
```
## 什么择GitHub Actions什么不择与GitLab CI/CD兼容的工具?
## 什么择GitHub Actions什么不择与GitLab CI/CD兼容的工具?
[@lunny](https://gitea.com/lunny)在实Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释这个问题。
此外,Actions不是一个CI/CD 系统,是一个自动化工具。
[@lunny](https://gitea.com/lunny)在实Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释这个问题。
此外,Actions不是一个CI/CD 系统,是一个自动化工具。
在开源世界中,已经有许多[市场上的Actions](https://github.com/marketplace?type=actions)实了。
在开源世界中,已经有许多[市场上的Actions](https://github.com/marketplace?type=actions)实了。
能够重用它们是令人兴奋的。
## 如果它在多个标签上运行,例如 `runs-on: [label_a, label_b]`,会发生什么?
## 如果它在多个標籤上运行,例如 `runs-on: [label_a, label_b]`,会发生什么?
这是有效的语法。
它意味着它应该在具有`label_a` **和** `label_b`标签的Runner上运行,参考[GitHub Actions的工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是,act runner 不支持这种方式。
如上所述,我们将标签映射到环境:
它意味着它應該在具有`label_a` **和** `label_b`標籤的Runner上运行,参考[GitHub Actions的工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是,act runner 不支持这种方式。
如上所述,我们将標籤映射到环境:
- `ubuntu``ubuntu:22.04`
- `centos``centos:8`
但我们需要将标签组映射到环境,例如:
但我们需要将標籤组映射到环境,例如:
- `[ubuntu]``ubuntu:22.04`
- `[with-gpu]``linux:with-gpu`
- `[ubuntu, with-gpu]``ubuntu:22.04_with-gpu`
我们需要重新设计任务分配给Runner的方式。
具有`ubuntu``centos``with-gpu`的Runner不一定表示它可以接受`[centos, with-gpu]`的Job。
因此,Runner应该通知Gitea实例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
我们需要重新设计任务分配给Runner的方式。
具有`ubuntu``centos``with-gpu`的Runner不一定表示它可以接受`[centos, with-gpu]`的Job。
因此,Runner應該通知Gitea实例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
这不是一个技术问题,只是在早期设计中被忽视了。
参见[runtime.go#L65](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。
目前,act runner尝试匹配标签中的每一个,使用找到的第一个匹配项。
目前,act runner尝试匹配標籤中的每一个,使用找到的第一个匹配项。
## 代理标签和自定义标签对于Runner有什么区别?
## 代理標籤和自定义標籤對於Runner有什么区别?
![labels](/images/usage/actions/labels.png)
代理标签是由Runner在注册程中向Gitea实例报告的。
而自定义标签则是由Gitea的管理员或组织或仓库的所有者手动添加的(取决于Runner所属的级别)。
代理標籤是由Runner在注册程中向Gitea实例报告的。
而自定义標籤则是由Gitea的管理员或組織或存放庫的所有者手动添加的(取决于Runner所属的级别)。
然而,目前这方面的设计有待改,因它目前存在一些不完善之处。
您可以向已注册的Runner添加自定义标签,比如 `centos`,这意味着Runner将接收具有`runs-on: centos`的Job。
然而,Runner可能不知道要使用哪个环境来执行该标签,导致它使用默认镜像或导致逻辑死胡同。
这个默认值可能与用户的期望不符。
然而,目前这方面的设计有待改,因它目前存在一些不完善之处。
您可以向已注册的Runner添加自定义標籤,比如 `centos`,这意味着Runner将接收具有`runs-on: centos`的Job。
然而,Runner可能不知道要使用哪个环境来執行該標籤,导致它使用默认镜像或导致逻辑死胡同。
这个默认值可能与使用者的期望不符。
参见[runtime.go#L71](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。
与此同时,如果您想更改Runner的标签,我们建议您重新注册Runner。
与此同时,如果您想更改Runner的標籤,我们建议您重新注册Runner。
## Gitea Actions runner会有更多的实吗?
## Gitea Actions runner会有更多的实吗?
虽然我们希望提供更多的择,但由于我们有限的人力资源,act runner将是唯一受支持的官方Runner。
然而,论您如何决定,Gitea 和act runner都是完全开源的,所以任何人都可以建一个新的/更好的实
我们支持您的择,论您如何决定。
如果您择分支act runner来建自己的版本,在您认您的更改对其他人也有帮助的情况下贡献这些更改。
虽然我们希望提供更多的择,但由于我们有限的人力资源,act runner将是唯一受支持的官方Runner。
然而,论您如何决定,Gitea 和act runner都是完全开源的,所以任何人都可以建一个新的/更好的实
我们支持您的择,论您如何决定。
如果您择分支act runner来建自己的版本,在您认您的更改对其他人也有帮助的情况下贡献这些更改。
## Gitea 支持哪些工作流触发事件?
表格中列出的所有事件都是支持的,且与 GitHub 兼容。
对于仅 GitHub 支持的事件,参阅 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
表格中列出的所有事件都是支持的,且与 GitHub 兼容。
對於僅 GitHub 支持的事件,参阅 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
| 触发事件 | 活动型 |
| 触发事件 | 活动型 |
|-----------------------------|--------------------------------------------------------------------------------------------------------------------------|
| create | 不适用 |
| delete | 不适用 |
@@ -163,5 +163,5 @@ defaults:
| release | `published`, `edited` |
| registry_package | `published` |
> 对于 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取求合提交的一个预览。但是 Gitea 没有这种 reference。
> 因此,Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取求的头分支而不是合提交的预览。
> 對於 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取求合提交的一个预览。但是 Gitea 没有这种 reference。
> 因此,Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取求的头分支而不是合提交的预览。
@@ -6,37 +6,37 @@ sidebar_position: 1
# Overview
从Gitea **1.19**版本开始,Gitea Actions成了内置的CI/CD解决方案。
从Gitea **1.19**版本开始,Gitea Actions成了内置的CI/CD解决方案。
## 名
## 名
Gitea Actions与[GitHub Actions](https://github.com/features/actions)相似且兼容,它的名也受到了它的启发。
了避免混淆,在这里我们明确了拼写方式:
Gitea Actions与[GitHub Actions](https://github.com/features/actions)相似且兼容,它的名也受到了它的启发。
了避免混淆,在这里我们明确了拼写方式:
- "Gitea Actions"(两个单词都大写且带有"s")是Gitea功能的名
- "GitHub Actions"是GitHub功能的名
- "Actions"根据上下文的不同可以指代以上任意一个。在本文中指代的是"Gitea Actions"。
- "Gitea Actions"(两个單詞都大写且带有"s")是Gitea功能的名
- "GitHub Actions"是GitHub功能的名
- "Actions"根据上下文的不同可以指代以上任意一个。在本文中指代的是"Gitea Actions"。
- "action"或"actions"指代一些要使用的脚本/插件,比如"actions/checkout@v4"或"actions/cache@v3"。
## Runner
和其他CI/CD解决方案一样,Gitea不会自己运行Job,而是将Job委托给Runner。
Gitea Actions的Runner被称为[act runner](https://gitea.com/gitea/act_runner),它是一个独立的程序,也是用Go语言编写的。
Gitea Actions的Runner被稱為[act runner](https://gitea.com/gitea/act_runner),它是一个独立的程序,也是用Go语言编写的。
它是基于[nektos/act](http://github.com/nektos/act)的一个[分支](https://gitea.com/gitea/act) 。
由于Runner是独立部署的,可能存在潜在的安全问题。
了避免这些问题,遵循两个简单的规则
了避免这些问题,遵循两个简單的規則
- 不要你的仓库、组织或实例使用你不信任的Runner。
- 不要你不信任的仓库、组织或实例提供Runner。
- 不要你的存放庫、組織或实例使用你不信任的Runner。
- 不要你不信任的存放庫、組織或实例提供Runner。
对于内部使用的Gitea实例,比如企业或个人使用的实例,这两个规则不是问题,它们自然而然就是如此。
然而,对于公共的Gitea实例,比如[gitea.com](https://gitea.com),在添加或使用Runner时当牢记这两个规则
對於内部使用的Gitea实例,比如企业或个人使用的实例,这两个規則不是问题,它们自然而然就是如此。
然而,對於公共的Gitea实例,比如[gitea.com](https://gitea.com),在添加或使用Runner时当牢记这两个規則
## 状态
Gitea Actions仍然在开发中,因此可能存在一些错误和缺失的功能。
且在稳定版本(v1.20或更高版本)之前可能会行一些重大的更改。
且在稳定版本(v1.20或更高版本)之前可能会行一些重大的更改。
如果情况发生变化,我们将在此处行更新。
因此,在其他地方找到时文章时参考此处的内容。
如果情况发生变化,我们将在此处行更新。
因此,在其他地方找到时文章时参考此处的内容。
@@ -6,13 +6,13 @@ sidebar_position: 10
# 快速入门
本页面将指导您使用Gitea Actions的程。
本页面将指导您使用Gitea Actions的程。
## 设置Gitea
首先,您需要一个Gitea实例。
您可以按照[](installation/from-package.md) 来设置一个新实例或升级有实例。
论您如何安或运行Gitea,只要版本号是1.19.0或更高即可。
您可以按照[](installation/from-package.md) 来设置一个新实例或升级有实例。
论您如何安或运行Gitea,只要版本号是1.19.0或更高即可。
从1.21.0开始,默认情况下,Actions是启用的。如果您正在使用1.21.0之前的版本,您需要将以下内容添加到配置文件中以启用它:
@@ -21,21 +21,21 @@ sidebar_position: 10
ENABLED=true
```
如果您想了解更多信息或在配置程中遇到任何问题,参考[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
如果您想了解更多信息或在配置程中遇到任何问题,参考[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
### 设置Runner
Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 来运行Job。
了避免消耗多资源并影响Gitea实例,建议您在与Gitea实例分开的机器上启动Runner。
了避免消耗多资源並影響Gitea实例,建议您在与Gitea实例分开的机器上启动Runner。
您可以使用[预构建的二制文件](http://dl.gitea.com/act_runner)或[容器镜像](https://hub.docker.com/r/gitea/act_runner/tags)来设置Runner。
您可以使用[预构建的二制文件](http://dl.gitea.com/act_runner)或[容器镜像](https://hub.docker.com/r/gitea/act_runner/tags)来设置Runner。
一步操作之前,建议您先使用预构建的二制文件以命令行方式运行它,以确保它与您的环境兼容,尤其是如果您在本地主机上运行Runner。
如果出问题,这样调试起来会更容易。
一步操作之前,建议您先使用预构建的二制文件以命令行方式运行它,以确保它与您的环境兼容,尤其是如果您在本地主机上运行Runner。
如果出问题,这样调试起来会更容易。
Runner可以在隔离的Docker容器中运行Job,因此您需要确保已安Docker且Docker守护程正在运行。
虽然这不是严格必需的,因Runner也可以直接在主机上运行Job,这取决于您的配置方式。
然而,建议使用Docker运行Job,因它更安全且更易于管理。
Runner可以在隔离的Docker容器中运行Job,因此您需要确保已安Docker且Docker守护程正在运行。
虽然这不是严格必需的,因Runner也可以直接在主机上运行Job,这取决于您的配置方式。
然而,建议使用Docker运行Job,因它更安全且更易于管理。
在运行Runner之前,您需要使用以下命令将其注册到Gitea实例中:
@@ -43,27 +43,27 @@ Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 来运行Job
./act_runner register --no-interactive --instance <instance> --token <token>
```
需要两个必需的参数`instance``token`
需要两个必需的參數`instance``token`
`instance`是您的Gitea实例的地址,如`http://192.168.8.8:3000``https://gitea.com`
Runner和Job容器(由Runner启动以行Job)将连接到此地址。
Runner和Job容器(由Runner启动以行Job)将连接到此地址。
这意味着它可能与用于Web访问的`ROOT_URL`不同。
使用回环地址(例如 `127.0.0.1``localhost`)是一个不好的择。
如果不确定使用哪个地址,通常择局域网地址即可。
使用回环地址(例如 `127.0.0.1``localhost`)是一个不好的择。
如果不确定使用哪个地址,通常择局域网地址即可。
`token` 用于身份验证和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,且不能用于注册多个Runner。
您可以从以下位置获取不同级别的`token`,从而建出相级别的`runner`
`token` 用于身份驗證和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,且不能用于注册多个Runner。
您可以从以下位置获取不同级别的`token`,从而建出相级别的`runner`
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
![register runner](/images/usage/actions/register-runner.png)
注册后,当前目中将出一个名 `.runner` 的新文件,文件存了注册信息。
不要手动编辑文件。
如果文件丢失或损坏,只需删除它然后重新注册即可。
注册后,当前目中将出一个名 `.runner` 的新文件,文件存了注册信息。
不要手动编辑文件。
如果文件丢失或损坏,只需删除它然后重新注册即可。
最后,是时候启动Runner了:
@@ -75,20 +75,20 @@ Runner和Job容器(由Runner启动以执行Job)将连接到此地址。
![view runner](/images/usage/actions/view-runner.png)
您可以通访问[act runner](usage/actions/act-runner.md) 获取更多信息。
您可以通访问[act runner](usage/actions/act-runner.md) 获取更多信息。
### 使用Actions
即使对于启用了Gitea实例的Actions,存库仍默认禁用Actions。
即使對於启用了Gitea实例的Actions,存库仍默认禁用Actions。
要启用它,转到存库的设置页面,例如`your_gitea.com/<owner>/repo/settings`,然后启用`Enable Repository Actions`
要启用它,转到存库的设置页面,例如`your_gitea.com/<owner>/repo/settings`,然后启用`Enable Repository Actions`
![enable actions](/images/usage/actions/enable-actions.png)
接下来的步骤可能相当复杂。
您需要学习Actions的[工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)编写您想要的工作流文件。
您需要学习Actions的[工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)编写您想要的工作流文件。
,我们可以从一个简的演示开始:
,我们可以从一个简的演示开始:
```yaml
name: Gitea Actions Demo
@@ -112,19 +112,19 @@ jobs:
- run: echo "🍏 This job's status is ${{ job.status }}."
```
您可以将上述示例上传一个以`.yaml`扩展名的文件,放在存库的`.gitea/workflows/`中,例如`.gitea/workflows/demo.yaml`
您可以将上述示例上传一个以`.yaml`扩展名的文件,放在存库的`.gitea/workflows/`中,例如`.gitea/workflows/demo.yaml`
您可能会注意到,这与[GitHub Actions的快速入门](https://docs.github.com/en/actions/quickstart)非常相似。
这是因Gitea Actions在尽可能兼容GitHub Actions的基础上行设计。
这是因Gitea Actions在尽可能兼容GitHub Actions的基础上行设计。
注意,演示文件中包含一些表情符号。
确保您的数据库支持它们,特别是在使用MySQL时。
如果字符集不是`utf8mb4`,将出错误,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
有关更多信息,参阅[数据库准备工作](../../installation/database-preparation.md#mysqlmariadb)。
注意,演示文件中包含一些表情符号。
确保您的数据库支持它们,特别是在使用MySQL时。
如果字符集不是`utf8mb4`,将出错误,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
有关更多信息,参阅[数据库准备工作](../../installation/database-preparation.md#mysqlmariadb)。
或者,您可以从演示文件中删除所有表情符号,然后再尝试一次。
`on: [push]` 这一行表示当您向该存储库推送提交时,工作流将被触发。
然而,当您上传 YAML 文件时,它也会推送一个提交,所以您应该在"Actions"标签中看到一个新的任务。
`on: [push]` 这一行表示当您向該存儲库推送提交时,工作流将被触发。
然而,当您上传 YAML 文件时,它也会推送一个提交,所以您應該在"Actions"標籤中看到一个新的任务。
![view job](/images/usage/actions/view-job.png)
@@ -6,23 +6,23 @@ sidebar_position: 50
# 密钥管理
密钥管理允许您在用户、组织或仓库中存敏感信息。
密钥管理允许您在使用者、組織或存放庫中存敏感信息。
密钥管理在 Gitea 1.19+ 版本中可用。
## 设置密钥名
## 设置密钥名
以下规则适用于密钥名
以下規則适用于密钥名
- 密钥名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 密钥名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 密钥名不能以 `GITHUB_``GITEA_` 前缀开头
- 密钥名不能以 `GITHUB_``GITEA_` 前缀開頭
- 密钥名不能以数字开头
- 密钥名不能以数字開頭
- 密钥名不区分大小写。
- 密钥名不区分大小写。
- 密钥名称在创建它们的级别上必是唯一的。
- 密钥名稱在建立它们的级别上必是唯一的。
例如,对于在仓库级别创建的密钥,它在该仓库中必具有唯一的名称;对于在组织级别创建的密钥,它在级别上必具有唯一的名
例如,對於在存放庫级别建立的密钥,它在該存放庫中必具有唯一的名稱;對於在組織级别建立的密钥,它在级别上必具有唯一的名
如果在多个级别上存在具有相同名的密钥,则最低级别的密钥优先生效。例如,如果组织级别的密钥与仓库级别的密钥具有相同的名,则仓库级别的密钥将优先生效。
如果在多个级别上存在具有相同名的密钥,则最低级别的密钥优先生效。例如,如果組織级别的密钥与存放庫级别的密钥具有相同的名,则存放庫级别的密钥将优先生效。
@@ -6,25 +6,25 @@ sidebar_position: 25
# 变量
您可以创建用户、组织和仓库级别的变量。变量的级别取决于建它的位置。当建变量时,变量的名会被
转换大写,在yaml文件中引用时需要使用大写。
您可以建立使用者、組織和存放庫级别的变量。变量的级别取决于建它的位置。当建变量时,变量的名会被
转换大写,在yaml文件中引用时需要使用大写。
## 命名规则
## 命名規則
以下规则适用于变量名:
以下規則适用于变量名:
- 变量名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 变量名不能以 `GITHUB_``GITEA_` 前缀开头
- 变量名不能以数字开头
- 变量名不区分大小写。
- 变量名称在创建它们的级别上必是唯一的。
- 变量名不能 `CI`
- 变量名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 变量名不能以 `GITHUB_``GITEA_` 前缀開頭
- 变量名不能以数字開頭
- 变量名不区分大小写。
- 变量名稱在建立它们的级别上必是唯一的。
- 变量名不能 `CI`
## 使用
建配置变量后,它们将自动填充到 `vars` 上下文中。您可以在工作流中使用类似 `${{ vars.VARIABLE_NAME }}` 这样的表达式来使用它们。
配置变量后,它们将自动填充到 `vars` 上下文中。您可以在工作流中使用类似 `${{ vars.VARIABLE_NAME }}` 这样的表达式来使用它们。
## 优先级
如果同名变量存在于多个级别,则级别最低的变量优先。
仓库级别的变量总是比组织或者用户级别的变量优先被中。
存放庫级别的变量总是比組織或者使用者级别的变量优先被中。
@@ -8,37 +8,37 @@ aliases:
# AGit
在 Gitea `1.13` 版本中,添加了对 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支持。AGit 允许用户在没有仓库写入权限的情况下直接建拉取求,也不需要分叉仓库。这有助于减少重复仓库的数量,降低不必要的磁盘使用量。
在 Gitea `1.13` 版本中,添加了对 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支持。AGit 允许使用者在没有存放庫写入权限的情况下直接建拉取求,也不需要分叉存放庫。这有助于减少重复存放庫的数量,降低不必要的硬碟使用量。
:::note
服务器端需要 Git 版本 2.29 或更高版本才能正常运行。
:::
## 使用 AGit 建 PR
## 使用 AGit 建 PR
AGit 允许在推送代码到远程仓库时创建 PR(合并请求)。
在推送时使用特定的 refspec(git 中已知的位置标识符),可以实这一功能。
AGit 允许在推送代码到远程存放庫时建立 PR(合並請求)。
在推送时使用特定的 refspec(git 中已知的位置标识符),可以实这一功能。
下面的示例说明了这一点:
```shell
git push origin HEAD:refs/for/main
```
命令的结构如下:
命令的结构如下:
- `HEAD`:目标分支
- `refs/<for|draft|for-review>/<branch>`:目标 PR
- `for`建一个以 `<branch>` 目标分支的普通 PR
- `refs/<for|draft|for-review>/<branch>`:目标 PR
- `for`:建一个以 `<branch>` 目标分支的普通 PR
- `draft`/`for-review`:目前被静默忽略
- `<branch>/<session>`:要打开 PR 的目标分支
- `-o <topic|title|description>`PR 的
- `-o <topic|title|description>`PR 的
- `title`PR 的标题
- `topic`PR 应该打开的分支名
- `topic`PR 應該打开的分支名
- `description`PR 的描述
- `force-push=true`: 是否强制更新目标分支
- 注意: 如果不传值,只用 `-o force-push` 也同样可以正常工作。
下面是另一个高级示例,用于建一个以 `topic``title``description` 为参数的新 PR,目标分支是 `main`
下面是另一个高级示例,用于建一个以 `topic``title``description` 為參數的新 PR,目标分支是 `main`
```shell
git push origin HEAD:refs/for/main -o topic="Topic of my PR" -o title="Title of the PR" -o description="# The PR Description\nThis can be **any** markdown content.\n- [x] Ok"
@@ -7,12 +7,12 @@ aliases:
- /zh-tw/clone-filters
---
# 克隆滤器 (部分克隆)
# 克隆滤器 (部分克隆)
Git 引入了 `--filter` 项用于 `git clone` 命令,该选项可以滤掉大文件和对象(如 blob),从而创建一个仓库的部分克隆。克隆滤器对于大型仓库和/或按流量计费的连接特别有用,因完全克隆(不使用 `--filter`)可能会很昂贵(需要下载所有历史数据)。
Git 引入了 `--filter` 项用于 `git clone` 命令,該選项可以滤掉大文件和对象(如 blob),从而建立一个存放庫的部分克隆。克隆滤器對於大型存放庫和/或按流量计费的连接特别有用,因完全克隆(不使用 `--filter`)可能会很昂贵(需要下载所有历史数据)。
这需要 Git 2.22 或更高版本,论是在 Gitea 服务器上是在客户端上都需要如此。了使克隆滤器正常工作,确保客户端上的 Git 版本至少与服务器上的版本相同(或更高)。以管理员身份登到 Gitea,然后转到管理后台 -> 用配置,查看服务器的 Git 版本。
这需要 Git 2.22 或更高版本,论是在 Gitea 服务器上是在客户端上都需要如此。了使克隆滤器正常工作,确保客户端上的 Git 版本至少与服务器上的版本相同(或更高)。以管理员身份登到 Gitea,然后转到管理后台 -> 用配置,查看服务器的 Git 版本。
默认情况下,克隆滤器是启用的,除非在 `[git]` 下将 `DISABLE_PARTIAL_CLONE` 设置 `true`
默认情况下,克隆滤器是启用的,除非在 `[git]` 下将 `DISABLE_PARTIAL_CLONE` 设置 `true`
参阅 [GitHub 博客文章:了解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以获取克隆滤器的常见用法( Blob 和树的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以获取更高级的用法(例如按文件大小滤和取消滤以将部分克隆转换完全克隆)。
参阅 [GitHub 博客文章:了解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以获取克隆滤器的常见用法( Blob 和树的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以获取更高级的用法(例如按文件大小滤和取消滤以将部分克隆转换完全克隆)。
@@ -9,30 +9,30 @@ aliases:
# 邮件接收
Gitea 支持通接收邮件行多种操作。本页面描述了如何行设置。
Gitea 支持通接收邮件行多种操作。本页面描述了如何行设置。
## 要求
处理接收的电子邮件需要启用 IMAP 功能的电子邮件帐户
处理接收的电子邮件需要启用 IMAP 功能的电子邮件帳戶
推荐的策略是使用 [电子邮件子地址](https://en.wikipedia.org/wiki/Email_address#Sub-addressing),但也可以使用 catch-all 邮箱。
接收电子邮件地址中包含一个用户/操作特定的令牌,告诉 Gitea 应执行哪个操作。
此令牌应该出现`To``Delivered-To` 头字段中。
接收电子邮件地址中包含一个使用者/操作特定的令牌,告诉 Gitea 應執行哪个操作。
此令牌應該出現`To``Delivered-To` 头字段中。
Gitea 会尝试检测自动回复并跳过它们,电子邮件服务器也应该配置以减少接收到的干扰(垃圾邮件、通讯订阅等)。
Gitea 会尝试检测自动回复並跳過它们,电子邮件服务器也應該配置以减少接收到的干扰(垃圾邮件、通讯订阅等)。
## 配置
要激活处理接收的电子邮件消息功能,您需要在配置文件中配置 `email.incoming` 部分。
`REPLY_TO_ADDRESS` 包含电子邮件客户端将要回复的地址。
地址需要包含 `%{token}` 占位符,占位符将被替换描述用户/操作的令牌。
此占位符在地址中只能出一次,且必位于地址的用户部分(`@` 之前)。
地址需要包含 `%{token}` 占位符,占位符将被替换描述使用者/操作的令牌。
此占位符在地址中只能出一次,且必位于地址的使用者部分(`@` 之前)。
使用电子邮件子地址的示例可能如下:`incoming+%{token}@example.com`
如果使用 catch-all 邮箱,则占位符可以出在地址的用户部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
如果使用 catch-all 邮箱,则占位符可以出在地址的使用者部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
## 安全性
择用于接收传入电子邮件的域时要小心。
择用于接收传入电子邮件的域时要小心。
建议在子域名上接收传入电子邮件,例如 `incoming.example.com`,以防止与运行在 `example.com` 上的其他服务可能存在的安全问题。
@@ -7,9 +7,9 @@ aliases:
- /zh-tw/issue-pull-request-templates
---
# 从模板创建工单与合并请
# 从模板建立工單与合並請
开发者可以利用问题模板创建工单与合并请求,其目的在于规范参与者的语言表达。
开发者可以利用问题模板建立工單与合並請求,其目的在于规范参与者的语言表达。
## 模板介绍
@@ -19,27 +19,27 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
在 Gitea 中存在两种用途的 Markdown 模板:
- `ISSUE_TEMPLATE/bug-report.md` 用于规范工的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md` 用于规范合并请求的 Markdown 文本描述
- `ISSUE_TEMPLATE/bug-report.md` 用于规范工的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md` 用于规范合並請求的 Markdown 文本描述
对于以上 Markdown 模板,我们推荐您将它们放置到项目目 `.gitea` 行收纳。
對於以上 Markdown 模板,我们推荐您将它们放置到项目目 `.gitea` 行收纳。
### YAML 模板
用 YAML 语法编写的模板相比 Markdown 可以实更丰富的功能,利用表单实现诸如:问卷调查、字符校验。在 Gitea 中的 YAML 同样支持两种用途:
用 YAML 语法编写的模板相比 Markdown 可以实更丰富的功能,利用表單实現诸如:问卷调查、字符校验。在 Gitea 中的 YAML 同样支持两种用途:
- `ISSUE_TEMPLATE/bug-report.yaml` 用于建问卷调查形式的工
- `PULL_REQUEST_TEMPLATE.yaml` 用于创建表单形式的合并请
- `ISSUE_TEMPLATE/bug-report.yaml` 用于建问卷调查形式的工
- `PULL_REQUEST_TEMPLATE.yaml` 用于建立表單形式的合並請
对于以上 YAML 模板,我们同样推荐您将它们放置到项目目 `.gitea` 行收纳。
對於以上 YAML 模板,我们同样推荐您将它们放置到项目目 `.gitea` 行收纳。
##### 表支持通 URL 查询参数传值
##### 表支持通 URL 查询參數传值
当新建工页面 URL 以 `?title=Issue+Title&body=Issue+Text` 查询参数,表将使用其中的参数key-value)填充表内容。
当新建工页面 URL 以 `?title=Issue+Title&body=Issue+Text` 查询參數,表将使用其中的參數key-value)填充表内容。
### Gitea 支持的模板文件路径
模板文件名:
模板文件名:
- `ISSUE_TEMPLATE.md`
- `ISSUE_TEMPLATE.yaml`
@@ -60,7 +60,7 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
- `.github/issue_template.yaml`
- `.github/issue_template.yml`
并请求模板:
並請求模板:
- `PULL_REQUEST_TEMPLATE.md`
- `PULL_REQUEST_TEMPLATE.yaml`
@@ -81,9 +81,9 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
- `.github/pull_request_template.yaml`
- `.github/pull_request_template.yml`
#### 工模板目
#### 工模板目
由于工存在多种型,Gitea 支持将工模板统一收纳到 `ISSUE_TEMPLATE`。以下是 Gitea 支持的工模板目:
由于工存在多种型,Gitea 支持将工模板统一收纳到 `ISSUE_TEMPLATE`。以下是 Gitea 支持的工模板目:
- `ISSUE_TEMPLATE`
- `issue_template`
@@ -94,7 +94,7 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
- `.gitlab/ISSUE_TEMPLATE`
- `.gitlab/issue_template`
支持混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工模板。另外,合并请求模板不支持目存放。
支持混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工模板。另外,合並請求模板不支持目存放。
## Markdown 模板语法
@@ -112,19 +112,19 @@ labels:
This is the template!
```
上面的示例表示用户从列表中择一个工模板时,列表会展示模板名 `Template Name` 和模板描述 `This template is for testing!`。 同时,标题会预先填充 `[TEST]`,而正文将预先填充 `This is the template!` Issue 会被指派给 `user1`。 最后,Issue 会被分配两个标签`bug``help needed`且将问题指向 `main` 分支。
上面的示例表示使用者从列表中择一个工模板时,列表会展示模板名 `Template Name` 和模板描述 `This template is for testing!`。 同时,标题会预先填充 `[TEST]`,而正文将预先填充 `This is the template!` Issue 会被指派给 `user1`。 最后,Issue 会被分配两个標籤`bug``help needed`且将问题指向 `main` 分支。
## YAML 模板语法
YAML 模板格式如下,相比 Markdown 模板提供了更多实用性的功能。
```yaml
name: 单名称
about: 描述
name: 單名稱
about: 描述
title: 默认标题
body: 内容
type: 定义表元素
id: 定义表标号
body: 内容
type: 定义表元素
id: 定义表标号
attributes: 扩展的属性
validations: 内容校验
```
@@ -195,89 +195,89 @@ body:
### Markdown 段落
您可以在 YAML 模板中使用 `markdown` 元素开发者提供额外的上下文支撑,这部分内容会作为创建工单的提示但不会作为工单内容提交。
您可以在 YAML 模板中使用 `markdown` 元素开发者提供额外的上下文支撑,这部分内容会作為建立工單的提示但不会作為工單内容提交。
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------- | ------------------------------ | ---- | ------ | ------ | ------ |
| `value` | 渲染的文本。支持 Markdown 格式 | 必 | 字符串 | - | - |
| `value` | 渲染的文本。支持 Markdown 格式 | 必 | 字符串 | - | - |
### Textarea 多行文本输入框
您可以使用 `textarea` 元素在表中添加多行文本输入框。 除了输入文本,开发者可以在 `textarea` 区域附加文件。
您可以使用 `textarea` 元素在表中添加多行文本输入框。 除了输入文本,开发者可以在 `textarea` 区域附加文件。
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ----------------------------------------------------------------------------------------------------- | ---- | ------ | -------- | ------------------ |
| `label` | 预期用户输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的文本区域的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在文本区域空白时呈 | 可 | 字符串 | 空字符串 | - |
| `value` | 在文本区域中预填充的文本。 | 可 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本将格式化代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 | 可 | 字符串 | - | Gitea 支持的语言。 |
| `label` | 预期使用者输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的文本区域的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在文本区域空白时呈 | 可 | 字符串 | 空字符串 | - |
| `value` | 在文本区域中预填充的文本。 | 可 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本将格式化代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 | 可 | 字符串 | - | Gitea 支持的语言。 |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
### Input 行输入框
### Input 行输入框
您可以使用 `input` 元素添加行文本字段到表
您可以使用 `input` 元素添加行文本字段到表
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ---------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 预期用户输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的字段的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在字段空白时呈。 | 可 | 字符串 | 空字符串 | - |
| `value` | 字段中预填的文本。 | 可 | 字符串 | - | - |
| `label` | 预期使用者输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的字段的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在字段空白时呈。 | 可 | 字符串 | 空字符串 | - |
| `value` | 字段中预填的文本。 | 可 | 字符串 | - | - |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ----------- | -------------------------------- | ---- | ------ | ------ | -------------------------------------------------------------- |
| `required` | 防止在未填内容时提交表。 | 可 | 布尔型 | false | - |
| `is_number` | 防止在未填数字时提交表。 | 可 | 布尔型 | false | - |
| `regex` | 直到满足了与正则表达式匹配的值。 | 可 | 字符串 | - | [正则表达式](https://en.wikipedia.org/wiki/Regular_expression) |
| `required` | 防止在未填内容时提交表。 | 可 | 布尔型 | false | - |
| `is_number` | 防止在未填数字时提交表。 | 可 | 布尔型 | false | - |
| `regex` | 直到满足了与正则表达式匹配的值。 | 可 | 字符串 | - | [正则表达式](https://en.wikipedia.org/wiki/Regular_expression) |
### Dropdown 下拉菜
### Dropdown 下拉菜
您可以使用 `dropdown` 元素在表中添加下拉菜
您可以使用 `dropdown` 元素在表中添加下拉菜
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | --------------------------------------------------------- | ---- | ---------- | -------- | ------ |
| `label` | 预期用户输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的下拉列表的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `multiple` | 确定用户是否可以择多个项。 | 可 | 布尔型 | false | - |
| `options` | 用户可以择的项列表。 不能空,所有择必是不同的。 | 必 | 字符串数组 | - | - |
| `label` | 预期使用者输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的下拉列表的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `multiple` | 确定使用者是否可以择多个项。 | 可 | 布尔型 | false | - |
| `options` | 使用者可以择的项列表。 不能空,所有择必是不同的。 | 必 | 字符串数组 | - | - |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
### Checkboxes 复
### Checkboxes 复
您可以使用 `checkboxes` 元素添加一组复框到表
您可以使用 `checkboxes` 元素添加一组复框到表
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ----------------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 预期用户输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 复框集的描述,以表形式显示。 支持 Markdown 格式。 | 可 | 字符串 | 空字符串 | - |
| `options` | 用户可以择的复框列表。 有关语法,参阅下文。 | 必 | 数组 | - | - |
| `label` | 预期使用者输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 复框集的描述,以表形式显示。 支持 Markdown 格式。 | 可 | 字符串 | 空字符串 | - |
| `options` | 使用者可以择的复框列表。 有关语法,参阅下文。 | 必 | 数组 | - | - |
对于 `options`,您可以设置以下参数
對於 `options`,您可以设置以下參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | --------------------------------------------------------------------------------- | ---- | ------ | ------ | ------ |
| `label` | 项的标识符,显示在表中。 支持 Markdown 用于粗或斜文本格式化和超文本链接。 | 必 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `label` | 项的标识符,显示在表中。 支持 Markdown 用于粗或斜文本格式化和超文本链接。 | 必 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
@@ -6,28 +6,28 @@ aliases:
- /zh-tw/labels
---
# 标签
# 標籤
您可以使用标签对工和合并请求进行分类,提高对它们的概览。
您可以使用標籤对工和合並請求進行分类,提高对它们的概览。
## 创建标签
## 建立標籤
对于仓库,可以在 `工Issues`点击 `标签Labels`创建标签
對於存放庫,可以在 `工Issues`點擊 `標籤Labels`建立標籤
对于组织,您可以定义组织级别的标签,这些标签与所有组织仓库共享,包括已存在的仓库和新创建的仓库。可以在组织`设置(Settings`创建组织级别的标签
對於組織,您可以定义組織级别的標籤,这些標籤与所有組織存放庫共享,包括已存在的存放庫和新建立的存放庫。可以在組織`设置(Settings`建立組織级别的標籤
标签具有必填的名和颜色,可的描述,以及必是独占的或非独占的(见下面的“作用域标签”)。
標籤具有必填的名和颜色,可的描述,以及必是独占的或非独占的(见下面的“作用域標籤”)。
当您创建一个仓库时,可以通使用 `工单标签Issue Labels` 项来选择标签集。该选项列出了一些在您的实例上 [全局配置的可用标签](../administration/customizing-gitea.md#labels)。在创建仓库时,这些标签也将被建。
当您建立一个存放庫时,可以通使用 `工單標籤Issue Labels` 项来選择標籤集。該選项列出了一些在您的实例上 [全局配置的可用標籤](../administration/customizing-gitea.md#labels)。在建立存放庫时,这些標籤也将被建
## 作用域标签
## 作用域標籤
作用域标签用于确保将至多一个具有相同作用域的标签分配给工或合并请求。例如,如果标签 `kind/bug``kind/enhancement` 的独占项被设置,那么工只能被分类 bug 或 enhancement 中的一个。
作用域標籤用于确保将至多一个具有相同作用域的標籤分配给工或合並請求。例如,如果標籤 `kind/bug``kind/enhancement` 的独占项被设置,那么工只能被分类 bug 或 enhancement 中的一个。
作用域标签的名称必须包含 `/`(不能在名的任一端)。标签的作用域是基于最后一个 `/` 决定的,因此例如标签 `scope/subscope/item` 的作用域是 `scope/subscope`
作用域標籤的名稱必須包含 `/`(不能在名的任一端)。標籤的作用域是基于最后一个 `/` 决定的,因此例如標籤 `scope/subscope/item` 的作用域是 `scope/subscope`
## 按标签筛选
## 按標籤筛選
和合并请求列表可以按标签进行筛选。选择多个标签将显示具有所有选定标签的工和合并请求。
和合並請求列表可以按標籤進行筛選。選择多个標籤将显示具有所有選定標籤的工和合並請求。
按住 alt 键并单击标签,可以将具有所选标签的工和合并请求从列表中排除。
按住 alt 键並單擊標籤,可以将具有所選標籤的工和合並請求从列表中排除。
@@ -8,85 +8,85 @@ aliases:
# 自动链接引用
发布工单、合并请求或评论时,文本描述会被解析以查找引用。这些引用将显示为工单视图中的链接,且在某些情况下会触发特定的“操作”。
發佈工單、合並請求或评论时,文本描述会被解析以查找引用。这些引用将显示為工單视图中的链接,且在某些情况下会触发特定的“操作”。
类似地,当列出提交消息时,它们也会被解析,且当它们被推送到主分支时可以触发“操作”。
类似地,当列出提交消息时,它们也会被解析,且当它们被推送到主分支时可以触发“操作”。
了防止意外建引用,对于引用的识别有一定的规则。例如,它们不应该包含在代码文本内部。它们还应该在周围的文本中合理清晰(例如,使用空格)。
了防止意外建引用,對於引用的识别有一定的規則。例如,它们不應該包含在代码文本内部。它们還應該在周围的文本中合理清晰(例如,使用空格)。
## 用户、团队和组织提及
## 使用者、团队和組織提及
当找到形式 `@username` 的文本,`username`现有用户的名匹配时,将建一个“提及”引用。这将通将文本更改指向该用户个人资料的链接来显示,根据被提及的用户是否具有访问内容所需的权限来可能建通知。
当找到形式 `@username` 的文本,`username`現有使用者的名匹配时,将建一个“提及”引用。这将通将文本更改指向該使用者个人资料的链接来显示,根据被提及的使用者是否具有访问内容所需的权限来可能建通知。
示例:
> [@John](#),你能看一下这个吗?
对于团队和组织也是有效的:
對於团队和組織也是有效的:
> [@Documenters](#),我们需要为此进行规划。
> [@Documenters](#),我们需要為此進行规划。
> [@CoolCompanyInc](#),这个问题关系到我们所有人!
团队将在适当时收到邮件通知,但整个组织不会收到通知。
团队将在适当时收到邮件通知,但整个組織不会收到通知。
提交消息不会产生用户通知。
提交消息不会产生使用者通知。
## 提交
可以使用提交的 SHA1 哈希或至少七个字符的一部分来引用提交。它们将显示指向相提交的链接。
可以使用提交的 SHA1 哈希或至少七个字符的一部分来引用提交。它们将显示指向相提交的链接。
示例:
> 这个错误是在 [e59ff077](#) 中引入的
## 工和合并请
## 工和合並請
可以使用简的符号 `#1234`建对另一个工或合并请求的引用,其中 _1234_ 是同一仓库中一个工或合并请求的编号。这些引用将显示指向被引用内容的链接。
可以使用简的符号 `#1234` 来建对另一个工或合並請求的引用,其中 _1234_ 是同一存放庫中一个工或合並請求的编号。这些引用将显示指向被引用内容的链接。
创建此类型引用的效果是,在被引用的文档中创建一个“通知”,前提是引用的建者对其具有读取权限。
建立此類型引用的效果是,在被引用的文檔中建立一个“通知”,前提是引用的建者对其具有读取权限。
示例:
> 这似乎与 [#1234](#) 相关
可以使用形式 `owner/repository#1234` 来引用其他仓库中的工和合并请求:
可以使用形式 `owner/repository#1234` 来引用其他存放庫中的工和合並請求:
> 这似乎与 [mike/compiler#1234](#) 相关
或者也可以使用 `!1234` 符号。虽然在 Gitea 中合并请求是工的一种形式,但 `#1234` 形式总是链接到工;如果链接的条目恰好是一个合并请求,Gitea 会适当地行重定向。而使用 `!1234` 符号,则会建一个合并请求链接,根据需要会被重定向到工。然而,如果使用外部跟踪器,这个区别可能很重要,因为工单和合并请求的链接是不能互换的。
或者也可以使用 `!1234` 符号。虽然在 Gitea 中合並請求是工的一种形式,但 `#1234` 形式总是链接到工;如果链接的条目恰好是一个合並請求,Gitea 会适当地行重定向。而使用 `!1234` 符号,则会建一个合並請求链接,根据需要会被重定向到工。然而,如果使用外部跟踪器,这个区别可能很重要,因為工單和合並請求的链接是不能互换的。
## 可操作的引用在合并请求和提交消息中
## 可操作的引用在合並請求和提交消息中
有时,一个提交或合并请求可能会修复或重新出在某个特定工中。Gitea 支持在引用之前加上特定的“关键字”来关闭和重新打开被引用的工。常见的关键字包括“closes”、“fixes”、“reopens”等。这个列表可以由站点管理员行 [自定义](../administration/config-cheat-sheet.md)。
有时,一个提交或合並請求可能会修复或重新出在某个特定工中。Gitea 支持在引用之前加上特定的“关键字”来关闭和重新打开被引用的工。常见的关键字包括“closes”、“fixes”、“reopens”等。这个列表可以由站点管理员行 [自定义](../administration/config-cheat-sheet.md)。
示例:
> 这个合并请求 _closes_ [#1234](#)
> 这个合並請求 _closes_ [#1234](#)
如果可操作的引用被接受,这将在被引用的工单上创建一个通知,宣布当引用的合并请求被合并时该工单将被关闭。
如果可操作的引用被接受,这将在被引用的工單上建立一个通知,宣布当引用的合並請求被合並时該工單将被关闭。
了接受可操作的引用,必满足以下至少一项条件之一:
了接受可操作的引用,必满足以下至少一项条件之一:
- 评论者在建引用时具有关闭或重新打开工的权限。
- 评论者在建引用时具有关闭或重新打开工的权限。
- 引用位于提交消息中。
- 引用作为合并请求描述的一部分发布
- 引用作為合並請求描述的一部分發佈
在最后一种情况下,只有当合并合并请求的人具有相权限时,工才会被关闭或重新打开。
在最后一种情况下,只有当合並合並請求的人具有相权限时,工才会被关闭或重新打开。
此外,只有合并请求和提交消息可以建一个操作,只有工可以通这种方式被关闭或重新打开。
此外,只有合並請求和提交消息可以建一个操作,只有工可以通这种方式被关闭或重新打开。
默认的关键字如下:
- **关闭工**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打开工**: reopen, reopens, reopened
- **关闭工**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打开工**: reopen, reopens, reopened
## 合并请求和提交消息中的时间跟踪
## 合並請求和提交消息中的时间跟踪
当提交或合并合并请求导致自动关闭工时,可以通提交消息添加解决此工所花费的时间。
当提交或合並合並請求导致自动关闭工时,可以通提交消息添加解决此工所花费的时间。
要指定解决工所花费的时间,需要在工编号后面以 `@<number><time-unit>` 的格式指定时间。在一个提交消息中,可以指定多个已解决的工单,并为每个工指定花费的时间。
要指定解决工所花费的时间,需要在工编号后面以 `@<number><time-unit>` 的格式指定时间。在一个提交消息中,可以指定多个已解决的工單,並為每个工指定花费的时间。
支持的时间位(`<time-unit>`):
支持的时间位(`<time-unit>`):
- `m` - 分钟
- `h` - 小时
@@ -94,50 +94,50 @@ aliases:
- `w` - 周(相当于 5 天)
- `mo` - 月(相当于 4 周)
用于指定时间的数字(`<number>`)也可以是小数,例如 `@1.5h` 表示一小时半。多个时间位可以结合使用,例如 `@1h10m` 表示 1 小时 10 分钟。
用于指定时间的数字(`<number>`)也可以是小数,例如 `@1.5h` 表示一小时半。多个时间位可以结合使用,例如 `@1h10m` 表示 1 小时 10 分钟。
提交消息示例:
> Fixed #123 spent @1h, refs #102, fixes #124 @1.5h
这将导致工 #123 增加 1 小时,工 #124 增加 1 小时半。
这将导致工 #123 增加 1 小时,工 #124 增加 1 小时半。
## 外部跟踪器
Gitea 支持使用外部工跟踪器,可以在合并请求中创建对外部托管的工的引用。但是,如果外部跟踪器使用数字来标识工,那么它们将与 Gitea 中托管的合并请求无法区分。了解决这个问题,Gitea 允许使用 `!` 标记来标识合并请求。例如:
Gitea 支持使用外部工跟踪器,可以在合並請求中建立对外部托管的工的引用。但是,如果外部跟踪器使用数字来标识工,那么它们将与 Gitea 中托管的合並請求無法区分。了解决这个问题,Gitea 允许使用 `!` 标记来标识合並請求。例如:
> 这是工 [#1234](#)链接到外部跟踪器。
> 这是合并请求 [!1234](#)链接到 Gitea 中的合并请求。
> 这是工 [#1234](#)链接到外部跟踪器。
> 这是合並請求 [!1234](#)链接到 Gitea 中的合並請求。
在工和合并请求中,`!``#` 可以互换使用,除非需要行区分。如果仓库使用外部跟踪器,默认情况下,合提交消息将使用 `!`引用。
在工和合並請求中,`!``#` 可以互换使用,除非需要行区分。如果存放庫使用外部跟踪器,默认情况下,合提交消息将使用 `!`引用。
## 工和合并请求引用摘要
## 工和合並請求引用摘要
下表说明了工和合并请求的不同型的交叉引用。在示例中,`User1/Repo1` 指的是使用引用的仓库,而 `UserZ/RepoZ` 表示另一个仓库
下表说明了工和合並請求的不同型的交叉引用。在示例中,`User1/Repo1` 指的是使用引用的存放庫,而 `UserZ/RepoZ` 表示另一个存放庫
| 在 User1/Repo1 中的引用 | Repo1 的工是外部的 | RepoZ 的工是外部的 | 渲染效果 |
| 在 User1/Repo1 中的引用 | Repo1 的工是外部的 | RepoZ 的工是外部的 | 渲染效果 |
| ----------------------- | :------------------: | :------------------: | --------------------------------------------- |
| `#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `User1/Repo1!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `User1/Repo1#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `User1/Repo1#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `User1/Repo1!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `User1/Repo1#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `User1/Repo1!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合并请求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合并请求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合並請求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合並請求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ 1234 |
| `UserZ/RepoZ!1234` | - | 是 | 链接到 `UserZ/RepoZ`_PR_ 1234 |
| **字母数字工编号:** | - | - | - |
| `AAA-1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ `AAA-1234` |
| **字母数字工编号:** | - | - | - |
| `AAA-1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ `AAA-1234` |
| `!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| _不支持_ | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ `AAA-1234` |
| _不支持_ | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ `AAA-1234` |
| `UserZ/RepoZ!1234` | - | 是 | 链接到 `UserZ/RepoZ` 中的 _PR_ 1234 |
_最后一部分适用于使用字母数字格式的外部工跟踪器的仓库_
_最后一部分适用于使用字母数字格式的外部工跟踪器的存放庫_
_**-**: 不适用_
注意:不完全支持具有不同型工(外部 vs. 内部)的仓库之间的自动引用,可能会导致效链接。
注意:不完全支持具有不同型工(外部 vs. 内部)的存放庫之间的自动引用,可能会导致效链接。
@@ -7,11 +7,11 @@ aliases:
- /zh-tw/merge-message-templates
---
# 合消息模板
# 合消息模板
## 文件名
PR 默认合消息模板可能的文件名:
PR 默认合消息模板可能的文件名:
- `.gitea/default_merge_message/MERGE_TEMPLATE.md`
- `.gitea/default_merge_message/REBASE_TEMPLATE.md`
@@ -24,24 +24,24 @@ PR 默认合并消息模板可能的文件名:
您可以在这些模板中使用以下以 `${}` 包围的变量,这些变量遵循 [os.Expand](https://pkg.go.dev/os#Expand) 语法:
- BaseRepoOwnerName:此合并请求的基础仓库所有者名
- BaseRepoName:此合并请求的基础仓库名称
- BaseBranch:此合并请求的基础仓库目标分支名
- HeadRepoOwnerName:此合并请求的源仓库所有者名
- HeadRepoName:此合并请求的源仓库名称
- HeadBranch:此合并请求的源仓库分支名
- PullRequestTitle:合并请求的标题
- PullRequestDescription:合并请求的描述
- PullRequestPosterName:合并请求的提交者名
- PullRequestIndex:合并请求的索引号
- PullRequestReference:合并请求的引用字符与索引号。例如,#1、!2
- ClosingIssues:返回一个包含将由此合并请求关闭的所有工的字符串。例如 `close #1, close #2`
- ReviewedOn: 提交所属的合并请求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 谁同意的此合并请求。例如: `Reviewed-by: Jane Doe <[email protected]>`
- BaseRepoOwnerName:此合並請求的基础存放庫所有者名
- BaseRepoName:此合並請求的基础存放庫名稱
- BaseBranch:此合並請求的基础存放庫目标分支名
- HeadRepoOwnerName:此合並請求的源存放庫所有者名
- HeadRepoName:此合並請求的源存放庫名稱
- HeadBranch:此合並請求的源存放庫分支名
- PullRequestTitle:合並請求的标题
- PullRequestDescription:合並請求的描述
- PullRequestPosterName:合並請求的提交者名
- PullRequestIndex:合並請求的索引号
- PullRequestReference:合並請求的引用字符与索引号。例如,#1、!2
- ClosingIssues:返回一个包含将由此合並請求关闭的所有工的字符串。例如 `close #1, close #2`
- ReviewedOn: 提交所属的合並請求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 谁同意的此合並請求。例如: `Reviewed-by: Jane Doe <[email protected]>`
## 变基(Rebase
在没有合提交的情况下行变基时,`REBASE_TEMPLATE.md` 修改最后一次提交的消息。此模板提供以下附加变量:
在没有合提交的情况下行变基时,`REBASE_TEMPLATE.md` 修改最后一次提交的消息。此模板提供以下附加变量:
- CommitTitle:提交的标题
- CommitBody:提交的正文文本
@@ -4,19 +4,19 @@ slug: "alpine"
sidebar_position: 4
---
# Alpine 软件包注册表
# Alpine 軟體包儲存庫
在您的用户或组织中发布 [Alpine](https://pkgs.alpinelinux.org/) 软件包。
在您的使用者或組織中發佈 [Alpine](https://pkgs.alpinelinux.org/) 軟體包。
## 要求
要使用 Alpine 注册表,您需要使用像 curl 这样的 HTTP 客户端来上传包,使用像 apk 这样的包管理器来消费包。
要使用 Alpine 儲存庫,您需要使用像 curl 这样的 HTTP 客户端来上传包,使用像 apk 这样的包管理器来消费包。
以下示例使用 `apk`
## 配置软件包注册表
## 配置軟體包儲存庫
要注册 Alpine 注册表,请将 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
要注册 Alpine 儲存庫,請将 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
```
https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
@@ -24,43 +24,43 @@ https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 软件包所有者 |
| `owner` | 軟體包所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的仓库名 |
| `repository` | 要使用的存放庫名 |
如果注册表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-认证):
如果註冊表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-認證):
```
https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
```
Alpine 注册表文件使用 RSA 密钥行签名,apk 必知道密钥。下载公钥将其存`/etc/apk/keys/`中:
Alpine 儲存庫文件使用 RSA 密钥行签名,apk 必知道密钥。下载公钥将其存`/etc/apk/keys/`中:
```shell
curl -JO https://gitea.example.com/api/packages/{owner}/alpine/key
```
之后,更新本地软件包索引:
之后,更新本地軟體包索引:
```shell
apk update
```
## 发布软件
## 發佈軟體
发布一个 Alpine 包(`*.apk`),请执行带有包内容的 HTTP `PUT` 操作,将其放在请求体中。
發佈一个 Alpine 包(`*.apk`),請執行带有包内容的 HTTP `PUT` 操作,将其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------------ | --------------------------------------------------------------------------------------------------- |
| `owner` | 包的所有者。 |
| `branch` | 分支可以与操作系统的发行版本匹配,例如:v3.17。 |
| `repository` | 仓库可以用于[分组包](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或类似的名。 |
| `repository` | 存放庫可以用于[分组包](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或类似的名。 |
使用 HTTP 基本身份验证的示例请求:
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -68,50 +68,50 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main
```
如果您使用的是双重身份验证或 OAuth使用[个人访问令牌](development/api-usage.md#authentication)代替密
您不能将具有相同名的文件两次发布到一个包中。您必首先删除有的包文件。
如果您使用的是双重身份驗證或 OAuth使用[個人訪問令牌](development/api-usage.md#authentication)代替密
您不能将具有相同名的文件两次發佈到一个包中。您必首先删除有的包文件。
服务器将以以下的 HTTP 状态码响应
服务器将以以下的 HTTP 狀態碼回應
| HTTP 状态码 | 含义 |
| HTTP 狀態碼 | 含义 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 软件包已发布。 |
| `400 Bad Request` | 软件包的名、版本、分支、仓库或架构效。 |
| `409 Conflict` | 具有相同参数组合的包文件已存在于软件包中。 |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名、版本、分支、存放庫或架构效。 |
| `409 Conflict` | 具有相同參數组合的包文件已存在于軟體包中。 |
## 删除软件
## 删除軟體
要删除 Alpine 包,行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
要删除 Alpine 包,行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的仓库名 |
| `architecture` | 软件包的架构 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
| `filename` | 要删除的文件名 |
使用 HTTP 基本身份验证的示例请求:
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main/test-package-1.0.0.apk
```
服务器将以以下的 HTTP 状态码响应
服务器将以以下的 HTTP 狀態碼回應
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到软件包或文件 |
| `404 Not Found` | 未找到軟體包或文件 |
## 安装软件
## 安裝軟體
要从 Alpine 注册表安装软件包,请执行以下命令:
要从 Alpine 儲存庫安裝軟體包,請執行以下命令:
```shell
# use latest version
@@ -0,0 +1,122 @@
---
date: "2023-05-15T00:00:00+00:00"
slug: "container"
sidebar_position: 5
---
# Arch 儲存庫
在您的使用者或組織中發佈 [Arch](https://archlinux.org/packages/) 軟體包。 Arch 儲存庫的功能像是一個完整的[鏡像Arch 儲存庫](https://wiki.archlinux.org/title/mirrors\),需要調整系統的`/etc/pacman.conf`文件。
## 需求
系統需要安裝有HTTP客戶端像是`curl`來下載文件,且必須安裝有`pacman`軟體包管理工具。
## 配置 Arch 儲存庫
Arch 儲存庫的軟體都有`gpg`簽名驗證,所以需要匯入驗證需要的公鑰,下面是下載公鑰的範例。
```sh
wget https://gitea.example.com/api/packages/{owner}/arch/repository.key
```
匯入公鑰之前,請先確認是否為該 Arch 儲存庫的公鑰,下面是檢視公鑰的範例。確認完成請記第二行的16為的`key id`
```sh
gpg --show-keys repository.key
```
接下來要匯入到pacman的鑰匙圈中,下面是匯入的範例。
```sh
pacman-key --add repository.key
pacman-key --lsign-key {key id}
```
匯入驗證的公鑰,接下來要修改pacman的配置檔,位置是`/etc/pacman.conf`,內容如下。
```conf
[{owner}.gitea.example.com]
SigLevel = Required
Server = https://gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
如果註冊表是私有的,請在 URL 中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#通過-api-認證):
```
Server = https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
## 發佈軟體包
要發佈一个 Arch 軟體包,請執行带有包内容的 HTTP `PUT` 操作,将其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/arch/{repository}
```
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `repository` | 要使用的存放庫名 |
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_password_or_token \
--upload-file path/to/file.pkg.tar.zst \
https://gitea.example.com/api/packages/testuser/arch/core
```
如果您使用的是双重身份驗證或 OAuth,請使用[個人訪問令牌](development/api-usage.md#authentication)代替密碼。
您不能将具有相同名稱的文件两次發佈到一个包中。您必須首先删除現有的包文件。
服务器将以以下的 HTTP 狀態碼回應:
| HTTP 狀態碼 | 含义 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名稱、版本、分支、存放庫或架构無效。 |
| `409 Conflict` | 具有相同參數组合的包文件已存在于軟體包中。 |
## 安裝軟體包
要从 AArch 儲存庫安裝軟體包,請執行以下命令:
```sh
pacman -Sy {package_name}
```
| Parameter | 含义 |
| -------------- | ----------- |
| `package_name` | 軟體包 |
## 删除軟體包
要删除 Arch 軟體包,執行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/arch/{repository}/{package_name}/{package_version}/{architecture}
```
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
| `package_name` | 要删除的軟體名 |
| `package_version` | 軟體版本 |
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/arch/core/test-package/1.0.0/x86-64
```
服务器将以以下的 HTTP 狀態碼回應:
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到軟體包或文件 |
@@ -4,37 +4,37 @@ slug: "cargo"
sidebar_position: 5
---
# Cargo 软件包注册
# Cargo 軟體包註冊
您的用户或组织发布 [Cargo](https://doc.rust-lang.org/stable/cargo/) 软件包。
您的使用者或組織發佈 [Cargo](https://doc.rust-lang.org/stable/cargo/) 軟體包。
## 要求
若要使用 Cargo 软件包注册表, 您需要安 [Rust 和 Cargo](https://www.rust-lang.org/tools/install).
若要使用 Cargo 軟體包註冊表, 您需要安 [Rust 和 Cargo](https://www.rust-lang.org/tools/install).
Cargo 将可用软件包的信息存在一个存在 git 仓库中的软件包索引中。
这个仓库是与注册表交互所必需的。
下面的部分将介绍如何建它。
Cargo 将可用軟體包的信息存在一个存在 git 存放庫中的軟體包索引中。
这个存放庫是与註冊表交互所必需的。
下面的部分将介绍如何建它。
## 索引仓库
## 索引存放庫
Cargo 将可用软件包的信息存在一个存在 git 仓库中的软件包索引中。
在 Gitea 中,这个仓库有一个特殊的名叫做 `_cargo-index`
在上传软件包之后,它的元数据会自动写入索引中。
手动修改这个注册表的内容。
Cargo 将可用軟體包的信息存在一个存在 git 存放庫中的軟體包索引中。
在 Gitea 中,这个存放庫有一个特殊的名叫做 `_cargo-index`
在上传軟體包之后,它的元数据会自动写入索引中。
手动修改这个註冊表的内容。
用户或组织软件包设置页面允许建这个索引仓库以及配置文件。
使用者或組織軟體包设置页面允许建这个索引存放庫以及配置文件。
如果需要,此操作将重写配置文件。
例如,如果 Gitea 实例的域名已更改,这将非常有用。
如果存在 Gitea 中的软件包与索引注册表中的信息不同步,设置页面允许重建这个索引注册表。
这个操作将遍历注册表中的所有软件包,将它们的信息写入索引中。
如果有很多软件包,这个程可能需要一些时间。
如果存在 Gitea 中的軟體包与索引註冊表中的信息不同步,设置页面允许重建这个索引註冊表。
这个操作将遍历註冊表中的所有軟體包,将它们的信息写入索引中。
如果有很多軟體包,这个程可能需要一些时间。
## 配置软件包注册
## 配置軟體包註冊
要注册这个软件包注册表,必更新 Cargo 的配置。
将以下文本添加到位于当前用户主目中的配置文件中(例如 `~/.cargo/config.toml`):
要注册这个軟體包註冊表,必更新 Cargo 的配置。
将以下文本添加到位于当前使用者主目中的配置文件中(例如 `~/.cargo/config.toml`):
```
[registry]
@@ -48,43 +48,43 @@ index = "sparse+https://gitea.example.com/api/packages/{owner}/cargo/" # Sparse
git-fetch-with-cli = true
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | ---------------- |
| `owner` | 软件包的所有者。 |
| `owner` | 軟體包的所有者。 |
如果这个注册表是私有的或者您想要发布新的软件包,您必配置您的凭据。
将凭据部分添加到位于当前用户主目中的凭据文件中(例如 `~/.cargo/credentials.toml`):
如果这个註冊表是私有的或者您想要發佈新的軟體包,您必配置您的凭据。
将凭据部分添加到位于当前使用者主目中的凭据文件中(例如 `~/.cargo/credentials.toml`):
```
[registries.gitea]
token = "Bearer {token}"
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | ------------------------------------------------------------------------------------- |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-认证) |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-認證) |
## 发布软件
## 發佈軟體
在项目中运行以下命令来发布软件包:
在项目中运行以下命令来發佈軟體包:
```shell
cargo publish
```
如果已经存在同名和版本的软件包,您将无法发布新的软件包。您必先删除有的软件包。
如果已经存在同名和版本的軟體包,您将無法發佈新的軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安装软件包,请执行以下命令:
要从軟體包註冊表安裝軟體包,請執行以下命令:
```shell
cargo add {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ------------ |
| `package_name` | 软件包名。 |
| `package_name` | 軟體包名。 |
## 支持的命令
@@ -4,81 +4,81 @@ slug: "chef"
sidebar_position: 5
---
# Chef 软件包注册
# Chef 軟體包註冊
您的用户或组织发布 [Chef](https://chef.io/) cookbooks。
您的使用者或組織發佈 [Chef](https://chef.io/) cookbooks。
## 要求
要使用 Chef 软件包注册表,您需要使用 [`knife`](https://docs.chef.io/workstation/knife/).
要使用 Chef 軟體包註冊表,您需要使用 [`knife`](https://docs.chef.io/workstation/knife/).
## 认证
## 認證
Chef 软件包注册表不使用用户名和密码进行身份验证,而是使用私钥和公钥对请求进行签名。
访问软件包所有者设置页面以建必要的密钥对。
只有公钥存在Gitea中。如果您丢失了私钥的访问权限,您必重新生成密钥对。
[配置 `knife`](https://docs.chef.io/workstation/knife_setup/),使用下载的私钥,将 Gitea 用户名设置 `client_name`
Chef 軟體包註冊表不使用使用者名和密碼進行身份驗證,而是使用私钥和公钥对請求進行签名。
访问軟體包所有者设置页面以建必要的密钥对。
只有公钥存在Gitea中。如果您丢失了私钥的访问权限,您必重新生成密钥对。
[配置 `knife`](https://docs.chef.io/workstation/knife_setup/),使用下载的私钥,将 Gitea 使用者名设置 `client_name`
## 配置软件包注册
## 配置軟體包註冊
要将 [`knife` 配置](https://docs.chef.io/workstation/knife_setup/)使用 Gitea 软件包注册表,将 URL 添加到 `~/.chef/config.rb` 文件中。
要将 [`knife` 配置](https://docs.chef.io/workstation/knife_setup/)使用 Gitea 軟體包註冊表,将 URL 添加到 `~/.chef/config.rb` 文件中。
```
knife[:supermarket_site] = 'https://gitea.example.com/api/packages/{owner}/chef'
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
## 发布软件
## 發佈軟體
若要发布 Chef 软件包,请执行以下命令:
若要發佈 Chef 軟體包,請執行以下命令:
```shell
knife supermarket share {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 软件包名 |
| `package_name` | 軟體包名 |
如果已经存在同名和版本的软件包,则无法发布新的软件包。您必先删除有的软件包。
如果已经存在同名和版本的軟體包,则無法發佈新的軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表中安装软件包,请执行以下命令:
要从軟體包註冊表中安裝軟體包,請執行以下命令:
```shell
knife supermarket install {package_name}
```
您可以指定软件包的版本,这是可的:
您可以指定軟體包的版本,这是可的:
```shell
knife supermarket install {package_name} {package_version}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
## 删除软件
## 删除軟體
如果您想要从注册表中删除软件包,请执行以下命令:
如果您想要从註冊表中删除軟體包,請執行以下命令:
```shell
knife supermarket unshare {package_name}
```
地,您可以指定软件包的版本:
地,您可以指定軟體包的版本:
```shell
knife supermarket unshare {package_name}/versions/{package_version}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
@@ -4,35 +4,35 @@ slug: "composer"
sidebar_position: 10
---
# Composer 软件包注册
# Composer 軟體包註冊
您的用户或组织发布 [Composer](https://getcomposer.org/) 软件包。
您的使用者或組織發佈 [Composer](https://getcomposer.org/) 軟體包。
## 要求
要使用 Composer 软件包注册表,您可以使用 [Composer](https://getcomposer.org/download/) 消费,使用类似 `curl` 的 HTTP 上传客户端发布软件包。
要使用 Composer 軟體包註冊表,您可以使用 [Composer](https://getcomposer.org/download/) 消费,使用类似 `curl` 的 HTTP 上传客户端發佈軟體包。
## 发布软件
## 發佈軟體
发布 Composer 软件包,请执行 HTTP `PUT` 操作,将软件包内容放入请求体中。
软件包内容必是包含 `composer.json` 文件的压缩 PHP 项目。
如果已经存在同名和版本的软件包,则无法发布新的软件包。您必先删除有的软件包。
發佈 Composer 軟體包,請執行 HTTP `PUT` 操作,将軟體包内容放入請求體中。
軟體包内容必是包含 `composer.json` 文件的压缩 PHP 项目。
如果已经存在同名和版本的軟體包,则無法發佈新的軟體包。您必先删除有的軟體包。
```
PUT https://gitea.example.com/api/packages/{owner}/composer
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
如果 `composer.json` 文件不包含 `version` 属性,您必将其作查询参数提供:
如果 `composer.json` 文件不包含 `version` 属性,您必将其作查询參數提供:
```
PUT https://gitea.example.com/api/packages/{owner}/composer?version={x.y.z}
```
使用 HTTP 基本身份验证的示例求:
使用 HTTP 基本身份驗證的示例求:
```shell
curl --user your_username:your_password_or_token \
@@ -40,7 +40,7 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/composer
```
或者将软件包版本指定查询参数
或者将軟體包版本指定查询參數
```shell
curl --user your_username:your_password_or_token \
@@ -48,18 +48,18 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/composer?version=1.0.3
```
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密
服务器将以以下 HTTP 状态码响应
服务器将以以下 HTTP 状态码響應
| HTTP 状态码 | 含义 |
| ----------------- | ----------------------------------------------------------- |
| `201 Created` | 软件包已发布 |
| `400 Bad Request` | 软件包名和/或版本效,或具有相同名和版本的软件包已存在 |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名和/或版本效,或具有相同名和版本的軟體包已存在 |
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要将其添加到 Composer 的 `config.json` 文件中(通常可以在 `<user-home-dir>/.composer/config.json` 中找到):
要注册軟體包註冊表,您需要将其添加到 Composer 的 `config.json` 文件中(通常可以在 `<user-home-dir>/.composer/config.json` 中找到):
```json
{
@@ -71,7 +71,7 @@ curl --user your_username:your_password_or_token \
}
```
要使用凭据访问软件包注册表,您必`auth.json` 文件中指定它们,如下所示:
要使用凭据访问軟體包註冊表,您必`auth.json` 文件中指定它们,如下所示:
```json
{
@@ -84,27 +84,27 @@ curl --user your_username:your_password_or_token \
}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ---------- | --------------------------- |
| `owner` | 软件包的所有者 |
| `username` | 您的 Gitea 用户名 |
| `password` | 您的Gitea密或个人访问令牌 |
| `owner` | 軟體包的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的Gitea密或个人访问令牌 |
## 安装软件
## 安裝軟體
要从软件包注册表中安装软件包,请执行以下命令:
要从軟體包註冊表中安裝軟體包,請執行以下命令:
```shell
composer require {package_name}
```
您可以指定软件包的版本,这是可的:
您可以指定軟體包的版本,这是可的:
```shell
composer require {package_name}:{package_version}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
@@ -4,29 +4,29 @@ slug: "conan"
sidebar_position: 20
---
# Conan 软件包注册
# Conan 軟體包註冊
您的用户或组织发布 [Conan](https://conan.io/) 软件包。
您的使用者或組織發佈 [Conan](https://conan.io/) 軟體包。
## 要求
要使用 [conan](https://conan.io/downloads.html) 软件包注册表,您需要使用 conan 命令行工具来消费和发布软件包。
要使用 [conan](https://conan.io/downloads.html) 軟體包註冊表,您需要使用 conan 命令行工具来消费和發佈軟體包。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要配置一个新的 Conan remote
要注册軟體包註冊表,您需要配置一个新的 Conan remote
```shell
conan remote add {remote} https://gitea.example.com/api/packages/{owner}/conan
conan user --remote {remote} --password {password} {username}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `remote` | 远程名。 |
| `username` | 您的 Gitea 用户名。 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密。 |
| `owner` | 软件包的所有者。 |
| `remote` | 远程名。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密。 |
| `owner` | 軟體包的所有者。 |
例如:
@@ -35,17 +35,17 @@ conan remote add gitea https://gitea.example.com/api/packages/testuser/conan
conan user --remote gitea --password password123 testuser
```
## 发布软件
## 發佈軟體
运行以下命令发布 Conan 软件包:
运行以下命令發佈 Conan 軟體包:
```shell
conan upload --remote={remote} {recipe}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------- | --------------- |
| `remote` | 远程名 |
| `remote` | 远程名 |
| `recipe` | 要上传的 recipe |
For example:
@@ -54,19 +54,19 @@ For example:
conan upload --remote=gitea ConanPackage/1.2@gitea/final
```
Gitea Conan 软件包注册表支持完整的[版本修订](https://docs.conan.io/en/latest/versioning/revisions.html)。
Gitea Conan 軟體包註冊表支持完整的[版本修订](https://docs.conan.io/en/latest/versioning/revisions.html)。
## 安装软件
## 安裝軟體
要从软件包注册表中安Conan软件包,请执行以下命令:
要从軟體包註冊表中安Conan軟體包,請執行以下命令:
```shell
conan install --remote={remote} {recipe}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------- | --------------- |
| `remote` | 远程名 |
| `remote` | 远程名 |
| `recipe` | 要下载的 recipe |
例如:
@@ -4,17 +4,17 @@ slug: "conda"
sidebar_position: 25
---
# Conda 软件包注册
# Conda 軟體包註冊
您的用户或组织发布 [Conda](https://docs.conda.io/en/latest/) 软件包。
您的使用者或組織發佈 [Conda](https://docs.conda.io/en/latest/) 軟體包。
## 要求
要使用 Conda 软件包注册表,您需要使用 [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html) 命令行工具。
要使用 Conda 軟體包註冊表,您需要使用 [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html) 命令行工具。
## 配置软件包注册
## 配置軟體包註冊
注册软件包注册表并提供凭据,请编辑您的 `.condarc` 文件:
註冊軟體包註冊表並提供憑證,請编辑您的 `.condarc` 文件:
```yaml
channel_alias: https://gitea.example.com/api/packages/{owner}/conda
@@ -26,15 +26,15 @@ default_channels:
| 占位符 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
关各个设置的解释,请参阅[官方文](https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html)。
關各個設定的解釋,請参阅[官方文](https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html)。
如果需要提供凭据,可以将它们作通道 URL 的一部分嵌入(`https://user:[email protected]/...`)。
如果需要提供憑證,可以将它们作通道 URL 的一部分嵌入(`https://user:[email protected]/...`)。
## 发布软件
## 發佈軟體
发布一个软件包,请执行一个HTTP `PUT`操作,求正文中包含软件包内容。
發佈一个軟體包,請執行一个HTTP `PUT`操作,求正文中包含軟體包内容。
```
PUT https://gitea.example.com/api/packages/{owner}/conda/{channel}/{filename}
@@ -42,11 +42,11 @@ PUT https://gitea.example.com/api/packages/{owner}/conda/{channel}/{filename}
| 占位符 | 描述 |
| ---------- | --------------------------------------------------------------------------------------------------- |
| `owner` | 软件包的所有者 |
| `channel` | 软件包的[通道](https://conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)(可 |
| `owner` | 軟體包的所有者 |
| `channel` | 軟體包的[通道](https://conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)(可 |
| `filename` | 文件名 |
使用HTTP基本身份验证的示例请求:
使用HTTP基本身份驗證的範例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -54,11 +54,11 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/conda/package-1.0.conda
```
如果已经存在同名和版本的软件包,则无法发布软件包。您必先删除有的软件包。
如果已经存在同名和版本的軟體包,則無法發佈軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表中安装软件包,请执行以下命令之一:
要从軟體包註冊表中安裝軟體包,請執行以下命令之一:
```shell
conda install {package_name}
@@ -66,8 +66,8 @@ conda install {package_name}={package_version}
conda install -c {channel} {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------------- |
| `package_name` | 软件包的名 |
| `package_version` | 软件包的版本 |
| `channel` | 软件包的通道(可 |
| `package_name` | 軟體包的名 |
| `package_version` | 軟體包的版本 |
| `channel` | 軟體包的通道(可 |
@@ -4,33 +4,33 @@ slug: "container"
sidebar_position: 30
---
# 容器注册
# 容器註冊
您的用户或组织发布符合 [Open Container Initiative(OCI)](https://opencontainers.org/) 规范的镜像。
容器注册表遵循 OCI 规范,并支持所有兼容的镜像型,如 [Docker](https://www.docker.com/) 和 [Helm Charts](https://helm.sh/)。
您的使用者或組織發佈符合 [Open Container Initiative(OCI)](https://opencontainers.org/) 規範的镜像。
容器註冊表遵循 OCI 規範,並支持所有兼容的镜像型,如 [Docker](https://www.docker.com/) 和 [Helm Charts](https://helm.sh/)。
## 目
## 目
要使用容器注册表,您可以使用适用于特定镜像型的工具。
要使用容器註冊表,您可以使用适用于特定镜像型的工具。
以下示例使用 `docker` 客户端。
## 登容器注册
## 登容器註冊
要推送镜像或者如果镜像位于私有注册表中,您需要行身份验证
要推送镜像或者如果镜像位於註冊表中,您需要行身份驗證
```shell
docker login gitea.example.com
```
如果您使用的是 2FA 或 OAuth,使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密码进行身份验证
如果您使用的是 2FA 或 OAuth,使用[個人訪問令牌](development/api-usage.md#通-api-認證)替代密碼進行身份驗證
## 像命名
## 像命名
镜像必遵循以下命名约定:
镜像必遵循以下命名约定:
`{registry}/{owner}/{image}`
例如,以下是所有者 `testuser` 的有效镜像名称示例:
例如,以下是所有者 `testuser` 的有效鏡像的名稱示例:
`gitea.example.com/testuser/myimage`
@@ -38,21 +38,21 @@ docker login gitea.example.com
`gitea.example.com/testuser/my/image`
**注意:** 该注册表仅支持大小不敏感的标签名称。因此,`image:tag``image:Tag` 将被视为相同的像和标签
**注意:** 該登錄檔僅支援大小不敏感的標籤名稱。因此,`image:tag``image:Tag` 將被視為相同的像和標籤
## 推送镜像
过执行以下命令来推送镜像:
過執行以下命令来推送镜像:
```shell
docker push gitea.example.com/{owner}/{image}:{tag}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | ------------ |
| `owner` | 镜像的所有者 |
| `image` | 镜像的名 |
| `tag` | 镜像的标签 |
| `image` | 镜像的名 |
| `tag` | 镜像的標籤 |
例如:
@@ -62,7 +62,7 @@ docker push gitea.example.com/testuser/myimage:latest
## 拉取镜像
过执行以下命令来拉取镜像:
過執行以下命令来拉取镜像:
```shell
docker pull gitea.example.com/{owner}/{image}:{tag}
@@ -71,8 +71,8 @@ docker pull gitea.example.com/{owner}/{image}:{tag}
| Parameter | Description |
| --------- | ------------ |
| `owner` | 镜像的所有者 |
| `image` | 镜像的名 |
| `tag` | 镜像的标签 |
| `image` | 镜像的名 |
| `tag` | 镜像的標籤 |
例如:
@@ -4,53 +4,53 @@ slug: "cran"
sidebar_position: 35
---
# CRAN 软件包注册
# CRAN 軟體包註冊
将 [R](https://www.r-project.org/) 软件包发布到您的用户或组织的类似 [CRAN](https://cran.r-project.org/) 的注册表。
将 [R](https://www.r-project.org/) 軟體包發佈到您的使用者或組織的类似 [CRAN](https://cran.r-project.org/) 的註冊表。
## 要求
要使用CRAN软件包注册表,您需要安 [R](https://cran.r-project.org/)。
要使用CRAN軟體包註冊表,您需要安 [R](https://cran.r-project.org/)。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要将其添加到 `Rprofile.site` 文件中,可以是系统级别、用户级别 `~/.Rprofile` 或项目级别:
要注册軟體包註冊表,您需要将其添加到 `Rprofile.site` 文件中,可以是系统级别、使用者级别 `~/.Rprofile` 或项目级别:
```
options("repos" = c(getOption("repos"), c(gitea="https://gitea.example.com/api/packages/{owner}/cran")))
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
如果需要提供凭据,可以将它们嵌入到URL(`https://user:[email protected]/...`)中。
## 发布软件
## 發佈軟體
发布 R 软件包,请执行带有软件包内容的 HTTP `PUT` 操作。
發佈 R 軟體包,請執行带有軟體包内容的 HTTP `PUT` 操作。
源代码软件包:
源代码軟體包:
```
PUT https://gitea.example.com/api/packages/{owner}/cran/src
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
进制软件包:
進制軟體包:
```
PUT https://gitea.example.com/api/packages/{owner}/cran/bin?platform={platform}&rversion={rversion}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ---------- | -------------- |
| `owner` | 软件包的所有者 |
| `platform` | 平台的名 |
| `rversion` | 二制的R版本 |
| `owner` | 軟體包的所有者 |
| `platform` | 平台的名 |
| `rversion` | 二制的R版本 |
例如:
@@ -60,17 +60,17 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/cran/bin?platform=windows&rversion=4.2
```
如果同名和版本的软件包已存在,则无法发布软件包。您必首先删除有的软件包。
如果同名和版本的軟體包已存在,则無法發佈軟體包。您必首先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表中安装R软件包,请执行以下命令:
要从軟體包註冊表中安裝R軟體包,請執行以下命令:
```shell
install.packages("{package_name}")
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ----------------- |
| `package_name` | The package name. |
@@ -3,19 +3,19 @@ date: "2023-01-07T00:00:00+00:00"
slug: "debian"
---
# Debian 软件包注册
# Debian 軟體包註冊
您的用户或组织发布 [Debian](https://www.debian.org/distrib/packages) 软件包。
您的使用者或組織發佈 [Debian](https://www.debian.org/distrib/packages) 軟體包。
## 要求
要使用 Debian 注册表,您需要使用类似于 `curl` 的 HTTP 客户端行上传,使用类似于 `apt`软件包管理器消费软件包。
要使用 Debian 註冊表,您需要使用类似于 `curl` 的 HTTP 客户端行上传,使用类似于 `apt`軟體包管理器消费軟體包。
以下示例使用 `apt`
## 配置软件包注册
## 配置軟體包註冊
要注册 Debian 注册表,将 URL 添加到已知 `apt` 源列表中:
要注册 Debian 註冊表,将 URL 添加到已知 `apt` 源列表中:
```shell
echo "deb [signed-by=/etc/apt/keyrings/gitea-{owner}.asc] https://gitea.example.com/api/packages/{owner}/debian {distribution} {component}" | sudo tee -a /etc/apt/sources.list.d/gitea.list
@@ -23,43 +23,43 @@ echo "deb [signed-by=/etc/apt/keyrings/gitea-{owner}.asc] https://gitea.example.
| 占位符 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
| `distribution` | 要使用的发行版 |
| `component` | 要使用的组件 |
如果注册表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-认证)
如果註冊表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-認證)
```shell
echo "deb [signed-by=/etc/apt/keyrings/gitea-{owner}.asc] https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/debian {distribution} {component}" | sudo tee -a /etc/apt/sources.list.d/gitea.list
```
Debian 注册表文件使用 PGP 密钥行签名,`apt`知道密钥:
Debian 註冊表文件使用 PGP 密钥行签名,`apt`知道密钥:
```shell
sudo curl https://gitea.example.com/api/packages/{owner}/debian/repository.key -o /etc/apt/keyrings/gitea-{owner}.asc
```
然后更新本地软件包索引:
然后更新本地軟體包索引:
```shell
apt update
```
## 发布软件
## 發佈軟體
发布一个 Debian 软件包(`*.deb`),行 HTTP `PUT` 操作,并将软件包内容放入求主中。
發佈一个 Debian 軟體包(`*.deb`),行 HTTP `PUT` 操作,並将軟體包内容放入求主中。
```
PUT https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{component}/upload
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ----------------------------------------------------- |
| `owner` | 软件包的所有者 |
| `distribution` | 发行版,可能与操作系统的发行版名匹配,例如 `bionic` |
| `component` | 组件,可用于分组软件包,或仅为 `main` 或类似的组件。 |
| `owner` | 軟體包的所有者 |
| `distribution` | 发行版,可能与操作系统的发行版名匹配,例如 `bionic` |
| `component` | 组件,可用于分组軟體包,或僅為 `main` 或类似的组件。 |
使用 HTTP 基本身份验证的示例求:
使用 HTTP 基本身份驗證的示例求:
```shell
curl --user your_username:your_password_or_token \
@@ -67,51 +67,51 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/debian/pool/bionic/main/upload
```
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密
法向软件包中多次发布具有相同名的文件。您必首先删除有的软件包版本。
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密
法向軟體包中多次發佈具有相同名的文件。您必首先删除有的軟體包版本。
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
| HTTP 状态码 | 意义 |
| ----------------- | ---------------------------------------- |
| `201 Created` | 软件包已发布 |
| `400 Bad Request` | 软件包名、版本、发行版、组件或架构效 |
| `409 Conflict` | 具有相同参数组合的软件包文件已经存在 |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名、版本、发行版、组件或架构效 |
| `409 Conflict` | 具有相同參數组合的軟體包文件已经存在 |
## 删除软件
## 删除軟體
要删除 Debian 软件包,请执行 HTTP `DELETE` 操作。如果没有文件留下,这将同时删除软件包版本。
要删除 Debian 軟體包,請執行 HTTP `DELETE` 操作。如果没有文件留下,这将同时删除軟體包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{component}/{package_name}/{package_version}/{architecture}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `distribution` | 软件包发行版 |
| `component` | 软件包组件 |
| `architecture` | 软件包架构 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
| `distribution` | 軟體包发行版 |
| `component` | 軟體包组件 |
| `architecture` | 軟體包架构 |
使用 HTTP 基本身份验证的示例求:
使用 HTTP 基本身份驗證的示例求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/debian/pools/bionic/main/test-package/1.0.0/amd64
```
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到软件包或文件 |
| `404 Not Found` | 找不到軟體包或文件 |
## 安装软件
## 安裝軟體
要从 Debian 注册表安装软件包,请执行以下命令:
要从 Debian 註冊表安裝軟體包,請執行以下命令:
```shell
# use latest version
@@ -4,31 +4,31 @@ slug: "generic"
sidebar_position: 500
---
# 通用软件包注册
# 通用軟體包註冊
发布通用文件,如发布二进制文件或其他输出,供您的用户或组织使用。
發佈通用文件,如發佈二進制文件或其他输出,供您的使用者或組織使用。
## 身份验证软件包注册
## 身份驗證軟體包註冊
要身份验证软件包注册表,您需要提供[自定义 HTTP 头或使用 HTTP 基本身份验证](development/api-usage.md#通-api-认证)。
要身份驗證軟體包註冊表,您需要提供[自定义 HTTP 头或使用 HTTP 基本身份驗證](development/api-usage.md#通-api-認證)。
## 发布软件
## 發佈軟體
发布通用软件包,请执行 HTTP `PUT` 操作,并将软件包内容放入求主中。
法向软件包中多次发布具有相同名的文件。您必首先删除有的软件包版本。
發佈通用軟體包,請執行 HTTP `PUT` 操作,並将軟體包内容放入求主中。
法向軟體包中多次發佈具有相同名的文件。您必首先删除有的軟體包版本。
```
PUT https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 软件包的所有者。 |
| `package_name` | 软件包名。它只能包含小写字母 (`a-z`)、大写字母 (`A-Z`)、数字 (`0-9`)、点号 (`.`)、连字符 (`-`)、加号 (`+`) 或下划线 (`_`) |
| `package_version` | 软件包版本,一个非空字符串,不包含前导或尾随空格 |
| `owner` | 軟體包的所有者。 |
| `package_name` | 軟體包名。它只能包含小写字母 (`a-z`)、大写字母 (`A-Z`)、数字 (`0-9`)、点号 (`.`)、连字符 (`-`)、加号 (`+`) 或下划线 (`_`) |
| `package_version` | 軟體包版本,一个非空字符串,不包含前导或尾随空格 |
| `file_name` | 文件名。它只能包含小写字母 (`a-z`)、大写字母 (`A-Z`)、数字 (`0-9`)、点号 (`.`)、连字符 (`-`)、加号 (`+`) 或下划线 (`_`) |
使用 HTTP 基本身份验证的示例求:
使用 HTTP 基本身份驗證的示例求:
```shell
curl --user your_username:your_password_or_token \
@@ -36,62 +36,62 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
| HTTP 状态码 | 意义 |
| ----------------- | ---------------------------------- |
| `201 Created` | 软件包已发布 |
| `400 Bad Request` | 软件包名和/或版本和/或文件名效 |
| `409 Conflict` | 具有相同名的文件已存在于软件包中 |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名和/或版本和/或文件名效 |
| `409 Conflict` | 具有相同名的文件已存在于軟體包中 |
## 下载软件
## 下载軟體
要下载通用软件包,请执行 HTTP `GET` 操作。
要下载通用軟體包,請執行 HTTP `GET` 操作。
```
GET https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
| `file_name` | 文件名 |
文件内容将在响应主体中返回。响应的内容类型为 `application/octet-stream`
文件内容将在響應主體中返回。響應的内容類型為 `application/octet-stream`
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
```shell
curl --user your_username:your_token_or_password \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
服务器会以以下 HTTP 状态码进行响应
服务器会以以下 HTTP 状态码進行響應
| HTTP 状态码 | 含义 |
| --------------- | -------------------- |
| `200 OK` | 成功 |
| `404 Not Found` | 找不到软件包或者文件 |
| `404 Not Found` | 找不到軟體包或者文件 |
## 删除软件
## 删除軟體
要删除通用软件包,请执行 HTTP DELETE 操作。这将同时删除版本的所有文件。
要删除通用軟體包,請執行 HTTP DELETE 操作。这将同时删除版本的所有文件。
```
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
```shell
curl --user your_username:your_token_or_password -X DELETE \
@@ -103,33 +103,33 @@ The server responds with the following HTTP Status codes.
| HTTP 状态码 | 意义 |
| ---------------- | ------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到软件包 |
| `404 Not Found` | 找不到軟體包 |
## 删除软件包文件
## 删除軟體包文件
要删除通用软件包的文件,请执行 HTTP `DELETE` 操作。如果没有文件留下,这将同时删除软件包版本。
要删除通用軟體包的文件,請執行 HTTP `DELETE` 操作。如果没有文件留下,这将同时删除軟體包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{filename}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
| `filename` | 文件名 |
使用 HTTP 基本身份验证的示例求:
使用 HTTP 基本身份驗證的示例求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到软件包或文件 |
| `404 Not Found` | 找不到軟體包或文件 |
@@ -4,25 +4,25 @@ slug: "go"
sidebar_position: 45
---
# Go 软件包注册
# Go 軟體包註冊
您的用户或组织发布 Go 软件包。
您的使用者或組織發佈 Go 軟體包。
## 发布软件
## 發佈軟體
发布 Go 软件包,请执行 HTTP `PUT` 操作,并将软件包内容放入求主中。
如果已经存在相同名和版本的软件包,您无法发布软件包。您必首先删除有的软件包。
该软件包必遵循[中的结构](https://go.dev/ref/mod#zip-files)。
發佈 Go 軟體包,請執行 HTTP `PUT` 操作,並将軟體包内容放入求主中。
如果已经存在相同名和版本的軟體包,您無法發佈軟體包。您必首先删除有的軟體包。
該軟體包必遵循[中的结构](https://go.dev/ref/mod#zip-files)。
```
PUT https://gitea.example.com/api/packages/{owner}/go/upload
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
要身份验证到软件包注册表,您需要提供[自定义 HTTP 头或使用 HTTP 基本身份验证](development/api-usage.md#通-api-认证)
要身份驗證到軟體包註冊表,您需要提供[自定义 HTTP 头或使用 HTTP 基本身份驗證](development/api-usage.md#通-api-認證)
```shell
curl --user your_username:your_password_or_token \
@@ -30,19 +30,19 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/go/upload
```
如果您使用的是 2FA 或 OAuth,使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密码进行身份验证
如果您使用的是 2FA 或 OAuth,使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密碼進行身份驗證
服务器将使用以下 HTTP 状态代码进行响应
服务器将使用以下 HTTP 状态代码進行響應
| HTTP 状态码 | 含义 |
| ----------------- | -------------------------- |
| `201 Created` | 软件包已发布 |
| `400 Bad Request` | 软件包无效 |
| `409 Conflict` | 具有相同名称的软件包已存在 |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包無效 |
| `409 Conflict` | 具有相同名稱的軟體包已存在 |
## 安装软件
## 安裝軟體
要安Go软件包,指示Go使用软件包注册表作代理:
要安Go軟體包,指示Go使用軟體包註冊表作代理:
```shell
# 使用最新版本
@@ -53,12 +53,12 @@ GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_na
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}@{package_version}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
如果软件包的所有者是私有的,则需要[提供凭据](https://go.dev/ref/mod#private-module-proxy-auth)。
如果軟體包的所有者是私有的,则需要[提供凭据](https://go.dev/ref/mod#private-module-proxy-auth)。
有关 `GOPROXY` 环境变量的更多信息以及如何防止数据泄漏的信息,[参阅文](https://go.dev/ref/mod#private-modules)。
有关 `GOPROXY` 环境变量的更多信息以及如何防止数据泄漏的信息,[参阅文](https://go.dev/ref/mod#private-modules)。
@@ -4,17 +4,17 @@ slug: "helm"
sidebar_position: 50
---
# Helm Chart 注册
# Helm Chart 註冊
您的用户或组织发布 [Helm](https://helm.sh/) charts。
您的使用者或組織發佈 [Helm](https://helm.sh/) charts。
## 要求
要使用 Helm Chart 注册表,可以使用诸如 `curl` 或 [`helm cm-push`](https://github.com/chartmuseum/helm-push/) 插件之类的简HTTP客户端。
要使用 Helm Chart 註冊表,可以使用诸如 `curl` 或 [`helm cm-push`](https://github.com/chartmuseum/helm-push/) 插件之类的简HTTP客户端。
## 发布软件
## 發佈軟體
运行以下命令来发布软件包:
运行以下命令来發佈軟體包:
```shell
curl --user {username}:{password} -X POST --upload-file ./{chart_file}.tgz https://gitea.example.com/api/packages/{owner}/helm/api/charts
@@ -27,17 +27,17 @@ helm repo add --username {username} --password {password} {repo} https://gitea.
helm cm-push ./{chart_file}.tgz {repo}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `username` | 您的Gitea用户名 |
| `password` | 您的Gitea密。如果您使用的是2FA或OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密码进行身份验证。 |
| `repo` | 仓库名称 |
| `chart_file` | Helm Chart 归文件 |
| `owner` | 软件包的所有者 |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密。如果您使用的是2FA或OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密碼進行身份驗證。 |
| `repo` | 存放庫名稱 |
| `chart_file` | Helm Chart 归文件 |
| `owner` | 軟體包的所有者 |
## 安装软件
## 安裝軟體
要从注册表中安Helm Chart请执行以下命令:
要从註冊表中安Helm Chart請執行以下命令:
```shell
helm repo add --username {username} --password {password} {repo} https://gitea.example.com/api/packages/{owner}/helm
@@ -45,11 +45,11 @@ helm repo update
helm install {name} {repo}/{chart}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ---------- | --------------------------- |
| `username` | 您的Gitea用户名 |
| `password` | 您的Gitea密或个人访问令牌 |
| `repo` | 存库的名 |
| `owner` | 软件包的所有者 |
| `name` | 本地名 |
| `chart` | Helm Chart的名 |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密或个人访问令牌 |
| `repo` | 存库的名 |
| `owner` | 軟體包的所有者 |
| `name` | 本地名 |
| `chart` | Helm Chart的名 |
@@ -4,18 +4,18 @@ slug: "maven"
sidebar_position: 60
---
# Maven 软件包注册
# Maven 軟體包註冊
您的用户或组织发布 [Maven](https://maven.apache.org) 软件包。
您的使用者或組織發佈 [Maven](https://maven.apache.org) 軟體包。
## 要求
要使用 Maven 软件包注册表,您可以使用 [Maven](https://maven.apache.org/install.html) 或 [Gradle](https://gradle.org/install/)。
要使用 Maven 軟體包註冊表,您可以使用 [Maven](https://maven.apache.org/install.html) 或 [Gradle](https://gradle.org/install/)。
以下示例使用 `Maven``Gradle Groovy`
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,首先需要将访问令牌添加到 [`settings.xml`](https://maven.apache.org/settings.html) 文件中:
要注册軟體包註冊表,首先需要将访问令牌添加到 [`settings.xml`](https://maven.apache.org/settings.html) 文件中:
```xml
<settings>
@@ -56,14 +56,14 @@ sidebar_position: 60
</distributionManagement>
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ------------------------------------------------------------------------------------- |
| `access_token` | 您的[个人访问令牌](development/api-usage.md#通-api-认证) |
| `owner` | 软件包的所有者 |
| `access_token` | 您的[个人访问令牌](development/api-usage.md#通-api-認證) |
| `owner` | 軟體包的所有者 |
### Gradle variant
如果您计划在项目中添加来自 Gitea 实例的一些软件包,将其添加到 repositories 部分中:
如果您计划在项目中添加来自 Gitea 实例的一些軟體包,将其添加到 repositories 部分中:
```groovy
repositories {
@@ -72,11 +72,11 @@ repositories {
}
```
在 Groovy gradle 中,您可以在发布部分中包含以下脚本:
在 Groovy gradle 中,您可以在發佈部分中包含以下脚本:
```groovy
publishing {
// 其他发布设置
// 其他發佈设置
repositories {
maven {
name = "Gitea"
@@ -95,35 +95,35 @@ publishing {
}
```
## 发布软件
## 發佈軟體
发布软件包,只需运行以下命令:
發佈軟體包,只需运行以下命令:
```shell
mvn deploy
```
或者,如果您使用的是 Gradle使用 `gradle` 命令和 `publishAllPublicationsToGiteaRepository` 任务:
或者,如果您使用的是 Gradle使用 `gradle` 命令和 `publishAllPublicationsToGiteaRepository` 任务:
```groovy
./gradlew publishAllPublicationsToGiteaRepository
```
如果您想要将预构建的软件包发布到注册表中,可以使用 [`mvn deploy:deploy-file`](https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html) 命令:
如果您想要将预构建的軟體包發佈到註冊表中,可以使用 [`mvn deploy:deploy-file`](https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html) 命令:
```shell
mvn deploy:deploy-file -Durl=https://gitea.example.com/api/packages/{owner}/maven -DrepositoryId=gitea -Dfile=/path/to/package.jar
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
如果存在相同名和版本的软件包,您无法发布该软件包。您必先删除有的软件包。
如果存在相同名和版本的軟體包,您無法發佈該軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表中安 Maven 软件包,在项目的 `pom.xml` 文件中添加新的依赖项:
要从軟體包註冊表中安 Maven 軟體包,在项目的 `pom.xml` 文件中添加新的依赖项:
```xml
<dependency>
@@ -6,30 +6,30 @@ sidebar_position: 70
# NPM Package Registry
您的用户或组织发布 [npm](https://www.npmjs.com/) 包。
您的使用者或組織發佈 [npm](https://www.npmjs.com/) 包。
## 要求
要使用 npm 包注册表,您需要安 [Node.js](https://nodejs.org/en/download/) 以及与之配套的软件包管理器,例如 [Yarn](https://classic.yarnpkg.com/en/docs/install) 或 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) 本身。
要使用 npm 包註冊表,您需要安 [Node.js](https://nodejs.org/en/download/) 以及与之配套的軟體包管理器,例如 [Yarn](https://classic.yarnpkg.com/en/docs/install) 或 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) 本身。
该注册表支持[作用域](https://docs.npmjs.com/misc/scope/)和非作用域软件包。
該註冊表支持[作用域](https://docs.npmjs.com/misc/scope/)和非作用域軟體包。
以下示例使用具有作用域 `@test``npm` 工具。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要配置一个新的软件包源。
要注册軟體包註冊表,您需要配置一个新的軟體包源。
```shell
npm config set {scope}:registry=https://gitea.example.com/api/packages/{owner}/npm/
npm config set -- '//gitea.example.com/api/packages/{owner}/npm/:_authToken' "{token}"
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | --------------------------------------------------------------------------------------- |
| `scope` | 软件包的作用域 |
| `owner` | 软件包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-认证)。 |
| `scope` | 軟體包的作用域 |
| `owner` | 軟體包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-認證)。 |
例如:
@@ -45,28 +45,28 @@ npm config set registry https://gitea.example.com/api/packages/testuser/npm/
npm config set -- '//gitea.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"
```
## 发布软件
## 發佈軟體
在项目中运行以下命令发布软件包:
在项目中运行以下命令發佈軟體包:
```shell
npm publish
```
如果已经存在相同名和版本的软件包,您无法发布该软件包。您必先删除有的软件包。
如果已经存在相同名和版本的軟體包,您無法發佈該軟體包。您必先删除有的軟體包。
## 删除软件
## 删除軟體
运行以下命令删除软件包:
运行以下命令删除軟體包:
```shell
npm unpublish {package_name}[@{package_version}]
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
例如
@@ -75,17 +75,17 @@ npm unpublish @test/test_package
npm unpublish @test/[email protected]
```
## 安装软件
## 安裝軟體
要从软件包注册表中安装软件包,请执行以下命令:
要从軟體包註冊表中安裝軟體包,請執行以下命令:
```shell
npm install {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 软件包名 |
| `package_name` | 軟體包名 |
例如:
@@ -93,19 +93,19 @@ npm install {package_name}
npm install @test/test_package
```
## 给软件包打标签
## 给軟體包打標籤
该注册表支持[版本标签](https://docs.npmjs.com/adding-dist-tags-to-packages/),可以通 `npm dist-tag` 管理:
該註冊表支持[版本標籤](https://docs.npmjs.com/adding-dist-tags-to-packages/),可以通 `npm dist-tag` 管理:
```shell
npm dist-tag add {package_name}@{version} {tag}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 软件包名 |
| `version` | 软件包版本 |
| `tag` | 软件包标签 |
| `package_name` | 軟體包名 |
| `version` | 軟體包版本 |
| `tag` | 軟體包標籤 |
例如:
@@ -113,11 +113,11 @@ npm dist-tag add {package_name}@{version} {tag}
npm dist-tag add [email protected] release
```
标签名称不能是有效的版本。所有可解析版本的标签名称都将被拒绝。
標籤名稱不能是有效的版本。所有可解析版本的標籤名稱都将被拒绝。
## 搜索软件
## 搜索軟體
该注册表支持[搜索](https://docs.npmjs.com/cli/v7/commands/npm-search/),但不支持像 `author:gitea` 这样的特殊搜索限定符。
該註冊表支持[搜索](https://docs.npmjs.com/cli/v7/commands/npm-search/),但不支持像 `author:gitea` 这样的特殊搜索限定符。
## 支持的命令
@@ -4,29 +4,29 @@ slug: "nuget"
sidebar_position: 80
---
# NuGet 软件包注册
# NuGet 軟體包註冊
发布适用于您的用户或组织的 [NuGet](https://www.nuget.org/) 软件包。软件包注册表支持 V2 和 V3 API 协议,且您可以使用 [NuGet 符号软件](https://docs.microsoft.com/zh-tw/nuget/create-packages/symbol-packages-snupkg)。
發佈适用于您的使用者或組織的 [NuGet](https://www.nuget.org/) 軟體包。軟體包註冊表支持 V2 和 V3 API 协议,且您可以使用 [NuGet 符号軟體](https://docs.microsoft.com/zh-tw/nuget/create-packages/symbol-packages-snupkg)。
## 要求
要使用 NuGet 软件包注册表,您可以使用命令行界面工具,以及各种集成开发环境(IDE)中的 NuGet 功能,如 Visual Studio。有关 NuGet 客户端的更多信息,参[阅官方文](https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools)。
要使用 NuGet 軟體包註冊表,您可以使用命令行界面工具,以及各种集成开发环境(IDE)中的 NuGet 功能,如 Visual Studio。有关 NuGet 客户端的更多信息,参[阅官方文](https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools)。
以下示例使用 `dotnet nuget` 工具。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要配置一个新的 NuGet 源:
要注册軟體包註冊表,您需要配置一个新的 NuGet 源:
```shell
dotnet nuget add source --name {source_name} --username {username} --password {password} https://gitea.example.com/api/packages/{owner}/nuget/index.json
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| `source_name` | 所需源名 |
| `username` | 您的 Gitea 用户名 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)代替密。 |
| `owner` | 软件包的所有者 |
| `source_name` | 所需源名 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)代替密。 |
| `owner` | 軟體包的所有者 |
例如:
@@ -34,20 +34,20 @@ dotnet nuget add source --name {source_name} --username {username} --password {p
dotnet nuget add source --name gitea --username testuser --password password123 https://gitea.example.com/api/packages/testuser/nuget/index.json
```
您可以在不提供凭据的情况下添加源,并在发布软件包时使用--api-key 参数。在这种情况下,您需要提供[个人访问令牌](development/api-usage.md#通-api-认证)。
您可以在不提供凭据的情况下添加源,並在發佈軟體包时使用--api-key 參數。在这种情况下,您需要提供[个人访问令牌](development/api-usage.md#通-api-認證)。
## 发布软件
## 發佈軟體
运行以下命令发布软件包:
运行以下命令發佈軟體包:
```shell
dotnet nuget push --source {source_name} {package_file}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ---------------------------- |
| `source_name` | 所需源名 |
| `package_file` | 软件`.nupkg` 文件的路径。 |
| `source_name` | 所需源名 |
| `package_file` | 軟體`.nupkg` 文件的路径。 |
例如:
@@ -55,20 +55,20 @@ dotnet nuget push --source {source_name} {package_file}
dotnet nuget push --source gitea test_package.1.0.0.nupkg
```
如果已经存在相同名和版本的软件包,您无法发布该软件包。您必先删除有的软件包。
如果已经存在相同名和版本的軟體包,您無法發佈該軟體包。您必先删除有的軟體包。
### 符号软件
### 符号軟體
NuGet 软件包注册表支持构建用于符号服务器的符号软件包。客户端可以求嵌入在符号软件包(`.snupkg`)中的 PDB 文件。
此,将 NuGet 软件包注册表注册符号源:
NuGet 軟體包註冊表支持构建用于符号服务器的符号軟體包。客户端可以求嵌入在符号軟體包(`.snupkg`)中的 PDB 文件。
此,将 NuGet 軟體包註冊表注册符号源:
```
https://gitea.example.com/api/packages/{owner}/nuget/symbols
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | -------------------- |
| `owner` | 软件包注册表的所有者 |
| `owner` | 軟體包註冊表的所有者 |
例如:
@@ -76,19 +76,19 @@ https://gitea.example.com/api/packages/{owner}/nuget/symbols
https://gitea.example.com/api/packages/testuser/nuget/symbols
```
## 安装软件
## 安裝軟體
要从软件包注册表安 NuGet 软件包,请执行以下命令:
要从軟體包註冊表安 NuGet 軟體包,請執行以下命令:
```shell
dotnet add package --source {source_name} --version {package_version} {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ------------ |
| `source_name` | 所需源名 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本。 |
| `source_name` | 所需源名 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本。 |
例如:
@@ -4,13 +4,13 @@ slug: "overview"
sidebar_position: 1
---
# 软件包注册
# 軟體包註冊
从Gitea **1.17**版本开始,软件包注册表可以用作常见软件包管理器的公共或私有注册表。
从Gitea **1.17**版本开始,軟體包註冊表可以用作常见軟體包管理器的公共或私有註冊表。
## 支持的软件包管理器
## 支持的軟體包管理器
目前支持以下软件包管理器:
目前支持以下軟體包管理器:
| Name | Language | Package client |
| ------------------------------------------------------------------- | ---------- | ------------------------- |
@@ -36,61 +36,61 @@ sidebar_position: 1
| [Swift](usage/packages/rubygems.md) | Swift | `swift` |
| [Vagrant](usage/packages/vagrant.md) | - | `vagrant` |
**以下段落适用于未全局禁用软件包的情况!**
**以下段落适用于未全局禁用軟體包的情况!**
## 仓库 x 软件
## 存放庫 x 軟體
软件包始终属于所有者(用户或组织),而不是仓库
要将(已上传的)软件包链接到仓库,请打开该软件包的设置页面,并选择要将此软件包链接到的仓库
将链接到整个软件包,而不仅是单个版本。
軟體包始终属于所有者(使用者或組織),而不是存放庫
要将(已上传的)軟體包链接到存放庫,請打开該軟體包的设置页面,並選择要将此軟體包链接到的存放庫
将链接到整个軟體包,而不僅是單个版本。
链接软件包将导致在仓库的软件包列表中显示该软件包,并在软件包页面上显示到仓库的链接(以及到仓库工单的链接)。
链接軟體包将导致在存放庫的軟體包列表中显示該軟體包,並在軟體包页面上显示到存放庫的链接(以及到存放庫工單的链接)。
## 访问限制
| 软件包所有者型 | 用户 | 组织 |
| 軟體包所有者型 | 使用者 | 組織 |
| ---------------- | ---------------------------------------- | ------------------------------------------ |
| **读取** 访问 | 公开,如果用户也是公开的;否则限此用户 | 公开,如果组织是公开的,否则仅限组织成员 |
| **写入** 访问 | 仅软件包所有者 | 具有组织中的管理员或写入访问权限的组织成员 |
| **读取** 访问 | 公开,如果使用者也是公开的;否则限此使用者 | 公开,如果組織是公开的,否则僅限組織成员 |
| **写入** 访问 | 僅軟體包所有者 | 具有組織中的管理员或写入访问权限的組織成员 |
注意:这些访问限制可能会[变化](https://github.com/go-gitea/gitea/issues/19270),将通专门的组织团队权限添加更细粒度的控制。
注意:这些访问限制可能会[变化](https://github.com/go-gitea/gitea/issues/19270),将通专门的組織团队权限添加更细粒度的控制。
## 建或上传软件
## 建或上传軟體
根据软件包类型,使用相应的软件包管理器。查看特定软件包管理器的子页面以获取说明。
根据軟體包類型,使用相應的軟體包管理器。查看特定軟體包管理器的子页面以获取说明。
## 查看软件
## 查看軟體
您可以在仓库页面上查看仓库的软件包。
您可以在存放庫页面上查看存放庫的軟體包。
1. 转到仓库主页。
2. 在导航栏中择**软件包**
1. 转到存放庫主页。
2. 在导航栏中择**軟體包**
要查看有关软件包的更多详细信息,请选择软件包的名
要查看有关軟體包的更多详细信息,請選择軟體包的名
## 下载软件
## 下载軟體
要从仓库下载软件包:
要从存放庫下载軟體包:
1. 在导航栏中择**软件包**
2. 选择软件包的名以查看详细信息。
3.**Assets** 部分,择要下载的软件包文件的名
1. 在导航栏中择**軟體包**
2. 選择軟體包的名以查看详细信息。
3.**Assets** 部分,择要下载的軟體包文件的名
## 删除软件
## 删除軟體
在将软件包发布到软件包注册表后,您法编辑软件包。相反,您必删除重新建它。
在将軟體包發佈到軟體包註冊表后,您法编辑軟體包。相反,您必删除重新建它。
要从仓库中删除软件包:
要从存放庫中删除軟體包:
1. 在导航栏中择**软件包**
2. 选择软件包的名以查看详细信息。
3. 单击**删除软件包**以永久删除软件包。
1. 在导航栏中择**軟體包**
2. 選择軟體包的名以查看详细信息。
3. 單擊**删除軟體包**以永久删除軟體包。
## 禁用软件包注册
## 禁用軟體包註冊
注册表已自动启用。要在个存库中禁用它:
註冊表已自动启用。要在个存库中禁用它:
1. 在导航栏中择**设置**。
2. 禁用**启用仓库软件包注册表**.
1. 在导航栏中择**设置**。
2. 禁用**启用存放庫軟體包註冊表**.
禁用软件包注册表不会删除先前发布的软件包。
禁用軟體包註冊表不会删除先前發佈的軟體包。
@@ -4,19 +4,19 @@ slug: "pub"
sidebar_position: 90
---
# Pub 软件包注册
# Pub 軟體包註冊
您的用户或组织发布 [Pub](https://dart.dev/guides/packages) 软件包。
您的使用者或組織發佈 [Pub](https://dart.dev/guides/packages) 軟體包。
## 要求
要使用Pub软件包注册表,您需要使用 [dart](https://dart.dev/tools/dart-tool) 和/或 [flutter](https://docs.flutter.dev/reference/flutter-cli). 工具。
要使用Pub軟體包註冊表,您需要使用 [dart](https://dart.dev/tools/dart-tool) 和/或 [flutter](https://docs.flutter.dev/reference/flutter-cli). 工具。
以下示例使用 `dart`
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表并提供凭据,请执行以下操作:
要注册軟體包註冊表並提供凭据,請執行以下操作:
```shell
dart pub token add https://gitea.example.com/api/packages/{owner}/pub
@@ -24,13 +24,13 @@ dart pub token add https://gitea.example.com/api/packages/{owner}/pub
| 占位符 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
您需要提供您的[个人访问令牌](development/api-usage.md#通-api-认证)。
您需要提供您的[个人访问令牌](development/api-usage.md#通-api-認證)。
## 发布软件
## 發佈軟體
发布软件包,编辑 `pubspec.yaml` 文件,添加以下行:
發佈軟體包,编辑 `pubspec.yaml` 文件,添加以下行:
```yaml
publish_to: https://gitea.example.com/api/packages/{owner}/pub
@@ -38,28 +38,28 @@ publish_to: https://gitea.example.com/api/packages/{owner}/pub
| 占位符 | 描述 |
| ------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
在,您可以通运行以下命令来发布软件包:
在,您可以通运行以下命令来發佈軟體包:
```shell
dart pub publish
```
如果已存在具有相同名和版本的软件包,则无法发布软件包。您必先删除有的软件包。
如果已存在具有相同名和版本的軟體包,则無法發佈軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安Pub软件包,请执行以下命令:
要从軟體包註冊表安Pub軟體包,請執行以下命令:
```shell
dart pub add {package_name} --hosted-url=https://gitea.example.com/api/packages/{owner}/pub/
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
例如:
@@ -4,17 +4,17 @@ slug: "pypi"
sidebar_position: 100
---
# PyPI 软件包注册
# PyPI 軟體包註冊
您的用户或组织发布 [PyPI](https://pypi.org/) 软件包。
您的使用者或組織發佈 [PyPI](https://pypi.org/) 軟體包。
## 要求
要使用 PyPI 软件包注册表,您需要使用 [pip](https://pypi.org/project/pip/) 工具来消费和使用 [twine](https://pypi.org/project/twine/) 工具来发布软件包。
要使用 PyPI 軟體包註冊表,您需要使用 [pip](https://pypi.org/project/pip/) 工具来消费和使用 [twine](https://pypi.org/project/twine/) 工具来發佈軟體包。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,您需要编辑本地的 `~/.pypirc` 文件。添加以下内容:
要注册軟體包註冊表,您需要编辑本地的 `~/.pypirc` 文件。添加以下内容:
```ini
[distutils]
@@ -28,36 +28,36 @@ password = {password}
| 占位符 | 描述 |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 软件包的所有者 |
| `username` | 您的 Gitea 用户名 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密 |
| `owner` | 軟體包的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密。如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密 |
## 发布软件
## 發佈軟體
运行以下命令来发布软件包:
运行以下命令来發佈軟體包:
```shell
python3 -m twine upload --repository gitea /path/to/files/*
```
软件包文件的扩展名 `.tar.gz``.whl`
軟體包文件的扩展名 `.tar.gz``.whl`
如果已存在具有相同名和版本的软件包,则无法发布软件包。您必先删除有的软件包。
如果已存在具有相同名和版本的軟體包,则無法發佈軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安 PyPI 软件包,请执行以下命令:
要从軟體包註冊表安 PyPI 軟體包,請執行以下命令:
```shell
pip install --index-url https://{username}:{password}@gitea.example.com/api/packages/{owner}/pypi/simple --no-deps {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ----------------------------- |
| `username` | 您的 Gitea 用户名 |
| `password` | 您的 Gitea 密或个人访问令牌 |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密或个人访问令牌 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
例如:
@@ -65,7 +65,7 @@ pip install --index-url https://{username}:{password}@gitea.example.com/api/pack
pip install --index-url https://testuser:[email protected]/api/packages/testuser/pypi/simple --no-deps test_package
```
您可以使用 `--extra-index-url` 替代 `--index-url`,但这样会使您容易受到依赖混淆攻,因 `pip` 会先检查官方 PyPi 仓库中的软件包,然后再检查指定的自定义仓库。请阅读 `pip`以获取更多信息。
您可以使用 `--extra-index-url` 替代 `--index-url`,但这样会使您容易受到依赖混淆攻,因 `pip` 会先检查官方 PyPi 存放庫中的軟體包,然后再检查指定的自定义存放庫。請阅读 `pip`以获取更多信息。
## 支持的命令
@@ -4,19 +4,19 @@ slug: "packages/rpm"
sidebar_position: 105
---
# RPM 软件包注册
# RPM 軟體包註冊
您的用户或组织发布 [RPM](https://rpm.org/) 软件包。
您的使用者或組織發佈 [RPM](https://rpm.org/) 軟體包。
## 要求
要使用RPM注册表,您需要使用像 `yum`, `dnf``zypper` 这样的软件包管理器来消费软件包。
要使用RPM註冊表,您需要使用像 `yum`, `dnf``zypper` 这样的軟體包管理器来消费軟體包。
以下示例使用 `dnf`
## 配置软件包注册
## 配置軟體包註冊
要注册RPM注册表,将 URL 添加到已知 `apt` 源列表中:
要注册RPM註冊表,将 URL 添加到已知 `apt` 源列表中:
```shell
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{group}.repo
@@ -24,31 +24,31 @@ dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm
| 占位符 | 描述 |
| ------- |--------------------------------------|
| `owner` | 软件包的所有者 |
| `group` | 任何名,例如 `centos/7``el-7``fc38` |
| `owner` | 軟體包的所有者 |
| `group` | 任何名,例如 `centos/7``el-7``fc38` |
如果注册表是私有的,在URL中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-认证)
如果註冊表是私有的,在URL中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-認證)
```shell
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm/{group}.repo
```
还必须将凭据添加到 `/etc/yum.repos.d` 中的 `rpm.repo` 文件中的URL中。
還必須将凭据添加到 `/etc/yum.repos.d` 中的 `rpm.repo` 文件中的URL中。
## 发布软件
## 發佈軟體
发布RPM软件包(`*.rpm`),请执行带有软件包内容的 HTTP `PUT` 操作。
發佈RPM軟體包(`*.rpm`),請執行带有軟體包内容的 HTTP `PUT` 操作。
```
PUT https://gitea.example.com/api/packages/{owner}/rpm/{group}/upload
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- |--------------|
| `owner` | 软件包的所有者 |
| `group` | 软件包自定义分组名 |
| `owner` | 軟體包的所有者 |
| `group` | 軟體包自定义分组名 |
使用HTTP基本身份验证的示例求:
使用HTTP基本身份驗證的示例求:
```shell
curl --user your_username:your_password_or_token \
@@ -56,49 +56,49 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/version/upload
```
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)替代密。您法将具有相同名的文件两次发布到软件包中。您必先删除有的软件包版本。
如果您使用 2FA 或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)替代密。您法将具有相同名的文件两次發佈到軟體包中。您必先删除有的軟體包版本。
服务器将以以下HTTP状态码响应
服务器将以以下HTTP状态码響應
| HTTP 状态码 | 含义 |
| ----------------- | ------------------------------------------------ |
| `201 Created` | 软件包已发布 |
| `400 Bad Request` | 软件包无效 |
| `409 Conflict` | 具有相同参数组合的软件包文件已经存在于该软件包中 |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包無效 |
| `409 Conflict` | 具有相同參數组合的軟體包文件已经存在于該軟體包中 |
## 删除软件
## 删除軟體
要删除 RPM 软件包,请执行 HTTP `DELETE` 操作。如果没有文件剩余,这也将删除软件包版本。
要删除 RPM 軟體包,請執行 HTTP `DELETE` 操作。如果没有文件剩余,这也将删除軟體包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{group}/package/{package_name}/{package_version}/{architecture}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 软件包的所有者 |
| `group` | 软件包自定义分组 |
| `package_name` | 软件包名 |
| `package_version` | 软件包版本 |
| `architecture` | 软件包架构 |
| `owner` | 軟體包的所有者 |
| `group` | 軟體包自定义分组 |
| `package_name` | 軟體包名 |
| `package_version` | 軟體包版本 |
| `architecture` | 軟體包架构 |
使用HTTP基本身份验证的示例求:
使用HTTP基本身份驗證的示例求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/package/test-package/1.0.0/x86_64
```
服务器将以以下HTTP状态码响应
服务器将以以下HTTP状态码響應
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到软件包或文件 |
| `404 Not Found` | 未找到軟體包或文件 |
## 安装软件
## 安裝軟體
要从RPM注册表安装软件包,请执行以下命令:
要从RPM註冊表安裝軟體包,請執行以下命令:
```shell
# use latest version
@@ -4,27 +4,27 @@ slug: "rubygems"
sidebar_position: 110
---
# RubyGems 软件包注册
# RubyGems 軟體包註冊
您的用户或组织发布 [RubyGems](https://guides.rubygems.org/) 软件包。
您的使用者或組織發佈 [RubyGems](https://guides.rubygems.org/) 軟體包。
## 要求
要使用RubyGems软件包注册表,您需要使用 [gem](https://guides.rubygems.org/command-reference/) 命令行工具来消费和发布软件包。
要使用RubyGems軟體包註冊表,您需要使用 [gem](https://guides.rubygems.org/command-reference/) 命令行工具来消费和發佈軟體包。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表,编辑 `~/.gem/credentials` 文件添加:
要注册軟體包註冊表,编辑 `~/.gem/credentials` 文件添加:
```ini
---
https://gitea.example.com/api/packages/{owner}/rubygems: Bearer {token}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------- | ------------------------------------------------------------------------------------- |
| `owner` | 软件包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-认证) |
| `owner` | 軟體包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#通-api-認證) |
例如:
@@ -33,18 +33,18 @@ https://gitea.example.com/api/packages/{owner}/rubygems: Bearer {token}
https://gitea.example.com/api/packages/testuser/rubygems: Bearer 3bd626f84b01cd26b873931eace1e430a5773cc4
```
## 发布软件
## 發佈軟體
运行以下命令来发布软件包:
运行以下命令来發佈軟體包:
```shell
gem push --host {host} {package_file}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | ------------------------ |
| `host` | 软件包注册表的URL |
| `package_file` | 软件`.gem` 文件的路径 |
| `host` | 軟體包註冊表的URL |
| `package_file` | 軟體`.gem` 文件的路径 |
例如:
@@ -52,11 +52,11 @@ gem push --host {host} {package_file}
gem push --host https://gitea.example.com/api/packages/testuser/rubygems test_package-1.0.0.gem
```
如果已经存在相同名和版本的软件包,您将无法发布软件包。您必先删除有的软件包。
如果已经存在相同名和版本的軟體包,您将無法發佈軟體包。您必先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安装软件包,您可以使用 [Bundler](https://bundler.io) 或 `gem`
要从軟體包註冊表安裝軟體包,您可以使用 [Bundler](https://bundler.io) 或 `gem`
### Bundler
@@ -68,10 +68,10 @@ source "https://gitea.example.com/api/packages/{owner}/rubygems" do
end
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
例如:
@@ -89,16 +89,16 @@ bundle install
### gem
行以下命令:
行以下命令:
```shell
gem install --host https://gitea.example.com/api/packages/{owner}/rubygems {package_name}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包名 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名 |
例如:
@@ -4,67 +4,67 @@ slug: "storage"
sidebar_position: 5
---
# 存
# 存
本文描述了软件包注册表的存方式以及如何管理存
本文描述了軟體包註冊表的存方式以及如何管理存
## 去重
软件包注册表具有内置的去重功能,可以对上传的 Blob 行去重处理。
軟體包註冊表具有内置的去重功能,可以对上传的 Blob 行去重处理。
如果上传了两个相同的文件,只会在文件系统上保存一个 Blob。
这样可以确保不会浪费空间用于重复的文件。
如果上传了两个具有相同文件的软件包,这两个软件包将显示相同的大小,但在文件系统上,它们只需要一半的大小。
每当删除一个软件包时,只会删除对底层 Blob 的引用。
如果上传了两个具有相同文件的軟體包,这两个軟體包将显示相同的大小,但在文件系统上,它们只需要一半的大小。
每当删除一个軟體包时,只会删除对底层 Blob 的引用。
此时,Blob 不会被删除,因此它们仍然占用文件系统上的空间。
当上传新的软件包时,有的 Blob 可能会再次被引用。
当上传新的軟體包时,有的 Blob 可能会再次被引用。
这些引用的 Blob 会在一个清理任务中被删除。
配置设置 `OLDER_THAN` 可以配置引用的 Blob 在被删除之前保留的时间。
这些引用的 Blob 会在一个清理任务中被删除。
配置设置 `OLDER_THAN` 可以配置引用的 Blob 在被删除之前保留的时间。
## 清理规则
## 清理規則
软件包注册表可能会随着时间的推移而变得很大,如果不行清理的话。
建议删除不必要的软件包并设置清理规则以自动管理软件包注册表的使用情况。
每个软件包所有者(用户或组织)都可以管理用于其软件包的清理规则
軟體包註冊表可能会随着时间的推移而变得很大,如果不行清理的话。
建议删除不必要的軟體包並设置清理規則以自动管理軟體包註冊表的使用情况。
每个軟體包所有者(使用者或組織)都可以管理用于其軟體包的清理規則
| 设置 | 描述 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 启用 | 打开或关闭清理规则。 |
| 型 | 每个规则管理特定的软件包类型。 |
| 将模式用于完整的软件包名 | 如果启用,则用以下模式到完整的软件包名`package/version`),否则只使用版本号(`version`)。 |
| 保留最近的版本数 | 对于每个软件包要始终保留的版本数量。 |
| 保留与以下模式匹配的版本 | 确定要保留哪些版本的正则表达式模式。空模式表示不保留任何版本,而 `.+` 表示保留所有版本。即使未配置,容器注册表也始终保留 `latest` 版本。 |
| 删除早于多少天的版本 | 删除早于所天数的版本。 |
| 删除与以下模式匹配的版本 | 确定要删除哪些版本的正则表达式模式。空模式或 `.+` 表示如果没有其他设置指定,则删除所有软件包。 |
| 启用 | 打开或关闭清理規則。 |
| 型 | 每个規則管理特定的軟體包類型。 |
| 将模式用于完整的軟體包名 | 如果启用,则用以下模式到完整的軟體包名`package/version`),否则只使用版本号(`version`)。 |
| 保留最近的版本数 | 對於每个軟體包要始终保留的版本数量。 |
| 保留与以下模式匹配的版本 | 确定要保留哪些版本的正则表达式模式。空模式表示不保留任何版本,而 `.+` 表示保留所有版本。即使未配置,容器註冊表也始终保留 `latest` 版本。 |
| 删除早于多少天的版本 | 删除早于所天数的版本。 |
| 删除与以下模式匹配的版本 | 确定要删除哪些版本的正则表达式模式。空模式或 `.+` 表示如果没有其他设置指定,则删除所有軟體包。 |
每个清理规则都可以显示受影响的软件包的预览。
这可以用来检查清理规则是否正确配置。
每个清理規則都可以显示受影響的軟體包的预览。
这可以用来检查清理規則是否正确配置。
### 正则表达式示例
正则表达式模式会自动使用 `\A``\z` 锚点行包围。
不要在正则表达式模式中包含任何 `\A``\z``^``$` 标记,因它们不是必要的。
模式是不区分大小写的,与 Gitea 中的软件包注册表的行相匹配。
正则表达式模式会自动使用 `\A``\z` 锚点行包围。
不要在正则表达式模式中包含任何 `\A``\z``^``$` 标记,因它们不是必要的。
模式是不区分大小写的,与 Gitea 中的軟體包註冊表的行相匹配。
| Pattern | Description |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `.*` | 匹配任何可能的版本。 |
| `v.+` | 匹配以 `v` 开头的版本。 |
| `release` | 匹配版本号 `release`。 |
| `release.*` | 匹配以 `release` 命名或以 `release` 开头的版本。 |
| `v.+` | 匹配以 `v` 開頭的版本。 |
| `release` | 匹配版本号 `release`。 |
| `release.*` | 匹配以 `release` 命名或以 `release` 開頭的版本。 |
| `.+-temp-.+` | 匹配包含 `-temp-` 的版本。 |
| `v.+\|release` | 匹配以 `v` 开头的版本或版本号 `release`。 |
| `package/v.+\|other/release` | 匹配以 `v` 开头的 package 的版本或 `other` 的版本号 `release`。需要启用*将模式用于完整的软件包名*设置。 |
| `v.+\|release` | 匹配以 `v` 開頭的版本或版本号 `release`。 |
| `package/v.+\|other/release` | 匹配以 `v` 開頭的 package 的版本或 `other` 的版本号 `release`。需要启用*将模式用于完整的軟體包名*设置。 |
### 清理规则的工作原理
### 清理規則的工作原理
清理规则是清理任务的一部分,定期运行。
清理規則是清理任务的一部分,定期运行。
清理规则
清理規則
1. 收集所有属于所有者注册表的特定软件包类型的软件包。
2. 对于每个软件包,收集所有版本。
1. 收集所有属于所有者註冊表的特定軟體包類型的軟體包。
2. 對於每个軟體包,收集所有版本。
3. 根据 *保留最近的版本数* 的值,从列表中排除版本。
4. 根据 *保留与以下模式匹配的版本* 的值,从列表中排除任何版本。
5. 根据 *删除早于多少天的版本* 的值,从列表中排除比这个值更近的版本。
@@ -4,17 +4,17 @@ slug: "swift"
sidebar_position: 115
---
# Swift 软件包注册
# Swift 軟體包註冊
您的用户或组织发布 [Swift](https://www.swift.org/) 软件包。
您的使用者或組織發佈 [Swift](https://www.swift.org/) 軟體包。
## 要求
要使用 Swift 软件包注册表,您需要使用 [swift](https://www.swift.org/getting-started/) 消费软件包,使用 HTTP 客户端(如 `curl`发布软件包。
要使用 Swift 軟體包註冊表,您需要使用 [swift](https://www.swift.org/getting-started/) 消费軟體包,使用 HTTP 客户端(如 `curl`發佈軟體包。
## 配置软件包注册
## 配置軟體包註冊
要注册软件包注册表并提供凭据,请执行以下命令:
要注册軟體包註冊表並提供凭据,請執行以下命令:
```shell
swift package-registry set https://gitea.example.com/api/packages/{owner}/swift -login {username} -password {password}
@@ -22,21 +22,21 @@ swift package-registry set https://gitea.example.com/api/packages/{owner}/swift
| 占位符 | 描述 |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 软件包的所有者。 |
| `username` | 您的 Gitea 用户名。 |
| `password` | 您的 Gitea 密。如果您使用两步验证或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)代替密。 |
| `owner` | 軟體包的所有者。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密。如果您使用两步驗證或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)代替密。 |
是可的,只有在软件包注册表是私有的情况下才需要。
是可的,只有在軟體包註冊表是私有的情况下才需要。
## 发布软件
## 發佈軟體
首先,您需要打包软件包的内容:
首先,您需要打包軟體包的内容:
```shell
swift package archive-source
```
发布软件包,请执行一个带有软件包内容的 HTTP `PUT` 求,将内容放在求正文中。
發佈軟體包,請執行一个带有軟體包内容的 HTTP `PUT` 求,将内容放在求正文中。
```shell --user your_username:your_password_or_token \
curl -X PUT --user {username}:{password} \
@@ -48,19 +48,19 @@ curl -X PUT --user {username}:{password} \
| 占位符 | 描述 |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `username` | 您的 Gitea 用户名。 |
| `password` | 您的 Gitea 密。如果您使用两步验证或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-认证)代替密。 |
| `owner` | 软件包的所有者。 |
| `scope` | 软件包的作用域。 |
| `name` | 软件包的名。 |
| `version` | 软件包的版本。 |
| `metadata` | (可选)软件包的元数据。以 JSON 编码的子集,格式参考 https://schema.org/SoftwareSourceCode |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密。如果您使用两步驗證或 OAuth使用[个人访问令牌](development/api-usage.md#通-api-認證)代替密。 |
| `owner` | 軟體包的所有者。 |
| `scope` | 軟體包的作用域。 |
| `name` | 軟體包的名。 |
| `version` | 軟體包的版本。 |
| `metadata` | (可選)軟體包的元数据。以 JSON 编码的子集,格式参考 https://schema.org/SoftwareSourceCode |
如果已经存在相同名和版本的软件包,则无法发布软件包。您必首先删除有的软件包。
如果已经存在相同名和版本的軟體包,则無法發佈軟體包。您必首先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安 Swift 软件包,将其添加到 `Package.swift` 文件的依赖项列表中:
要从軟體包註冊表安 Swift 軟體包,将其添加到 `Package.swift` 文件的依赖项列表中:
```
dependencies: [
@@ -68,13 +68,13 @@ dependencies: [
]
```
| 参数 | 描述 |
| 參數 | 描述 |
| --------- | -------------- |
| `scope` | 软件包的作用域 |
| `name` | 软件包的名 |
| `version` | 软件包的版本 |
| `scope` | 軟體包的作用域 |
| `name` | 軟體包的名 |
| `version` | 軟體包的版本 |
之后,行以下命令来安它:
之后,行以下命令来安它:
```shell
swift package resolve
@@ -4,28 +4,28 @@ slug: "vagrant"
sidebar_position: 120
---
# Vagrant 软件包注册
# Vagrant 軟體包註冊
您的用户或组织发布 [Vagrant](https://www.vagrantup.com/) 软件包。
您的使用者或組織發佈 [Vagrant](https://www.vagrantup.com/) 軟體包。
## 要求
要使用 Vagrant 软件包注册表,您需要安 [Vagrant](https://www.vagrantup.com/downloads) 使用类似于 `curl` 的工具行 HTTP 求。
要使用 Vagrant 軟體包註冊表,您需要安 [Vagrant](https://www.vagrantup.com/downloads) 使用类似于 `curl` 的工具行 HTTP 求。
## 发布软件
## 發佈軟體
过执行 HTTP PUT 求将 Vagrant box 发布到注册表:
過執行 HTTP PUT 求将 Vagrant box 發佈到註冊表:
```
PUT https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}/{package_version}/{provider}.box
```
| 参数 | 描述 |
| 參數 | 描述 |
| ----------------- | ------------------------------------------------------------------ |
| `owner` | 软件包的所有者 |
| `package_name` | 软件包的名 |
| `package_version` | 软件包的版本,兼容 semver 格式 |
| `provider` | [支持的提供程序名](https://www.vagrantup.com/docs/providers)之一 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包的名 |
| `package_version` | 軟體包的版本,兼容 semver 格式 |
| `provider` | [支持的提供程序名](https://www.vagrantup.com/docs/providers)之一 |
上传 Hyper-V box 的示例:
@@ -35,20 +35,20 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/vagrant/test_system/1.0.0/hyperv.box
```
如果已经存在相同名、版本和提供程序的软件包,则无法发布软件包。您必首先删除有的软件包。
如果已经存在相同名、版本和提供程序的軟體包,则無法發佈軟體包。您必首先删除有的軟體包。
## 安装软件
## 安裝軟體
要从软件包注册表安装软件包,请执行以下命令:
要从軟體包註冊表安裝軟體包,請執行以下命令:
```shell
vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}"
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | --------------- |
| `owner` | 软件包的所有者. |
| `package_name` | 软件包的名 |
| `owner` | 軟體包的所有者. |
| `package_name` | 軟體包的名 |
例如:
@@ -56,8 +56,8 @@ vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package
vagrant box add "https://gitea.example.com/api/packages/testuser/vagrant/test_system"
```
这将安装软件包的最新版本。要添加特定版本,使用` --box-version` 参数
如果注册表是私有的,您可以将您的[个人访问令牌](development/api-usage.md#通-api-认证)传递给 `VAGRANT_CLOUD_TOKEN` 环境变量。
这将安裝軟體包的最新版本。要添加特定版本,使用` --box-version` 參數
如果註冊表是私有的,您可以将您的[个人访问令牌](development/api-usage.md#通-api-認證)传递给 `VAGRANT_CLOUD_TOKEN` 环境变量。
## 支持的命令
@@ -8,70 +8,70 @@ aliases:
# 权限
Gitea 支持对仓库进行权限管理,这样您就可以不同的人员提供不同的访问权限。首先,我们需要了解 `元(Unit`
Gitea 支持对存放庫進行权限管理,这样您就可以不同的人员提供不同的访问权限。首先,我们需要了解 `元(Unit`
## 元(Unit
## 元(Unit
在 Gitea 中,我们将仓库的子模块称为 `元(Unit`在我们有以下几个元。
在 Gitea 中,我们将存放庫的子模組稱為 `元(Unit`在我们有以下几个元。
| 名 | 描述 | 权限 |
| 名 | 描述 | 权限 |
| -------------- | ---------------------------------- | --------- |
| 代码 | 访问源代码、文件、提交和分支。 | 读取 写入 |
| 工 | 组织缺陷报告、任务和里程碑。 | 读取 写入 |
| 合并请求 | 启用合并请求和代码审核。 | 读取 写入 |
| 发布 | 跟踪项目版本和下载。 | 读取 写入 |
| 百科 | 与协作者编写和共享文。 | 读取 写入 |
| 工 | 組織缺陷报告、任务和里程碑。 | 读取 写入 |
| 合並請求 | 启用合並請求和代码审核。 | 读取 写入 |
| 發佈 | 跟踪项目版本和下载。 | 读取 写入 |
| 百科 | 与协作者编写和共享文。 | 读取 写入 |
| 外部百科 | 链接到外部维基。 | 读取 |
| 外部工跟踪器 | 链接到外部工跟踪器。 | 读取 |
| 项目 | 模板仓库的 URL。 | 读取 写入 |
| 包 | 链接到仓库 | 读取 写入 |
| 外部工跟踪器 | 链接到外部工跟踪器。 | 读取 |
| 项目 | 模板存放庫的 URL。 | 读取 写入 |
| 包 | 链接到存放庫 | 读取 写入 |
| Actions | 审查 Actions 日志或重启/取消工作流 | 读取 写入 |
| 设置 | 管理仓库。 | 管理员 |
| 设置 | 管理存放庫。 | 管理员 |
不同的权限,用户可以在这些元上行不同的操作。
不同的权限,使用者可以在这些元上行不同的操作。
| 名 | 读取 | 写入 | 管理员 |
| 名 | 读取 | 写入 | 管理员 |
| -------------- | -------------------------------- | ------------------------------ | -------- |
| 代码 | 查看代码树、文件、提交、分支等。 | 推送代码。 | - |
| 工 | 查看工单并创建新工。 | 添加标签、分配、关闭工。 | - |
| 合并请求 | 查看合并请求并创建新合并请求。 | 添加标签、分配、关闭合并请求。 | - |
| 发布 | 查看发布和下载文件。 | 建/编辑发布。 | - |
| 百科 | 查看百科页面。克隆百科仓库。 | 建/编辑百科页面,推送更改。 | - |
| 工 | 查看工單並建立新工。 | 添加標籤、分配、关闭工。 | - |
| 合並請求 | 查看合並請求並建立新合並請求。 | 添加標籤、分配、关闭合並請求。 | - |
| 發佈 | 查看發佈和下载文件。 | 建/编辑發佈。 | - |
| 百科 | 查看百科页面。克隆百科存放庫。 | 建/编辑百科页面,推送更改。 | - |
| 外部百科 | 链接到外部百科。 | - | - |
| 外部工跟踪器 | 链接到外部工跟踪器。 | - | - |
| 项目 | 查看面板。 | 在面板之间移动工。 | - |
| 外部工跟踪器 | 链接到外部工跟踪器。 | - | - |
| 项目 | 查看面板。 | 在面板之间移动工。 | - |
| 包 | 查看包 | 上传/删除包 | - |
| Actions | 查看 Actions 日志 | 同意 / 取消 / 重启 | - |
| 设置 | - | - | 管理仓库 |
| 设置 | - | - | 管理存放庫 |
个人仓库和组织仓库之间的权限存在一些差异。
个人存放庫和組織存放庫之间的权限存在一些差异。
## 个人仓库
## 个人存放庫
对于个人仓库,创建者是仓库的唯一所有者,对于该仓库的任何更改或删除没有限制。
仓库所有者可以添加协作者来帮助维护仓库。协作者可以拥有 `读取(Read``写入(Write``管理员(Admin` 权限。
對於个人存放庫,建立者是存放庫的唯一所有者,對於該存放庫的任何更改或删除没有限制。
存放庫所有者可以添加协作者来帮助维护存放庫。协作者可以拥有 `读取(Read``写入(Write``管理员(Admin` 权限。
访问私有仓库的体验与访问匿名公共仓库类似。您可以访问仓库中的所有可用内容,包括克隆代码、创建工单、回复工评论、提交拉取求等。如果你有 "写"权限,只要分支保护规则允许,你就可以向仓库的特定分支推送代码。此外,你可以修改百科页面。有了 "管理"权限,你就可以修改仓库的设置。
访问私有存放庫的體验与访问匿名公共存放庫类似。您可以访问存放庫中的所有可用内容,包括克隆代码、建立工單、回复工评论、提交拉取求等。如果你有 "写"权限,只要分支保护規則允许,你就可以向存放庫的特定分支推送代码。此外,你可以修改百科页面。有了 "管理"权限,你就可以修改存放庫的设置。
但如果你不是该仓库的所有者,就不能删除或转移该仓库
但如果你不是該存放庫的所有者,就不能删除或转移該存放庫
## 组织仓库
## 組織存放庫
对于个人仓库,所有者是创建它的用户。而对于组织仓库,所有者是该组织中的所有者团队成员。对该组织仓库的所有权限都取决于团队权限设置。
對於个人存放庫,所有者是建立它的使用者。而對於組織存放庫,所有者是該組織中的所有者团队成员。对該組織存放庫的所有权限都取决于团队权限设置。
### 所有者团队
创建组织时将自动建所有者团队,建者将成所有者团队的第一名成员。所有者团队不可删除,且至少有一名成员。
建立組織时将自动建所有者团队,建者将成所有者团队的第一名成员。所有者团队不可删除,且至少有一名成员。
### 管理员团队
建团队时,有两种型的团队。一种是管理员团队,另一种是普通团队。可以建一个管理员团队来管理某些版本库,其成员可以对这些版本库做任何事情。只有所有者或管理员团队的成员才能建新团队。
团队时,有两种型的团队。一种是管理员团队,另一种是普通团队。可以建一个管理员团队来管理某些版本库,其成员可以对这些版本库做任何事情。只有所有者或管理员团队的成员才能建新团队。
### 普通团队
组织中的普通团队具有可以根据`元(Unit)`行权限设置。它可以有成员和存库范围。
組織中的普通团队具有可以根据`元(Unit)`行权限设置。它可以有成员和存库范围。
- 一个团队可以访问所属组织的所有仓库或特殊仓库
- 也可以设置团队是否有创建新仓库的权限。
- 一个团队可以访问所属組織的所有存放庫或特殊存放庫
- 也可以设置团队是否有建立新存放庫的权限。
可以通过创建 "普通团队"并通过权限控制对其行为进行限制。一名成员可以加入多个团队。
可以通過建立 "普通团队"並通過权限控制对其行為進行限制。一名成员可以加入多个团队。
@@ -6,10 +6,10 @@ sidebar_position: 12
# 个人资料 README
要在您的 Gitea 个人资料页面显示一个 Markdown 文件,只需建一个名 `.profile`仓库,并编辑其中的 `README.md` 文件。Gitea 将自动获取文件在您的仓库上方显示。
要在您的 Gitea 个人资料页面显示一个 Markdown 文件,只需建一个名 `.profile`存放庫,並编辑其中的 `README.md` 文件。Gitea 将自动获取文件在您的存放庫上方显示。
注意:您可以将此仓库设为私有。这样可以隐藏您的源文件,使其对公众不可见,允许您将某些文件设私有。但是,README.md 文件将是您个人资料上唯一存在的文件。如果您希望完全私有化 .profile 仓库,则需删除或重命名 README.md 文件。
注意:您可以将此存放庫设為私有。这样可以隐藏您的源文件,使其对公众不可见,允许您将某些文件设私有。但是,README.md 文件将是您个人资料上唯一存在的文件。如果您希望完全私有化 .profile 存放庫,则需删除或重命名 README.md 文件。
用户示例 `.profile/README.md`:
使用者示例 `.profile/README.md`:
![个人资料自述文件截图](/images/usage/profile-readme.png)
@@ -6,41 +6,41 @@ aliases:
- /zh-tw/protected-tags
---
# 受保护的标签
# 受保护的標籤
受保护的标签允许控制谁有权限建或更新 Git 标签。每个规则可以匹配单个标签名称,或者使用适当的模式来同时控制多个标签
受保护的標籤允许控制谁有权限建或更新 Git 標籤。每个規則可以匹配單个標籤名稱,或者使用适当的模式来同时控制多个標籤
## 设置受保护的标签
## 设置受保护的標籤
要保护一个标签,你需要按照以下步骤行操作:
要保护一个標籤,你需要按照以下步骤行操作:
1. 进入仓库的**设置** > **标签**页面。
2. 输入一个用于匹配名的模式。你可以使用个名、[glob 模式](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式。
3. 择允许的用户和/或团队。如果将这些字段留空,则不允许任何人建或修改此标签
4. 择**保存**以保存配置。
1. 進入存放庫的**设置** > **標籤**页面。
2. 输入一个用于匹配名的模式。你可以使用个名、[glob 模式](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式。
3. 择允许的使用者和/或团队。如果将这些字段留空,则不允许任何人建或修改此標籤
4. 择**保存**以保存配置。
## 模式受保护的标签
## 模式受保护的標籤
模式使用 [glob](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式来匹配标签名称。对于正则表达式,你需要将模式括在斜杠中。
模式使用 [glob](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式来匹配標籤名稱。對於正则表达式,你需要将模式括在斜杠中。
示例:
| 型 | 模式受保护的标签 | 可能匹配的标签 |
| 型 | 模式受保护的標籤 | 可能匹配的標籤 |
| ----- | ------------------------ | --------------------------------------- |
| Glob | `v*` | `v``v-1``version2` |
| Glob | `v[0-9]` | `v0``v1``v9` |
| Glob | `*-release` | `2.1-release``final-release` |
| Glob | `gitea` | `gitea` |
| Glob | `gitea` | `gitea` |
| Glob | `*gitea*` | `gitea``2.1-gitea``1_gitea-release` |
| Glob | `{v,rel}-*` | `v-``v-1``v-final``rel-``rel-x` |
| Glob | `*` | 匹配所有可能的标签名称 |
| Glob | `*` | 匹配所有可能的標籤名稱 |
| Regex | `/\Av/` | `v``v-1``version2` |
| Regex | `/\Av[0-9]\z/` | `v0``v1``v9` |
| Regex | `/\Av\d+\.\d+\.\d+\z/` | `v1.0.17``v2.1.0` |
| Regex | `/\Av\d+(\.\d+){0,2}\z/` | `v1``v2.1``v1.2.34` |
| Regex | `/-release\z/` | `2.1-release``final-release` |
| Regex | `/gitea/` | `gitea``2.1-gitea``1_gitea-release` |
| Regex | `/\Agitea\z/` | `gitea` |
| Regex | `/^gitea$/` | `gitea` |
| Regex | `/\Agitea\z/` | `gitea` |
| Regex | `/^gitea$/` | `gitea` |
| Regex | `/\A(v\|rel)-/` | `v-``v-1``v-final``rel-``rel-x` |
| Regex | `/.+/` | 匹配所有可能的标签名称 |
| Regex | `/.+/` | 匹配所有可能的標籤名稱 |
@@ -6,47 +6,47 @@ aliases:
- /zh-tw/pull-request
---
# 合并请
# 合並請
并请求(PR)是一种提出对仓库进行更改的方式。
它是一种将一个分支合到另一个分支的求,附带有对所做更改的描述。
并请求通常用作贡献者对仓库贡献代码的方式,仓库的维护者可以通对合并请求进行审查来决定是否接受这些更改。
並請求(PR)是一种提出对存放庫進行更改的方式。
它是一种将一个分支合到另一个分支的求,附带有对所做更改的描述。
並請求通常用作贡献者对存放庫贡献代码的方式,存放庫的维护者可以通对合並請求進行审查来决定是否接受这些更改。
## 创建合并请
## 建立合並請
创建合并请求,您需要遵循以下步骤:
建立合並請求,您需要遵循以下步骤:
1. **Fork 仓库** - 如果您没有直接对仓库进行更改的权限,您需要将仓库 fork 到您自己的账户中。
这将建一个您可以对其行更改的仓库副本。
1. **Fork 存放庫** - 如果您没有直接对存放庫進行更改的权限,您需要将存放庫 fork 到您自己的账户中。
这将建一个您可以对其行更改的存放庫副本。
2. **建分支(可** - 在 fork 的仓库中创建一个新分支,分支包含您要提出的更改。
给分支取一个描述性的名,以指示更改的内容。
2. **建分支(可** - 在 fork 的存放庫中建立一个新分支,分支包含您要提出的更改。
给分支取一个描述性的名,以指示更改的内容。
3. **行更改** - 行您想要的更改,提交将其推送到 fork 的仓库中。
3. **行更改** - 行您想要的更改,提交将其推送到 fork 的存放庫中。
4. **创建合并请** - 转到原始仓库并转到“合并请求”项卡。单击“新建合并请求”按钮,将您的新分支选择为源分支。
您的合并请求输入描述性标题和描述,然后单击“创建合并请求”。
4. **建立合並請** - 转到原始存放庫並转到“合並請求”项卡。單擊“新建合並請求”按钮,将您的新分支選择為源分支。
您的合並請求输入描述性标题和描述,然后單擊“建立合並請求”。
## 评审合并请
## 评审合並請
创建合并请求后,将触发评审流程。仓库的维护者将收到合并请求的通知,可以审查所做的更改。
他们可以留下评论、求更改或批准更改。
建立合並請求后,将触发评审流程。存放庫的维护者将收到合並請求的通知,可以审查所做的更改。
他们可以留下评论、求更改或批准更改。
如果维护者求更改,您需要在分支中行这些更改,将更改推送到 fork 的仓库中。
并请求将自动使用新更改行更新。
如果维护者求更改,您需要在分支中行这些更改,将更改推送到 fork 的存放庫中。
並請求将自动使用新更改行更新。
如果维护者批准更改,他们可以将合并请求合并到仓库中。
如果维护者批准更改,他们可以将合並請求合並到存放庫中。
## 关闭合并请
## 关闭合並請
如果您不接受该合并请求,您可以关闭它。
要关闭合并请求,转到打开的合并请求并单击“关闭合并请求”按钮。这将关闭合并请求并且不会将其合
如果您不接受該合並請求,您可以关闭它。
要关闭合並請求,转到打开的合並請求並單擊“关闭合並請求”按钮。这将关闭合並請求並且不会将其合
## 使用“Work In Progress”标记
在合并请求中使用“Work In Progress”标记可以防止合并请求被意外合
要将合并请求标记“Work In Progress”,您必在其标题中添加前缀`WIP:``[WIP]`(不区分大小写)。
标记前缀可以在您的`app.ini`文件中行配置:
在合並請求中使用“Work In Progress”标记可以防止合並請求被意外合
要将合並請求标记“Work In Progress”,您必在其标题中添加前缀`WIP:``[WIP]`(不区分大小写)。
标记前缀可以在您的`app.ini`文件中行配置:
```
[repository.pull-request]
@@ -55,6 +55,6 @@ WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP]
列表的第一个值将用于 helpers 程序。
## 合并请求模板
## 合並請求模板
有关合并请求模板的更多信息您移步 : [与合并请求模板](usage/issue-pull-request-templates.md)
有关合並請求模板的更多信息您移步 : [与合並請求模板](usage/issue-pull-request-templates.md)
@@ -9,53 +9,53 @@ aliases:
# 推送
在将提交推送到 Gitea 服务器时,有一些额外的功能。
在将提交推送到 Gitea 服务器时,有一些额外的功能。
## 通推送打开 PR
## 通推送打开 PR
当您第一次将提交推送到非默认分支时,您将收到一个链接,您可以单击该链接访问分支与主分支的比较页面。
从那里,您可以轻松建一个拉取求,即使您想要将其目标指向另一个分支。
当您第一次将提交推送到非默认分支时,您将收到一个链接,您可以單擊該链接访问分支与主分支的比较页面。
从那里,您可以轻松建一个拉取求,即使您想要将其目标指向另一个分支。
![Gitea 推送提示](/gitea-push-hint.png)
## 推送
## 推送
在 Gitea `1.13` 版本中,添加了对一些 [推送](https://git-scm.com/docs/git-push#Documentation/git-push.txt--oltoptiongt) 的支持。
在 Gitea `1.13` 版本中,添加了对一些 [推送](https://git-scm.com/docs/git-push#Documentation/git-push.txt--oltoptiongt) 的支持。
### 支持的
### 支持的
- `repo.private` (true|false) - 更改仓库的可见性。
- `repo.private` (true|false) - 更改存放庫的可见性。
这在与 push-to-create 结合使用时特别有用。
- `repo.template` (true|false) - 更改仓库是否模板。
- `repo.template` (true|false) - 更改存放庫是否模板。
仓库的可见性更改公开的示例:
存放庫的可见性更改公开的示例:
```shell
git push -o repo.private=false -u origin main
```
## 推送
## 推送建
推送建是一项功能,允许您将提交推送到在 Gitea 中尚不存在的仓库。这对于自动化和允许用户创建仓库而无需通 Web 界面非常有用。此功能默认处于禁用状态。
推送建是一项功能,允许您将提交推送到在 Gitea 中尚不存在的存放庫。这對於自动化和允许使用者建立存放庫而無需通 Web 界面非常有用。此功能默认处于禁用状态。
### 启用推送
### 启用推送建
`app.ini` 文件中,将 `ENABLE_PUSH_CREATE_USER` 设置 `true`,如果您希望允许用户在自己的用户帐户和所属的组织中创建仓库,将 `ENABLE_PUSH_CREATE_ORG` 设置 `true`。重新启动 Gitea 以使更改生效。您可以在 [配置速查表](../administration/config-cheat-sheet.md#仓库) 中了解有关这两个项的更多信息。
`app.ini` 文件中,将 `ENABLE_PUSH_CREATE_USER` 设置 `true`,如果您希望允许使用者在自己的使用者帳戶和所属的組織中建立存放庫,将 `ENABLE_PUSH_CREATE_ORG` 设置 `true`。重新启动 Gitea 以使更改生效。您可以在 [配置速查表](../administration/config-cheat-sheet.md#存放庫) 中了解有关这两个项的更多信息。
### 使用推送
### 使用推送建
假设您在当前目中有一个 git 仓库,您可以通运行以下命令将提交推送到在 Gitea 中尚不存在的仓库
假设您在当前目中有一个 git 存放庫,您可以通运行以下命令将提交推送到在 Gitea 中尚不存在的存放庫
```shell
# 添加要推送到的远程仓库
git remote add origin git@{domain}:{username}/{尚不存在的仓库名称}.git
# 添加要推送到的远程存放庫
git remote add origin git@{domain}:{username}/{尚不存在的存放庫名稱}.git
# 推送到远程仓库
# 推送到远程存放庫
git push -u origin main
```
这假设您使用的是 SSH 远程,但您也可以使用 HTTPS 远程。
推送建将默认使用 `app.ini` 中定义的可见性 `DEFAULT_PUSH_CREATE_PRIVATE`
推送建将默认使用 `app.ini` 中定义的可见性 `DEFAULT_PUSH_CREATE_PRIVATE`
@@ -6,90 +6,90 @@ aliases:
- /zh-tw/repo-mirror
---
# 仓库镜像
# 存放庫镜像
仓库镜像允许将仓库与外部源之间行镜像。您可以使用它在仓库之间镜像分支、标签和提交。
存放庫镜像允许将存放庫与外部源之间行镜像。您可以使用它在存放庫之间镜像分支、標籤和提交。
## 使用场景
以下是一些仓库镜像的可能使用场景:
以下是一些存放庫镜像的可能使用场景:
- 您迁移到了 Gitea,但仍需要在其他源中保留您的项目。在这种情况下,您可以简地设置它以行镜像到 Gitea(拉取),这样您的 Gitea 实例中就可以获取到所有必要的提交历史、标签和分支。
- 您在其他源中有一些旧项目,您不再主动使用,但出于归目的不想删除。在这种情况下,您可以建一个推送镜像,以便您的活跃的 Gitea 仓库可以将其更改推送到旧位置。
- 您迁移到了 Gitea,但仍需要在其他源中保留您的项目。在这种情况下,您可以简地设置它以行镜像到 Gitea(拉取),这样您的 Gitea 实例中就可以获取到所有必要的提交历史、標籤和分支。
- 您在其他源中有一些旧项目,您不再主动使用,但出于归目的不想删除。在这种情况下,您可以建一个推送镜像,以便您的活跃的 Gitea 存放庫可以将其更改推送到旧位置。
## 从远程仓库拉取
## 从远程存放庫拉取
对于现有的远程仓库,您可以按照以下步骤设置拉取镜像:
對於現有的远程存放庫,您可以按照以下步骤设置拉取镜像:
1. 在右上角的“建...”菜单中选择“迁移外部仓库”。
2. 择远程仓库服务。
3. 输入仓库的 URL。
4. 如果仓库需要身份验证,请填写您的身份验证信息。
5. 中“该仓库将是一个镜像”复框。
6. 择“迁移仓库”以保存配置。
1. 在右上角的“建...”菜單中選择“迁移外部存放庫”。
2. 择远程存放庫服务。
3. 输入存放庫的 URL。
4. 如果存放庫需要身份驗證,請填写您的身份驗證信息。
5. 中“該存放庫将是一个镜像”复框。
6. 择“迁移存放庫”以保存配置。
在,该仓库会定期从远程仓库进行镜像。您可以通过在仓库设置中择“立即同步”来强制行同步。
在,該存放庫会定期从远程存放庫進行镜像。您可以通過在存放庫设置中择“立即同步”来强制行同步。
:::warning
:exclamation::exclamation: **注意:**您只能尚不存在于您的实例上的仓库设置拉取镜像。一旦仓库创建成功,您就法再将其转换拉取镜像。:exclamation::exclamation:
:exclamation::exclamation: **注意:**您只能尚不存在于您的实例上的存放庫设置拉取镜像。一旦存放庫建立成功,您就法再将其转换拉取镜像。:exclamation::exclamation:
:::
## 推送到远程仓库
## 推送到远程存放庫
对于现有的仓库,您可以按照以下步骤设置推送镜像:
對於現有的存放庫,您可以按照以下步骤设置推送镜像:
1.仓库中,转到**设置** > **仓库**,然后入**镜像设置**部分。
2. 输入一个仓库的 URL。
3. 如果仓库需要身份验证,请展开**授权**部分填写您的身份验证信息。注意,所求的**密**也可以是您的访问令牌。
4. 择**添加推送镜像**以保存配置。
1.存放庫中,转到**设置** > **存放庫**,然后入**镜像设置**部分。
2. 输入一个存放庫的 URL。
3. 如果存放庫需要身份驗證,請展开**授权**部分填写您的身份驗證信息。注意,所求的**密**也可以是您的访问令牌。
4. 择**添加推送镜像**以保存配置。
该仓库现在会定期镜像到远程仓库。您可以通过选择**立即同步**来强制同步。如果出错误,会显示一条消息帮助您解决问题。
該存放庫現在会定期镜像到远程存放庫。您可以通過選择**立即同步**来强制同步。如果出错误,会显示一条消息帮助您解决问题。
:::warning
:exclamation::exclamation: **注意:** 这将强制推送到远程仓库。这将覆盖远程仓库中的任何更改! :exclamation::exclamation:
:exclamation::exclamation: **注意:** 这将强制推送到远程存放庫。这将覆盖远程存放庫中的任何更改! :exclamation::exclamation:
:::
### 从 Gitea 向 GitHub 设置推送镜像
要从 Gitea 设置镜像到 GitHub,您需要按照以下步骤行操作:
要从 Gitea 设置镜像到 GitHub,您需要按照以下步骤行操作:
1. 建一个具有中 _public_repo_ 项的 [GitHub 个人访问令牌](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)。
2. 在 GitHub 上建一个同名的仓库。与 Gitea 不同,GitHub 不支持通推送到远程来创建仓库。如果您的有远程仓库与您的 Gitea 仓库具有相同的提交历史,您也可以使用有的远程仓库
3. 在您的 Gitea 仓库设置中,填写**Git 远程仓库 URL**`https://github.com/<your_github_group>/<your_github_project>.git`
4. 使用您的 GitHub 用户名填写**授权**字段,将个人访问令牌作**密**。
5. (可,适用于 Gitea 1.18+`当推送新提交时同步`,这样一旦有更改,镜像将会及时更新。如果您愿意,您可以禁用定期同步。
6. 择**添加推送镜像**以保存配置。
1.一个具有中 _public_repo_ 项的 [GitHub 个人访问令牌](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)。
2. 在 GitHub 上建一个同名的存放庫。与 Gitea 不同,GitHub 不支持通推送到远程来建立存放庫。如果您的有远程存放庫与您的 Gitea 存放庫具有相同的提交历史,您也可以使用有的远程存放庫
3. 在您的 Gitea 存放庫设置中,填写**Git 远程存放庫 URL**`https://github.com/<your_github_group>/<your_github_project>.git`
4. 使用您的 GitHub 使用者名填写**授权**字段,将个人访问令牌作**密**。
5. (可,适用于 Gitea 1.18+`当推送新提交时同步`,这样一旦有更改,镜像将会及时更新。如果您愿意,您可以禁用定期同步。
6. 择**添加推送镜像**以保存配置。
仓库会很快行推送。要强制推送,请选择**立即同步**按钮。
存放庫会很快行推送。要强制推送,請選择**立即同步**按钮。
### 从 Gitea 向 GitLab 设置推送镜像
要从 Gitea 设置镜像到 GitLab,您需要按照以下步骤行操作:
要从 Gitea 设置镜像到 GitLab,您需要按照以下步骤行操作:
1. 建具有 _write_repository_ 作用域的 [GitLab 个人访问令牌](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)。
2. 填写**Git 远程仓库 URL**`https://<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git`
3. 在**授权**字段中填写 `oauth2`**用户名**将您的 GitLab 个人访问令牌作**密**。
4. 择**添加推送镜像**以保存配置。
1.具有 _write_repository_ 作用域的 [GitLab 个人访问令牌](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)。
2. 填写**Git 远程存放庫 URL**`https://<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git`
3. 在**授权**字段中填写 `oauth2`**使用者名**将您的 GitLab 个人访问令牌作**密**。
4. 择**添加推送镜像**以保存配置。
仓库会很快行推送。要强制推送,请选择**立即同步**按钮。
存放庫会很快行推送。要强制推送,請選择**立即同步**按钮。
### 从 Gitea 向 Bitbucket 设置推送镜像
要从 Gitea 设置镜像到 Bitbucket,您需要按照以下步骤行操作:
要从 Gitea 设置镜像到 Bitbucket,您需要按照以下步骤行操作:
1. 建一个具有_Repository Write_ 项的 [Bitbucket 用密](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)。
2. 填写**Git 远程仓库 URL**`https://bitbucket.org/<your_bitbucket_group_or_name>/<your_bitbucket_project>.git`
3. 使用您的 Bitbucket 用户名填写**授权**字段,并将应用密码作为**密**。
4. 择**添加推送镜像**以保存配置。
1.一个具有_Repository Write_ 项的 [Bitbucket 用密](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)。
2. 填写**Git 远程存放庫 URL**`https://bitbucket.org/<your_bitbucket_group_or_name>/<your_bitbucket_project>.git`
3. 使用您的 Bitbucket 使用者名填写**授权**字段,並将應用密碼作為**密**。
4. 择**添加推送镜像**以保存配置。
仓库会很快行推送。要强制推送,请选择**立即同步**按钮。
存放庫会很快行推送。要强制推送,請選择**立即同步**按钮。
### 镜像有的 ssh 仓库
### 镜像有的 ssh 存放庫
当前,Gitea 不支持从 ssh 仓库进行镜像。如果您想要镜像一个 ssh 仓库,您需要将其转换 http 仓库。您可以使用以下命令将有的 ssh 仓库转换 http 仓库
当前,Gitea 不支持从 ssh 存放庫進行镜像。如果您想要镜像一个 ssh 存放庫,您需要将其转换 http 存放庫。您可以使用以下命令将有的 ssh 存放庫转换 http 存放庫
1. 确保运行 gitea 的用户有权限访问您试图从 shell 镜像到的 git 仓库
2. 在 Web 界面的版本库设置 > git 钩子中镜像添加一个接收后钩子。
1. 确保运行 gitea 的使用者有权限访问您试图从 shell 镜像到的 git 存放庫
2. 在 Web 界面的版本库设置 > git 钩子中镜像添加一个接收后钩子。
```
#!/usr/bin/env bash
@@ -6,62 +6,62 @@ aliases:
- /zh-tw/template-repositories
---
# 模板仓库
# 模板存放庫
Gitea `1.11.0` 及以上版本引入了模板仓库,并且其中一个实的功能是自动展开模板文件中的特定变量。
Gitea `1.11.0` 及以上版本引入了模板存放庫,並且其中一个实的功能是自动展开模板文件中的特定变量。
要告诉 Gitea 哪些文件需要展开,您必在模板仓库`.gitea`中包含一个 `template` 文件。
要告诉 Gitea 哪些文件需要展开,您必在模板存放庫`.gitea`中包含一个 `template` 文件。
Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作其 glob 语法。它与传统的 `.gitignore` 语法非常相似,但可能存在细微的差异。
Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作其 glob 语法。它与传统的 `.gitignore` 语法非常相似,但可能存在细微的差异。
## `.gitea/template` 文件示例
所有路径都是相对于仓库的根目
所有路径都是相對於存放庫的根目
```gitignore
# 仓库中的所有 .go 文件
# 存放庫中的所有 .go 文件
**.go
# text 目中的所有文本文件
# text 目中的所有文本文件
text/*.txt
# 特定文件
a/b/c/d.json
# 匹配批处理文件的大小写变
# 匹配批处理文件的大小写变
**.[bB][aA][tT]
```
**注意:** 当从模板生成仓库时,`.gitea`中的 `template` 文件将被删除。
**注意:** 当从模板生成存放庫时,`.gitea`中的 `template` 文件将被删除。
## 参数展开
## 參數展开
在与上述通配符匹配的任何文件中,将会扩展某些变量。
文件名和路径的匹配也可以被扩展,且会经谨慎的清理处理,以支持跨平台的文件系统。
文件名和路径的匹配也可以被扩展,且会经谨慎的清理处理,以支持跨平台的文件系统。
所有变量都必采用`$VAR``${VAR}`的形式。要转义扩展,使用双重`$$`,例如`$$VAR``$${VAR}`
所有变量都必采用`$VAR``${VAR}`的形式。要转义扩展,使用双重`$$`,例如`$$VAR``$${VAR}`
| 变量 | 扩展 | 可转换 |
| 变量 | 扩展 | 可转换 |
| -------------------- | ----------------------------- | ------ |
| REPO_NAME | 生成的仓库名称 | ✓ |
| TEMPLATE_NAME | 模板仓库名称 | ✓ |
| REPO_DESCRIPTION | 生成的仓库描述 | ✘ |
| TEMPLATE_DESCRIPTION | 模板仓库描述 | ✘ |
| REPO_OWNER | 生成的仓库所有者 | ✓ |
| TEMPLATE_OWNER | 模板仓库所有者 | ✓ |
| REPO_LINK | 生成的仓库链接 | ✘ |
| TEMPLATE_LINK | 模板仓库链接 | ✘ |
| REPO_HTTPS_URL | 生成的仓库的 HTTP(S) 克隆链接 | ✘ |
| TEMPLATE_HTTPS_URL | 模板仓库的 HTTP(S) 克隆链接 | ✘ |
| REPO_SSH_URL | 生成的仓库的 SSH 克隆链接 | ✘ |
| TEMPLATE_SSH_URL | 模板仓库的 SSH 克隆链接 | ✘ |
| REPO_NAME | 生成的存放庫名稱 | ✓ |
| TEMPLATE_NAME | 模板存放庫名稱 | ✓ |
| REPO_DESCRIPTION | 生成的存放庫描述 | ✘ |
| TEMPLATE_DESCRIPTION | 模板存放庫描述 | ✘ |
| REPO_OWNER | 生成的存放庫所有者 | ✓ |
| TEMPLATE_OWNER | 模板存放庫所有者 | ✓ |
| REPO_LINK | 生成的存放庫链接 | ✘ |
| TEMPLATE_LINK | 模板存放庫链接 | ✘ |
| REPO_HTTPS_URL | 生成的存放庫的 HTTP(S) 克隆链接 | ✘ |
| TEMPLATE_HTTPS_URL | 模板存放庫的 HTTP(S) 克隆链接 | ✘ |
| REPO_SSH_URL | 生成的存放庫的 SSH 克隆链接 | ✘ |
| TEMPLATE_SSH_URL | 模板存放庫的 SSH 克隆链接 | ✘ |
## 转换器 :robot:
Gitea `1.12.0` 添加了一些转换器以用于上述适用的变量。
Gitea `1.12.0` 添加了一些转换器以用于上述适用的变量。
例如,要以 `PASCAL`-case 获取 `REPO_NAME`,你的模板使用 `${REPO_NAME_PASCAL}`
例如,要以 `PASCAL`-case 获取 `REPO_NAME`,你的模板使用 `${REPO_NAME_PASCAL}`
`go-sdk` 传递给可用的转换器的效果如下...
@@ -8,10 +8,10 @@ aliases:
# Webhooks
Gitea 支持用于仓库事件的 Webhooks。这可以在仓库管理员在设置页面 `/:username/:reponame/settings/hooks`行配置。Webhooks 可以基于组织和整个系统行配置。
所有事件推送都是 POST 求。目前支持:
Gitea 支持用于存放庫事件的 Webhooks。这可以在存放庫管理员在设置页面 `/:username/:reponame/settings/hooks`行配置。Webhooks 可以基于組織和整个系统行配置。
所有事件推送都是 POST 求。目前支持:
- Gitea (也可以是 GET 求)
- Gitea (也可以是 GET 求)
- Gogs
- Slack
- Discord
@@ -24,7 +24,7 @@ Gitea 支持用于仓库事件的 Webhooks。这可以在仓库管理员在设
### 事件信息
**警告**:自 Gitea 1.13.0 版起,payload 中的 `secret` 字段已被弃用,将在 1.14.0 版中移除:https://github.com/go-gitea/gitea/issues/11755
**警告**:自 Gitea 1.13.0 版起,payload 中的 `secret` 字段已被弃用,将在 1.14.0 版中移除:https://github.com/go-gitea/gitea/issues/11755
以下是 Gitea 将发送给 payload URL 的事件信息示例:
@@ -110,17 +110,17 @@ X-Gitea-Event: push
### 示例
这是一个示例,演示如何使用 Webhooks 在推送求到达仓库时运行一个 php 脚本。
在你的仓库设置中,在 Webhooks 下,设置一个如下的 Gitea webhook
这是一个示例,演示如何使用 Webhooks 在推送求到达存放庫时运行一个 php 脚本。
在你的存放庫设置中,在 Webhooks 下,设置一个如下的 Gitea webhook
- 目标 URLhttp://mydomain.com/webhook.php
- HTTP 方法:POST
- POST Content Typeapplication/json
- Secret123
- 触发条件:推送事件
- 激活:勾
- 激活:勾
在在你的服务器上建 php 文件 webhook.php。
在在你的服务器上建 php 文件 webhook.php。
```php
<?php
@@ -178,8 +178,8 @@ if (json_last_error() !== JSON_ERROR_NONE) {
// success, do something
```
在 Webhook 设置中有一个“测试推送(Test Delivery)”按钮,可以测试配置,有一个“最近推送记录(Recent Deliveries)”的列表。
在 Webhook 设置中有一个“测试推送(Test Delivery)”按钮,可以测试配置,有一个“最近推送记录(Recent Deliveries)”的列表。
### 授权头(Authorization header
**从 1.19 版本开始**Gitea 的 Webhook 可以配置向 Webhook 目标发送一个 [授权头(authorization header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)。
**从 1.19 版本开始**Gitea 的 Webhook 可以配置向 Webhook 目标发送一个 [授权头(authorization header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)。