mirror of
https://gitea.com/gitea/docs.git
synced 2026-09-20 04:58:52 +00:00
docs: add zh-tw folder (#195)
Signed-off-by: appleboy <[email protected]> Reviewed-on: https://gitea.com/gitea/docs/pulls/195 Reviewed-by: Lunny Xiao <[email protected]> Co-authored-by: appleboy <[email protected]> Co-committed-by: appleboy <[email protected]>
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
---
|
||||
date: "2023-03-25T00:00:00+00:00"
|
||||
slug: "alpine"
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Alpine 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Alpine](https://pkgs.alpinelinux.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Alpine 註冊表,您需要使用像 `curl` 這樣的 HTTP 客戶端來上傳,並使用像 `apk` 這樣的套件管理器來消費套件。
|
||||
|
||||
以下範例使用 `apk`。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊 Alpine 註冊表,請將 URL 添加到已知的 apk 來源列表中(`/etc/apk/repositories`):
|
||||
|
||||
```
|
||||
https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------------ | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `branch` | 要使用的分支。 |
|
||||
| `repository` | 要使用的倉庫。 |
|
||||
|
||||
如果註冊表是私有的,請在 URL 中提供憑證。您可以使用密碼或 [個人訪問令牌](development/api-usage.md#authentication):
|
||||
|
||||
```
|
||||
https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
|
||||
```
|
||||
|
||||
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` 操作,請求體中包含套件內容。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `branch` | 分支可能與操作系統的發行版本匹配,例如:`v3.17`。 |
|
||||
| `repository` | 倉庫可以用來[分組套件](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或類似的。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.apk \
|
||||
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
您不能將同名文件兩次發布到套件中。您必須先刪除現有的套件文件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件名稱、版本、分支、倉庫或架構無效。 |
|
||||
| `409 Conflict` | 套件中已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 刪除套件
|
||||
|
||||
要刪除 Alpine 套件,請執行 HTTP `DELETE` 操作。如果沒有文件剩餘,這也會刪除套件版本。
|
||||
|
||||
```
|
||||
DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `branch` | 要使用的分支。 |
|
||||
| `repository` | 要使用的倉庫。 |
|
||||
| `architecture` | 套件架構。 |
|
||||
| `filename` | 要刪除的文件。 |
|
||||
|
||||
使用 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 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從 Alpine 註冊表安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
# 使用最新版本
|
||||
apk add {package_name}
|
||||
# 使用特定版本
|
||||
apk add {package_name}={package_version}
|
||||
```
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
date: "2023-05-15T00:00:00+00:00"
|
||||
slug: "arch"
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Arch 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Arch](https://archlinux.org/packages/) 套件。該註冊表可以作為一個完全運行的 [Arch linux 鏡像](https://wiki.archlinux.org/title/mirrors),直接連接到 `/etc/pacman.conf`。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Arch 註冊表,您需要使用像 `curl` 這樣的 HTTP 客戶端來上傳,並使用像 `pacman` 這樣的套件管理器來消費套件。
|
||||
|
||||
以下範例使用 `pacman`。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
在您可以使用套件註冊表之前,您需要下載套件驗證密鑰並將註冊表添加到 pacman 配置中。
|
||||
|
||||
下載套件驗證密鑰。
|
||||
|
||||
```sh
|
||||
wget https://gitea.example.com/api/packages/{owner}/arch/repository.key
|
||||
```
|
||||
|
||||
顯示密鑰的 ID(帶有十六進制字符的長行)。
|
||||
|
||||
```sh
|
||||
gpg --show-keys repository.key
|
||||
```
|
||||
|
||||
將密鑰添加到 pacman 並簽署它(使用上一步中的密鑰 ID)。
|
||||
|
||||
```sh
|
||||
pacman-key --add repository.key
|
||||
pacman-key --lsign-key {key id}
|
||||
```
|
||||
|
||||
現在將註冊表配置添加到 `/etc/pacman.conf`。
|
||||
|
||||
```conf
|
||||
[{owner}.gitea.example.com]
|
||||
SigLevel = Required
|
||||
Server = https://gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `repository` | 要使用的倉庫。 |
|
||||
| `architecture` | 要使用的架構。 |
|
||||
|
||||
請參閱擁有者的套件概述以查看可用的 `repository` 和 `architecture`。
|
||||
|
||||
如果註冊表是私有的,請在 URL 中提供憑證。您可以使用密碼或 [個人訪問令牌](development/api-usage.md#authentication):
|
||||
|
||||
```
|
||||
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` | 倉庫可以用來分組套件或只是 `core` 或類似的。 |
|
||||
|
||||
使用 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
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
您不能將同名文件兩次發布到套件中。您必須先刪除現有的套件文件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ------------------------------------------ |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件的某些部分無效。錯誤消息包含更多信息。 |
|
||||
| `409 Conflict` | 套件中已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要安裝套件,請運行 pacman 同步命令:
|
||||
|
||||
```sh
|
||||
pacman -Sy {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------- |
|
||||
| `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` | 未找到套件或文件。 |
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
date: "2022-11-20T00:00:00+00:00"
|
||||
slug: "cargo"
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Cargo 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Cargo](https://doc.rust-lang.org/stable/cargo/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Cargo 套件註冊表,您需要 [Rust 和 Cargo](https://www.rust-lang.org/tools/install)。
|
||||
|
||||
Cargo 將可用套件的信息存儲在一個 git 存儲庫中的套件索引中。
|
||||
此存儲庫是使用註冊表所必需的。
|
||||
以下部分描述了如何創建它。
|
||||
|
||||
## 索引存儲庫
|
||||
|
||||
Cargo 將可用套件的信息存儲在一個 git 存儲庫中的套件索引中。
|
||||
在 Gitea 中,此存儲庫具有特殊名稱 `_cargo-index`。
|
||||
上傳套件後,其元數據會自動寫入索引。
|
||||
此存儲庫的內容不應手動修改。
|
||||
|
||||
用戶或組織的套件設置頁面允許創建索引存儲庫以及配置文件。
|
||||
如果需要,此操作將重寫配置文件。
|
||||
這在例如 Gitea 實例域名更改時很有用。
|
||||
|
||||
如果出現 Gitea 中存儲的套件與索引存儲庫中的信息不同步的情況,設置頁面允許重建索引存儲庫。
|
||||
此操作會遍歷註冊表中的所有套件並將其信息寫入索引。
|
||||
如果有很多套件,這個過程可能需要一些時間。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,必須更新 Cargo 配置。
|
||||
將以下文本添加到當前用戶主目錄中的配置文件(例如 `~/.cargo/config.toml`):
|
||||
|
||||
```
|
||||
[registry]
|
||||
default = "gitea"
|
||||
|
||||
[registries.gitea]
|
||||
index = "sparse+https://gitea.example.com/api/packages/{owner}/cargo/" # Sparse index
|
||||
# index = "https://gitea.example.com/{owner}/_cargo-index.git" # Git
|
||||
|
||||
# [net]
|
||||
# git-fetch-with-cli = true
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
如果註冊表是私有的或您想發布新套件,您必須配置您的憑證。
|
||||
將憑證部分添加到當前用戶主目錄中的憑證文件(例如 `~/.cargo/credentials.toml`):
|
||||
|
||||
```
|
||||
[registries.gitea]
|
||||
token = "Bearer {token}"
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | ------------------------------------------------------------ |
|
||||
| `token` | 您的 [個人訪問令牌](development/api-usage.md#authentication) |
|
||||
|
||||
## Git vs Sparse
|
||||
|
||||
目前,cargo 支持兩種從註冊表中獲取 crate 的方式:Git 索引和 sparse 索引。
|
||||
Sparse 索引是最新的方法,與 git 相比,在更新 crate 時提供了更好的性能。
|
||||
自 Rust 1.68 起,sparse 是 crates.io 的默認方法。
|
||||
|
||||
## 發布套件
|
||||
|
||||
在您的項目中運行以下命令來發布套件:
|
||||
|
||||
```shell
|
||||
cargo publish
|
||||
```
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
cargo add {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
cargo publish
|
||||
cargo add
|
||||
cargo install
|
||||
cargo yank
|
||||
cargo unyank
|
||||
cargo search
|
||||
```
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
date: "2023-01-20T00:00:00+00:00"
|
||||
slug: "chef"
|
||||
sidebar_position: 10
|
||||
---
|
||||
|
||||
# Chef 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Chef](https://chef.io/) 食譜。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Chef 套件註冊表,您必須使用 [`knife`](https://docs.chef.io/workstation/knife/)。
|
||||
|
||||
## 認證
|
||||
|
||||
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[:supermarket_site] = 'https://gitea.example.com/api/packages/{owner}/chef'
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布 Chef 套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
knife supermarket share {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
knife supermarket install {package_name}
|
||||
```
|
||||
|
||||
您可以選擇指定套件版本:
|
||||
|
||||
```shell
|
||||
knife supermarket install {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` | 套件版本。 |
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "composer"
|
||||
sidebar_position: 15
|
||||
---
|
||||
|
||||
# Composer 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Composer](https://getcomposer.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Composer 套件註冊表,您可以使用 [Composer](https://getcomposer.org/download/) 來消費套件,並使用像 `curl` 這樣的 HTTP 上傳客戶端來發布套件。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布 Composer 套件,請執行 HTTP PUT 操作,請求體中包含套件內容。
|
||||
套件內容必須是包含 `composer.json` 文件的壓縮 PHP 項目。
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/composer
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
如果 `composer.json` 文件不包含 `version` 屬性,您必須將其作為查詢參數提供:
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/composer?version={x.y.z}
|
||||
```
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/project.zip \
|
||||
https://gitea.example.com/api/packages/testuser/composer
|
||||
```
|
||||
|
||||
或者將套件版本作為查詢參數指定:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/project.zip \
|
||||
https://gitea.example.com/api/packages/testuser/composer?version=1.0.3
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要將其添加到 Composer 的 `config.json` 文件中(通常可以在 `<user-home-dir>/.composer/config.json` 下找到):
|
||||
|
||||
```json
|
||||
{
|
||||
"repositories": [
|
||||
{
|
||||
"type": "composer",
|
||||
"url": "https://gitea.example.com/api/packages/{owner}/composer"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
要使用憑證訪問套件註冊表,您必須在 `auth.json` 文件中指定它們,如下所示:
|
||||
|
||||
```json
|
||||
{
|
||||
"http-basic": {
|
||||
"gitea.example.com": {
|
||||
"username": "{username}",
|
||||
"password": "{password}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ---------- | ------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼或個人訪問令牌。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
composer require {package_name}
|
||||
```
|
||||
|
||||
您可以選擇指定套件版本:
|
||||
|
||||
```shell
|
||||
composer require {package_name}:{package_version}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | ---------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "conan"
|
||||
sidebar_position: 20
|
||||
---
|
||||
|
||||
# Conan 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Conan](https://conan.io/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Conan 套件註冊表,您需要使用 [conan](https://conan.io/downloads.html) 命令行工具來消費和發布套件。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要配置一個新的 Conan 遠程:
|
||||
|
||||
```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#authentication) 代替密碼。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
conan remote add gitea https://gitea.example.com/api/packages/testuser/conan
|
||||
conan user --remote gitea --password password123 testuser
|
||||
```
|
||||
|
||||
## 發布套件
|
||||
|
||||
運行以下命令來發布 Conan 套件:
|
||||
|
||||
```shell
|
||||
conan upload --remote={remote} {recipe}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------- | -------------- |
|
||||
| `remote` | 遠程名稱。 |
|
||||
| `recipe` | 要上傳的配方。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
conan upload --remote=gitea ConanPackage/1.2@gitea/final
|
||||
```
|
||||
|
||||
您不能將同名文件兩次發布到套件中。您必須先刪除現有的套件或文件。
|
||||
|
||||
Gitea Conan 套件註冊表完全支持 [修訂](https://docs.conan.io/en/latest/versioning/revisions.html)。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 Conan 套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
conan install --remote={remote} {recipe}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------- | -------------- |
|
||||
| `remote` | 遠程名稱。 |
|
||||
| `recipe` | 要下載的配方。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
conan install --remote=gitea ConanPackage/1.2@gitea/final
|
||||
```
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
conan install
|
||||
conan get
|
||||
conan info
|
||||
conan search
|
||||
conan upload
|
||||
conan user
|
||||
conan download
|
||||
conan remove
|
||||
```
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
date: "2022-12-28T00:00:00+00:00"
|
||||
slug: "conda"
|
||||
sidebar_position: 25
|
||||
---
|
||||
|
||||
# Conda 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Conda](https://docs.conda.io/en/latest/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Conda 套件註冊表,您需要使用 [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html)。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表並提供憑證,請編輯您的 `.condarc` 文件:
|
||||
|
||||
```yaml
|
||||
channel_alias: https://gitea.example.com/api/packages/{owner}/conda
|
||||
channels:
|
||||
- https://gitea.example.com/api/packages/{owner}/conda
|
||||
default_channels:
|
||||
- https://gitea.example.com/api/packages/{owner}/conda
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
請參閱 [官方文檔](https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html) 以了解各個設置的說明。
|
||||
|
||||
如果您需要提供憑證,您可以將它們嵌入到頻道 URL 中(`https://user:[email protected]/...`)。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布套件,請執行 HTTP PUT 操作,請求體中包含套件內容。
|
||||
|
||||
```
|
||||
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)。(可選) |
|
||||
| `filename` | 文件名。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/package-1.0.conda \
|
||||
https://gitea.example.com/api/packages/testuser/conda/package-1.0.conda
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令之一:
|
||||
|
||||
```shell
|
||||
conda install {package_name}
|
||||
conda install {package_name}={package_version}
|
||||
conda install -c {channel} {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
| `channel` | 套件的頻道。(可選) |
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "container"
|
||||
sidebar_position: 30
|
||||
---
|
||||
|
||||
# 容器註冊表
|
||||
|
||||
為您的用戶或組織發布符合 [Open Container Initiative](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#authentication) 代替密碼。
|
||||
|
||||
## 映像命名規則
|
||||
|
||||
映像必須遵循以下命名規則:
|
||||
|
||||
`{registry}/{owner}/{image}`
|
||||
|
||||
在構建您的 docker 映像時,使用上述命名規則,這看起來像這樣:
|
||||
|
||||
```shell
|
||||
# 使用標籤構建映像
|
||||
docker build -t {registry}/{owner}/{image}:{tag} .
|
||||
# 使用標籤命名現有映像
|
||||
docker tag {some-existing-image}:{tag} {registry}/{owner}/{image}:{tag}
|
||||
```
|
||||
|
||||
其中您的註冊表是您的 gitea 實例的域名(例如 gitea.example.com)。
|
||||
例如,以下是所有者 `testuser` 的所有有效映像名稱:
|
||||
|
||||
`gitea.example.com/testuser/myimage`
|
||||
|
||||
`gitea.example.com/testuser/my-image`
|
||||
|
||||
`gitea.example.com/testuser/my/image`
|
||||
|
||||
:::note
|
||||
註冊表僅支持不區分大小寫的標籤名稱。因此 `image:tag` 和 `image:Tag` 被視為相同的映像和標籤。
|
||||
:::
|
||||
|
||||
## 推送映像
|
||||
|
||||
通過執行以下命令推送映像:
|
||||
|
||||
```shell
|
||||
docker push gitea.example.com/{owner}/{image}:{tag}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 映像的擁有者。 |
|
||||
| `image` | 映像的名稱。 |
|
||||
| `tag` | 映像的標籤。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
docker push gitea.example.com/testuser/myimage:latest
|
||||
```
|
||||
|
||||
## 拉取映像
|
||||
|
||||
通過執行以下命令拉取映像:
|
||||
|
||||
```shell
|
||||
docker pull gitea.example.com/{owner}/{image}:{tag}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 映像的擁有者。 |
|
||||
| `image` | 映像的名稱。 |
|
||||
| `tag` | 映像的標籤。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
docker pull gitea.example.com/testuser/myimage:latest
|
||||
```
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
date: "2023-01-01T00:00:00+00:00"
|
||||
slug: "cran"
|
||||
sidebar_position: 35
|
||||
---
|
||||
|
||||
# CRAN 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [R](https://www.r-project.org/) 套件到類似 [CRAN](https://cran.r-project.org/) 的註冊表。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 CRAN 套件註冊表,您需要安裝 [R](https://cran.r-project.org/)。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要將其添加到 `Rprofile.site`,可以是系統級別、用戶級別(`~/.Rprofile`)或項目級別:
|
||||
|
||||
```
|
||||
options("repos" = c(getOption("repos"), c(gitea="https://gitea.example.com/api/packages/{owner}/cran")))
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
如果您需要提供憑證,您可以將它們嵌入到 URL 中(`https://user:[email protected]/...`)。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布 R 套件,請執行 HTTP `PUT` 操作,請求體中包含套件內容。
|
||||
|
||||
源套件:
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/cran/src
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
二進制套件:
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/cran/bin?platform={platform}&rversion={rversion}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ---------- | ----------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `platform` | 平台名稱。 |
|
||||
| `rversion` | 二進制的 R 版本。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/package.zip \
|
||||
https://gitea.example.com/api/packages/testuser/cran/bin?platform=windows&rversion=4.2
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 R 套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
install.packages("{package_name}")
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
install.packages("testpackage")
|
||||
```
|
||||
@@ -0,0 +1,123 @@
|
||||
---
|
||||
date: "2023-01-07T00:00:00+00:00"
|
||||
slug: "debian"
|
||||
sidebar_position: 40
|
||||
---
|
||||
|
||||
# Debian 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Debian](https://www.debian.org/distrib/packages) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Debian 註冊表,您需要使用像 `curl` 這樣的 HTTP 客戶端來上傳,並使用像 `apt` 這樣的套件管理器來消費套件。
|
||||
|
||||
以下範例使用 `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
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| -------------- | ---------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `distribution` | 要使用的發行版。 |
|
||||
| `component` | 要使用的組件。 |
|
||||
|
||||
如果註冊表是私有的,請在 URL 中提供憑證。您可以使用密碼或 [個人訪問令牌](development/api-usage.md#authentication):
|
||||
|
||||
```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 所知:
|
||||
|
||||
```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` 操作,請求體中包含套件內容。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{component}/upload
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `distribution` | 發行版可能與操作系統的發行名稱匹配,例如:`bionic`。 |
|
||||
| `component` | 組件可以用來分組套件或只是 `main` 或類似的。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.deb \
|
||||
https://gitea.example.com/api/packages/testuser/debian/pool/bionic/main/upload
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
如果已經存在同名、同版本、同發行版、同組件和同架構的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 已存在具有相同參數組合的套件文件。 |
|
||||
|
||||
## 刪除套件
|
||||
|
||||
要刪除 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` | 套件架構。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_token_or_password -X DELETE \
|
||||
https://gitea.example.com/api/packages/testuser/debian/pool/bionic/main/test-package/1.0.0/amd64
|
||||
```
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從 Debian 註冊表安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
# 使用最新版本
|
||||
apt install {package_name}
|
||||
# 使用特定版本
|
||||
apt install {package_name}={package_version}
|
||||
```
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "generic"
|
||||
sidebar_position: 500
|
||||
---
|
||||
|
||||
# 通用套件註冊表
|
||||
|
||||
為您的用戶或組織發布通用文件,如發布的二進制文件或其他輸出。
|
||||
|
||||
## 認證到套件註冊表
|
||||
|
||||
要認證到套件註冊表,您需要提供[自定義 HTTP 標頭或使用 HTTP 基本認證](development/api-usage.md#authentication)。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布通用套件,請執行 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` | 套件版本,一個沒有尾隨或前導空格的非空字符串。 |
|
||||
| `file_name` | 文件名。它只能包含小寫字母(`a-z`)、大寫字母(`A-Z`)、數字(`0-9`)、點(`.`)、連字符(`-`)、加號(`+`)或下劃線(`_`)。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.bin \
|
||||
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ---------------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件名稱和/或版本和/或文件名無效。 |
|
||||
| `409 Conflict` | 套件中已存在同名文件。 |
|
||||
|
||||
## 下載套件
|
||||
|
||||
要下載通用套件,請執行 HTTP GET 操作。
|
||||
|
||||
```
|
||||
GET https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
| `file_name` | 文件名。 |
|
||||
|
||||
文件內容在響應體中提供。響應內容類型為 `application/octet-stream`。
|
||||
|
||||
使用 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 狀態碼 | 含義 |
|
||||
| --------------- | ------------------ |
|
||||
| `200 OK` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件。 |
|
||||
|
||||
## 刪除套件
|
||||
|
||||
要刪除通用套件,請執行 HTTP DELETE 操作。這將刪除此版本的所有文件。
|
||||
|
||||
```
|
||||
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
|
||||
使用 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
|
||||
```
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ---------------- | ------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件。 |
|
||||
|
||||
## 刪除套件文件
|
||||
|
||||
要刪除通用套件的文件,請執行 HTTP DELETE 操作。如果沒有文件剩餘,這也會刪除套件版本。
|
||||
|
||||
```
|
||||
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{filename}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
| `filename` | 文件名。 |
|
||||
|
||||
使用 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 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件。 |
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
date: "2023-05-10T00:00:00+00:00"
|
||||
slug: "go"
|
||||
sidebar_position: 45
|
||||
---
|
||||
|
||||
# Go 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 Go 套件。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布 Go 套件,請執行 HTTP `PUT` 操作,請求體中包含套件內容。
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
套件必須遵循[文檔結構](https://go.dev/ref/mod#zip-files)。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/go/upload
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
要認證到套件註冊表,您需要提供[自定義 HTTP 標頭或使用 HTTP 基本認證](development/api-usage.md#authentication):
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.zip \
|
||||
https://gitea.example.com/api/packages/testuser/go/upload
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | -------------------------- |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 已存在具有相同名稱的套件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要安裝 Go 套件,請指示 Go 使用套件註冊表作為代理:
|
||||
|
||||
```shell
|
||||
# 使用最新版本
|
||||
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}
|
||||
# 或者
|
||||
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}@latest
|
||||
# 使用特定版本
|
||||
GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_name}@{package_version}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
|
||||
如果套件的擁有者是私有的,您需要[提供憑證](https://go.dev/ref/mod#private-module-proxy-auth)。
|
||||
|
||||
有關 `GOPROXY` 環境變量以及如何防止數據洩漏的更多信息,請參閱[文檔](https://go.dev/ref/mod#private-modules)。
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
date: "2022-04-14T00:00:00+00:00"
|
||||
slug: "helm"
|
||||
sidebar_position: 50
|
||||
---
|
||||
|
||||
# Helm Chart 註冊表
|
||||
|
||||
為您的用戶或組織發布 [Helm](https://helm.sh/) 圖表。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Helm Chart 註冊表,請使用簡單的 HTTP 客戶端,如 `curl` 或 [`helm cm-push`](https://github.com/chartmuseum/helm-push/) 插件。
|
||||
|
||||
## 發布套件
|
||||
|
||||
通過運行以下命令發布套件:
|
||||
|
||||
```shell
|
||||
curl --user {username}:{password} -X POST --upload-file ./{chart_file}.tgz https://gitea.example.com/api/packages/{owner}/helm/api/charts
|
||||
```
|
||||
|
||||
或使用 `helm cm-push` 插件:
|
||||
|
||||
```shell
|
||||
helm repo add --username {username} --password {password} {repo} https://gitea.example.com/api/packages/{owner}/helm
|
||||
helm cm-push ./{chart_file}.tgz {repo}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。 |
|
||||
| `repo` | 倉庫的名稱。 |
|
||||
| `chart_file` | Helm Chart 存檔。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從註冊表中安裝 Helm 圖表,請執行以下命令:
|
||||
|
||||
```shell
|
||||
helm repo add --username {username} --password {password} {repo} https://gitea.example.com/api/packages/{owner}/helm
|
||||
helm repo update
|
||||
helm install {name} {repo}/{chart}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ---------- | ------------------------------- |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼或個人訪問令牌。 |
|
||||
| `repo` | 倉庫的名稱。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `name` | 本地名稱。 |
|
||||
| `chart` | Helm Chart 的名稱。 |
|
||||
@@ -0,0 +1,154 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "maven"
|
||||
sidebar_position: 60
|
||||
---
|
||||
|
||||
# Maven 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Maven](https://maven.apache.org) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Maven 套件註冊表,您可以使用 [Maven](https://maven.apache.org/install.html) 或 [Gradle](https://gradle.org/install/)。
|
||||
以下範例使用 `Maven` 和 `Gradle Groovy`。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您首先需要將訪問令牌添加到 [`settings.xml`](https://maven.apache.org/settings.html) 文件中:
|
||||
|
||||
```xml
|
||||
<settings>
|
||||
<servers>
|
||||
<server>
|
||||
<id>gitea</id>
|
||||
<configuration>
|
||||
<httpHeaders>
|
||||
<property>
|
||||
<name>Authorization</name>
|
||||
<value>token {access_token}</value>
|
||||
</property>
|
||||
</httpHeaders>
|
||||
</configuration>
|
||||
</server>
|
||||
</servers>
|
||||
</settings>
|
||||
```
|
||||
|
||||
之後將以下部分添加到您的項目 `pom.xml` 文件中:
|
||||
|
||||
```xml
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>gitea</id>
|
||||
<url>https://gitea.example.com/api/packages/{owner}/maven</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>gitea</id>
|
||||
<url>https://gitea.example.com/api/packages/{owner}/maven</url>
|
||||
</repository>
|
||||
<snapshotRepository>
|
||||
<id>gitea</id>
|
||||
<url>https://gitea.example.com/api/packages/{owner}/maven</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------------------------------------------------------- |
|
||||
| `access_token` | 您的 [個人訪問令牌](development/api-usage.md#authentication)。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
### Gradle 變體
|
||||
|
||||
當您計劃在項目中添加來自 Gitea 實例的一些套件時,應該將其添加到倉庫部分:
|
||||
|
||||
```groovy
|
||||
repositories {
|
||||
// 其他倉庫
|
||||
maven { url "https://gitea.example.com/api/packages/{owner}/maven" }
|
||||
}
|
||||
```
|
||||
|
||||
在 Groovy gradle 中,您可以在發布部分中包含以下腳本:
|
||||
|
||||
```groovy
|
||||
publishing {
|
||||
// 發布的其他設置
|
||||
repositories {
|
||||
maven {
|
||||
name = "Gitea"
|
||||
url = uri("https://gitea.example.com/api/packages/{owner}/maven")
|
||||
|
||||
credentials(HttpHeaderCredentials) {
|
||||
name = "Authorization"
|
||||
value = "token {access_token}"
|
||||
}
|
||||
|
||||
authentication {
|
||||
header(HttpHeaderAuthentication)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布套件,只需運行:
|
||||
|
||||
```shell
|
||||
mvn deploy
|
||||
```
|
||||
|
||||
或者在使用 gradle 的情況下,調用帶有任務 `publishAllPublicationsToGiteaRepository` 的 `gradle`:
|
||||
|
||||
```groovy
|
||||
./gradlew publishAllPublicationsToGiteaRepository
|
||||
```
|
||||
|
||||
如果您想將預構建的套件發布到註冊表,可以使用 [`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` | 套件的擁有者。 |
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 Maven 套件,請在項目 `pom.xml` 文件中添加新的依賴項:
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>com.test.package</groupId>
|
||||
<artifactId>test_project</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
在 gradle groovy 中類似:
|
||||
|
||||
```groovy
|
||||
implementation "com.test.package:test_project:1.0.0"
|
||||
```
|
||||
|
||||
之後運行:
|
||||
|
||||
```shell
|
||||
mvn install
|
||||
```
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
mvn install
|
||||
mvn deploy
|
||||
mvn dependency:get:
|
||||
```
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "npm"
|
||||
sidebar_position: 70
|
||||
---
|
||||
|
||||
# NPM 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [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/) 本身。
|
||||
|
||||
註冊表支持[範圍](https://docs.npmjs.com/misc/scope/)和非範圍套件。
|
||||
|
||||
以下範例使用 `npm` 工具和範圍 `@test`。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要配置一個新的包源。
|
||||
|
||||
```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#authentication)。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
npm config set @test: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 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` | 套件版本。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
npm unpublish @test/test_package
|
||||
npm unpublish @test/[email protected]
|
||||
```
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
npm install {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ---------- |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
npm install @test/test_package
|
||||
```
|
||||
|
||||
## 標記套件
|
||||
|
||||
註冊表支持[版本標籤](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` | 標籤名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
npm dist-tag add [email protected] release
|
||||
```
|
||||
|
||||
標籤名稱不能是有效版本。所有可解析為版本的標籤名稱都會被拒絕。
|
||||
|
||||
## 搜索套件
|
||||
|
||||
註冊表支持[搜索](https://docs.npmjs.com/cli/v7/commands/npm-search/),但不支持特殊搜索限定符,如 `author:gitea`。
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
npm install
|
||||
npm ci
|
||||
npm publish
|
||||
npm unpublish
|
||||
npm dist-tag
|
||||
npm view
|
||||
npm search
|
||||
```
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "nuget"
|
||||
sidebar_position: 80
|
||||
---
|
||||
|
||||
# NuGet 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [NuGet](https://www.nuget.org/) 套件。套件註冊表支持 V2 和 V3 API 協議,您還可以使用 [NuGet 符號包](https://docs.microsoft.com/zh-tw/nuget/create-packages/symbol-packages-snupkg)。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 NuGet 套件註冊表,您可以使用命令行界面工具以及各種 IDE(如 Visual Studio)中的 NuGet 功能。
|
||||
有關 NuGet 客戶端的更多信息,請參閱[官方文檔](https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools)。
|
||||
以下範例使用 `dotnet 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#authentication) 代替密碼。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
dotnet nuget add source --name gitea --username testuser --password password123 https://gitea.example.com/api/packages/testuser/nuget/index.json
|
||||
```
|
||||
|
||||
您可以在沒有憑證的情況下添加源,並在發布套件時使用 [`--api-key`](https://docs.microsoft.com/zh-tw/dotnet/core/tools/dotnet-nuget-push) 參數。在這種情況下,您需要提供 [個人訪問令牌](development/api-usage.md#authentication)。
|
||||
|
||||
## 發布套件
|
||||
|
||||
運行以下命令來發布套件:
|
||||
|
||||
```shell
|
||||
dotnet nuget push --source {source_name} {package_file}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------------------- |
|
||||
| `source_name` | 所需的源名稱。 |
|
||||
| `package_file` | 套件 `.nupkg` 文件的路徑。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
dotnet nuget push --source gitea test_package.1.0.0.nupkg
|
||||
```
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
### 符號包
|
||||
|
||||
NuGet 套件註冊表支持符號服務器。嵌入在符號包(`.snupkg`)中的 PDB 文件可以被客戶端請求。
|
||||
為此,請將 NuGet 套件註冊表註冊為符號源:
|
||||
|
||||
```
|
||||
https://gitea.example.com/api/packages/{owner}/nuget/symbols
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------------- |
|
||||
| `owner` | 套件註冊表的擁有者。 |
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
https://gitea.example.com/api/packages/testuser/nuget/symbols
|
||||
```
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 NuGet 套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
dotnet add package --source {source_name} --version {package_version} {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ----------------- | -------------- |
|
||||
| `source_name` | 所需的源名稱。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
| `package_version` | 套件版本。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
dotnet add package --source gitea --version 1.0.0 test_package
|
||||
```
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
dotnet add
|
||||
dotnet nuget push
|
||||
dotnet nuget delete
|
||||
```
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "overview"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# 概述
|
||||
|
||||
從 Gitea **1.17** 開始,套件註冊表可以用作常見套件管理器的公共或私有註冊表。
|
||||
|
||||
## 支持的套件管理器
|
||||
|
||||
目前支持以下套件管理器:
|
||||
|
||||
| 名稱 | 語言 | 套件客戶端 |
|
||||
| ---------------------------------------- | ---------- | --------------------------- |
|
||||
| [Alpine](usage/packages/alpine.md) | - | `apk` |
|
||||
| [Arch](usage/packages/arch.md) | - | `pacman` |
|
||||
| [Cargo](usage/packages/cargo.md) | Rust | `cargo` |
|
||||
| [Chef](usage/packages/chef.md) | - | `knife` |
|
||||
| [Composer](usage/packages/composer.md) | PHP | `composer` |
|
||||
| [Conan](usage/packages/conan.md) | C++ | `conan` |
|
||||
| [Conda](usage/packages/conda.md) | - | `conda` |
|
||||
| [Container](usage/packages/container.md) | - | 任何符合 OCI 的客戶端 |
|
||||
| [CRAN](usage/packages/cran.md) | R | - |
|
||||
| [Debian](usage/packages/debian.md) | - | `apt` |
|
||||
| [Generic](usage/packages/generic.md) | - | 任何 HTTP 客戶端 |
|
||||
| [Go](usage/packages/go.md) | Go | `go` |
|
||||
| [Helm](usage/packages/helm.md) | - | 任何 HTTP 客戶端,`cm-push` |
|
||||
| [Maven](usage/packages/maven.md) | Java | `mvn`,`gradle` |
|
||||
| [npm](usage/packages/npm.md) | JavaScript | `npm`,`yarn`,`pnpm` |
|
||||
| [NuGet](usage/packages/nuget.md) | .NET | `nuget` |
|
||||
| [Pub](usage/packages/pub.md) | Dart | `dart`,`flutter` |
|
||||
| [PyPI](usage/packages/pypi.md) | Python | `pip`,`twine` |
|
||||
| [RPM](usage/packages/rpm.md) | - | `yum`,`dnf`,`zypper` |
|
||||
| [RubyGems](usage/packages/rubygems.md) | Ruby | `gem`,`Bundler` |
|
||||
| [Swift](usage/packages/swift.md) | Swift | `swift` |
|
||||
| [Vagrant](usage/packages/vagrant.md) | - | `vagrant` |
|
||||
|
||||
**以下段落僅適用於套件未全局禁用的情況!**
|
||||
|
||||
## 存儲庫-套件
|
||||
|
||||
套件始終屬於擁有者(用戶或組織),而不是存儲庫。
|
||||
要將(已上傳的)套件鏈接到存儲庫,請打開該套件的設置頁面並選擇要鏈接此套件的存儲庫。
|
||||
整個套件將被鏈接,而不僅僅是單個版本。
|
||||
|
||||
鏈接套件會顯示在存儲庫的套件列表中,並在套件網站上顯示指向存儲庫的鏈接(以及指向存儲庫問題的鏈接)。
|
||||
|
||||
## 訪問限制
|
||||
|
||||
| 套件擁有者類型 | 用戶 | 組織 |
|
||||
| -------------- | -------------------------------------------- | -------------------------------------------- |
|
||||
| **讀** 訪問 | 公共,如果用戶也是公共的;否則僅對此用戶可見 | 公共,如果組織是公共的,否則僅對組織成員可見 |
|
||||
| **寫** 訪問 | 僅限擁有者 | 具有管理或寫入訪問權限的組織成員 |
|
||||
|
||||
注意:這些訪問限制[可能會更改](https://github.com/go-gitea/gitea/issues/19270),將通過專用的組織團隊權限添加更細粒度的控制。
|
||||
|
||||
## 創建或上傳套件
|
||||
|
||||
根據套件的類型,使用相應的套件管理器。請查看特定套件管理器的子頁面以獲取說明。
|
||||
|
||||
## 查看套件
|
||||
|
||||
您可以在存儲庫頁面上查看存儲庫的套件。
|
||||
|
||||
1. 轉到存儲庫。
|
||||
1. 在導航欄中轉到 **Packages**。
|
||||
|
||||
要查看有關套件的更多詳細信息,請選擇套件的名稱。
|
||||
|
||||
## 下載套件
|
||||
|
||||
要從存儲庫下載套件:
|
||||
|
||||
1. 在導航欄中轉到 **Packages**。
|
||||
1. 選擇套件的名稱以查看詳細信息。
|
||||
1. 在 **Assets** 部分中,選擇要下載的套件文件的名稱。
|
||||
|
||||
## 刪除套件
|
||||
|
||||
在套件註冊表中發布套件後,您無法編輯它。相反,您必須刪除並重新創建它。
|
||||
|
||||
要從存儲庫中刪除套件:
|
||||
|
||||
1. 在導航欄中轉到 **Packages**。
|
||||
1. 選擇套件的名稱以查看詳細信息。
|
||||
1. 單擊 **Delete package** 以永久刪除套件。
|
||||
|
||||
## 禁用套件註冊表
|
||||
|
||||
套件註冊表會自動啟用。要為單個存儲庫禁用它:
|
||||
|
||||
1. 在導航欄中轉到 **Settings**。
|
||||
1. 禁用 **Enable Repository Packages Registry**。
|
||||
|
||||
禁用套件註冊表不會刪除以前發布的套件。
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
date: "2022-07-31T00:00:00+00:00"
|
||||
slug: "pub"
|
||||
sidebar_position: 90
|
||||
---
|
||||
|
||||
# Pub 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Pub](https://dart.dev/guides/packages) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 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
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
您需要提供您的 [個人訪問令牌](development/api-usage.md#authentication)。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布套件,請編輯 `pubspec.yaml` 並添加以下行:
|
||||
|
||||
```yaml
|
||||
publish_to: https://gitea.example.com/api/packages/{owner}/pub
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
|
||||
現在您可以通過運行以下命令來發布套件:
|
||||
|
||||
```shell
|
||||
dart pub publish
|
||||
```
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 Pub 套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
dart pub add {package_name} --hosted-url=https://gitea.example.com/api/packages/{owner}/pub/
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
# 使用最新版本
|
||||
dart pub add mypackage --hosted-url=https://gitea.example.com/api/packages/testuser/pub/
|
||||
# 指定版本
|
||||
dart pub add mypackage:1.0.8 --hosted-url=https://gitea.example.com/api/packages/testuser/pub/
|
||||
```
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "pypi"
|
||||
sidebar_position: 100
|
||||
---
|
||||
|
||||
# PyPI 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [PyPI](https://pypi.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 PyPI 套件註冊表,您需要使用工具 [pip](https://pypi.org/project/pip/) 來消費和 [twine](https://pypi.org/project/twine/) 來發布套件。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要編輯本地 `~/.pypirc` 文件。添加
|
||||
|
||||
```ini
|
||||
[distutils]
|
||||
index-servers = gitea
|
||||
|
||||
[gitea]
|
||||
repository = https://gitea.example.com/api/packages/{owner}/pypi
|
||||
username = {username}
|
||||
password = {password}
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。 |
|
||||
|
||||
## 發布套件
|
||||
|
||||
運行以下命令來發布套件:
|
||||
|
||||
```shell
|
||||
python3 -m twine upload --repository gitea /path/to/files/*
|
||||
```
|
||||
|
||||
套件文件的擴展名為 `.tar.gz` 和 `.whl`。
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 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` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
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` 文檔以獲取更多信息。
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
pip install
|
||||
twine upload
|
||||
```
|
||||
@@ -0,0 +1,130 @@
|
||||
---
|
||||
date: "2023-03-08T00:00:00+00:00"
|
||||
slug: "rpm"
|
||||
sidebar_position: 105
|
||||
---
|
||||
|
||||
# RPM 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [RPM](https://rpm.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 RPM 註冊表,您需要使用像 `yum`、`dnf` 或 `zypper` 這樣的套件管理器來消費套件。
|
||||
|
||||
以下範例使用 `dnf`。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊 RPM 註冊表,請將 URL 添加到已知來源列表中:
|
||||
|
||||
```shell
|
||||
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{group}.repo
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------- | ----------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `group` | 可選:所有內容,例如空的,`el7`,`rocky/el9`,`test/fc38`。 |
|
||||
|
||||
範例:
|
||||
|
||||
```shell
|
||||
# 沒有分組
|
||||
dnf config-manager --add-repo https://gitea.example.com/api/packages/testuser/rpm.repo
|
||||
|
||||
# 使用分組 'centos/el7'
|
||||
dnf config-manager --add-repo https://gitea.example.com/api/packages/testuser/rpm/centos/el7.repo
|
||||
```
|
||||
|
||||
如果註冊表是私有的,請在 URL 中提供憑證。您可以使用密碼或 [個人訪問令牌](development/api-usage.md#authentication):
|
||||
|
||||
```shell
|
||||
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm/{group}.repo
|
||||
```
|
||||
|
||||
您還需要將憑證添加到創建的 `.repo` 文件中的 URL 中,位於 `/etc/yum.repos.d`。
|
||||
|
||||
## 發布套件
|
||||
|
||||
要發布 RPM 套件(`*.rpm`),請執行 HTTP PUT 操作,請求體中包含套件內容。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/rpm/{group}/upload
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | ----------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `group` | 可選:所有內容,例如空的,`el7`,`rocky/el9`,`test/fc38`。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
# 沒有分組
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.rpm \
|
||||
https://gitea.example.com/api/packages/testuser/rpm/upload
|
||||
|
||||
# 使用分組 'centos/el7'
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.rpm \
|
||||
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/upload
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
您不能將同名文件兩次發布到套件中。您必須先刪除現有的套件版本。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ------------------------------------ |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 套件中已存在具有相同參數組合的文件。 |
|
||||
|
||||
## 刪除套件
|
||||
|
||||
要刪除 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` | 套件架構。 |
|
||||
|
||||
使用 HTTP 基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
# 沒有分組
|
||||
curl --user your_username:your_token_or_password -X DELETE \
|
||||
https://gitea.example.com/api/packages/testuser/rpm/package/test-package/1.0.0/x86_64
|
||||
|
||||
# 使用分組 'centos/el7'
|
||||
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 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從 RPM 註冊表中安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
# 使用最新版本
|
||||
dnf install {package_name}
|
||||
# 使用特定版本
|
||||
dnf install {package_name}-{package_version}.{architecture}
|
||||
```
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "rubygems"
|
||||
sidebar_position: 110
|
||||
---
|
||||
|
||||
# RubyGems 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [RubyGems](https://guides.rubygems.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 RubyGems 套件註冊表,您需要使用 [gem](https://guides.rubygems.org/command-reference/) 命令行工具來消費和發布套件。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表,請編輯 `~/.gem/credentials` 文件並添加:
|
||||
|
||||
```ini
|
||||
---
|
||||
https://gitea.example.com/api/packages/{owner}/rubygems: Bearer {token}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- | -------------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `token` | 您的 [個人訪問令牌](development/api-usage.md#authentication)。 |
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
---
|
||||
https://gitea.example.com/api/packages/testuser/rubygems: Bearer 3bd626f84b01cd26b873931eace1e430a5773cc4
|
||||
```
|
||||
|
||||
## 發布套件
|
||||
|
||||
運行以下命令來發布套件:
|
||||
|
||||
```shell
|
||||
gem push --host {host} {package_file}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ------------------------ |
|
||||
| `host` | 套件註冊表的 URL。 |
|
||||
| `package_file` | 套件 `.gem` 文件的路徑。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
gem push --host https://gitea.example.com/api/packages/testuser/rubygems test_package-1.0.0.gem
|
||||
```
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,您可以使用 [Bundler](https://bundler.io) 或 `gem`。
|
||||
|
||||
### Bundler
|
||||
|
||||
在您的 `Gemfile` 中添加一個新的 `source` 塊:
|
||||
|
||||
```
|
||||
source "https://gitea.example.com/api/packages/{owner}/rubygems" do
|
||||
gem "{package_name}"
|
||||
end
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
source "https://gitea.example.com/api/packages/testuser/rubygems" do
|
||||
gem "test_package"
|
||||
end
|
||||
```
|
||||
|
||||
之後運行以下命令:
|
||||
|
||||
```shell
|
||||
bundle install
|
||||
```
|
||||
|
||||
### gem
|
||||
|
||||
執行以下命令:
|
||||
|
||||
```shell
|
||||
gem install --host https://gitea.example.com/api/packages/{owner}/rubygems {package_name}
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
gem install --host https://gitea.example.com/api/packages/testuser/rubygems test_package
|
||||
```
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
gem install
|
||||
bundle install
|
||||
gem push
|
||||
```
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
date: "2022-11-01T00:00:00+00:00"
|
||||
slug: "storage"
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# 存儲
|
||||
|
||||
本文檔描述了套件註冊表的存儲及其管理方式。
|
||||
|
||||
## 去重
|
||||
|
||||
套件註冊表具有內置的上傳 blob 去重功能。
|
||||
如果上傳了兩個相同的文件,則文件系統上只會保存一個 blob。
|
||||
這確保了不會為重複的文件浪費空間。
|
||||
|
||||
如果上傳了兩個包含相同文件的套件,這兩個套件將顯示相同的大小,但在文件系統上它們只需要一半的大小。
|
||||
每當刪除套件時,只會刪除對底層 blob 的引用。
|
||||
此時不會刪除 blob,因此它們仍然需要文件系統上的空間。
|
||||
當上傳新套件時,現有的 blob 可能會再次被引用。
|
||||
|
||||
這些未引用的 blob 會被[清理作業](../../administration/config-cheat-sheet.md#cron---cleanup-expired-packages-croncleanup_packages)刪除。
|
||||
配置設置 `OLDER_THAN` 配置了未引用的 blob 在刪除前保留的時間。
|
||||
|
||||
## 清理規則
|
||||
|
||||
隨著時間的推移,套件註冊表可能會變得很大而不進行清理。
|
||||
建議刪除不必要的套件並設置清理規則以自動管理套件註冊表的使用。
|
||||
每個套件擁有者(用戶或組織)管理應用於其套件的清理規則。
|
||||
|
||||
| 設置 | 描述 |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 啟用 | 打開或關閉清理規則。 |
|
||||
| 類型 | 每個規則管理特定的套件類型。 |
|
||||
| 將模式應用於完整的套件名稱 | 如果啟用,下面的模式將應用於完整的套件名稱(`package/version`)。否則僅應用於版本(`version`)。 |
|
||||
| 保留最新的 | 每個套件要*始終*保留的版本數量。 |
|
||||
| 保留匹配的版本 | 確定要保留的版本的正則表達式模式。空模式不保留任何版本,而 `.+` 保留所有版本。即使未配置,容器註冊表也會始終保留 `latest` 版本。 |
|
||||
| 刪除早於的版本 | 只刪除早於選定天數的版本。 |
|
||||
| 刪除匹配的版本 | 確定要刪除的版本的正則表達式模式。空模式或 `.+` 將導致刪除所有套件,如果沒有其他設置告訴否則。 |
|
||||
|
||||
每個清理規則都可以顯示受影響套件的預覽。
|
||||
這可以用來檢查清理規則是否配置正確。
|
||||
|
||||
### 正則表達式示例
|
||||
|
||||
正則表達式模式會自動用 `\A` 和 `\z` 錨點包圍。
|
||||
不要在正則表達式模式中包含任何 `\A`、`\z`、`^` 或 `$` 符號,因為它們不是必需的。
|
||||
這些模式是不區分大小寫的,這與 Gitea 中套件註冊表的行為相匹配。
|
||||
|
||||
| 模式 | 描述 |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `.*` | 匹配所有可能的版本。 |
|
||||
| `v.+` | 匹配以 `v` 開頭的版本。 |
|
||||
| `release` | 只匹配版本 `release`。 |
|
||||
| `release.*` | 匹配命名為或以 `release` 開頭的版本。 |
|
||||
| `.+-temp-.+` | 匹配包含 `-temp-` 的版本。 |
|
||||
| `v.+\|release` | 匹配以 `v` 開頭的版本或命名為 `release` 的版本。 |
|
||||
| `package/v.+\|other/release` | 匹配套件 `package` 的以 `v` 開頭的版本或套件 `other` 的版本 `release`。這需要啟用設置*將模式應用於完整的套件名稱*。 |
|
||||
|
||||
### 清理規則的工作原理
|
||||
|
||||
清理規則是[清理作業](../../administration/config-cheat-sheet.md#cron---cleanup-expired-packages-croncleanup_packages)的一部分,並定期運行。
|
||||
|
||||
清理規則:
|
||||
|
||||
1. 收集擁有者註冊表的所有套件類型的所有套件。
|
||||
2. 對於每個套件,它收集所有版本。
|
||||
3. 根據*保留最新的*值從列表中排除版本。
|
||||
4. 排除與*保留匹配的版本*值匹配的任何版本。
|
||||
5. 排除比*刪除早於的版本*值更新的版本。
|
||||
6. 排除與*刪除匹配的版本*值不匹配的任何版本。
|
||||
7. 刪除剩餘的版本。
|
||||
@@ -0,0 +1,90 @@
|
||||
---
|
||||
date: "2023-01-10T00:00:00+00:00"
|
||||
slug: "swift"
|
||||
sidebar_position: 115
|
||||
---
|
||||
|
||||
# Swift 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Swift](https://www.swift.org/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Swift 套件註冊表,您需要使用 [swift](https://www.swift.org/getting-started/) 來消費和使用 HTTP 客戶端(如 `curl`)來發布套件。
|
||||
|
||||
## 配置套件註冊表
|
||||
|
||||
要註冊套件註冊表並提供憑證,請執行:
|
||||
|
||||
```shell
|
||||
swift package-registry set https://gitea.example.com/api/packages/{owner}/swift
|
||||
swift package-registry login https://gitea.example.com/api/packages/{owner}/swift --username {username} --password {password}
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。 |
|
||||
|
||||
登錄是可選的,僅在套件註冊表是私有時需要。
|
||||
|
||||
## 發布套件
|
||||
|
||||
首先,您需要打包套件的內容:
|
||||
|
||||
```shell
|
||||
swift package archive-source
|
||||
```
|
||||
|
||||
要發布套件,請執行 HTTP PUT 請求,請求體中包含套件內容。
|
||||
|
||||
```shell --user your_username:your_password_or_token \
|
||||
curl -X PUT --user {username}:{password} \
|
||||
-H "Accept: application/vnd.swift.registry.v1+json" \
|
||||
-F source-archive=@/path/to/package.zip \
|
||||
-F metadata={metadata} \
|
||||
https://gitea.example.com/api/packages/{owner}/swift/{scope}/{name}/{version}
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `username` | 您的 Gitea 用戶名。 |
|
||||
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。 |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `scope` | 套件範圍。 |
|
||||
| `name` | 套件名稱。 |
|
||||
| `version` | 套件版本。 |
|
||||
| `metadata` | (可選)套件的元數據。JSON 編碼的 https://schema.org/SoftwareSourceCode 子集 |
|
||||
|
||||
如果已經存在同名同版本的套件,您不能發布該套件。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ------------------------------------ |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 套件中已存在具有相同參數組合的文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 Swift 套件,請在 `Package.swift` 文件的依賴項列表中添加:
|
||||
|
||||
```
|
||||
dependencies: [
|
||||
.package(id: "{scope}.{name}", from:"{version}")
|
||||
]
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| --------- | ---------- |
|
||||
| `scope` | 套件範圍。 |
|
||||
| `name` | 套件名稱。 |
|
||||
| `version` | 套件版本。 |
|
||||
|
||||
之後執行以下命令來安裝它:
|
||||
|
||||
```shell
|
||||
swift package resolve
|
||||
```
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
date: "2022-08-23T00:00:00+00:00"
|
||||
slug: "vagrant"
|
||||
sidebar_position: 120
|
||||
---
|
||||
|
||||
# Vagrant 套件註冊表
|
||||
|
||||
為您的用戶或組織發布 [Vagrant](https://www.vagrantup.com/) 套件。
|
||||
|
||||
## 需求
|
||||
|
||||
要使用 Vagrant 套件註冊表,您需要 [Vagrant](https://www.vagrantup.com/downloads) 和一個用於發送 HTTP 請求的工具,如 `curl`。
|
||||
|
||||
## 發布套件
|
||||
|
||||
通過執行 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)之一。 |
|
||||
|
||||
上傳 Hyper-V box 的範例:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/your/vagrant.box \
|
||||
https://gitea.example.com/api/packages/testuser/vagrant/test_system/1.0.0/hyperv.box
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用 [個人訪問令牌](development/api-usage.md#authentication) 代替密碼。
|
||||
|
||||
如果已經存在同名、同版本和同提供者的 box,您不能發布該 box。您必須先刪除現有的套件。
|
||||
|
||||
服務器響應以下 HTTP 狀態碼。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ------------------------------------ |
|
||||
| `201 Created` | 套件已發布。 |
|
||||
| `400 Bad Request` | 套件無效。 |
|
||||
| `409 Conflict` | 套件中已存在具有相同參數組合的文件。 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝 box,請執行以下命令:
|
||||
|
||||
```shell
|
||||
vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}"
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | -------------- |
|
||||
| `owner` | 套件的擁有者。 |
|
||||
| `package_name` | 套件名稱。 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
vagrant box add "https://gitea.example.com/api/packages/testuser/vagrant/test_system"
|
||||
```
|
||||
|
||||
這將安裝套件的最新版本。要添加特定版本,請使用 `--box-version` 參數。
|
||||
如果註冊表是私有的,您可以在 `VAGRANT_CLOUD_TOKEN` 環境變量中傳遞您的 [個人訪問令牌](development/api-usage.md#authentication)。
|
||||
|
||||
## 支持的命令
|
||||
|
||||
```
|
||||
vagrant box add
|
||||
```
|
||||
Reference in New Issue
Block a user