mirror of
https://gitea.com/gitea/docs.git
synced 2026-11-07 18:40:32 +00:00
Add version v28 (#564)
<!-- cloudflare-preview --> Preview: https://pr-564.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/564 Reviewed-by: bircni <[email protected]> Co-authored-by: Lunny Xiao <[email protected]>
This commit is contained in:
1 parent
deb2f068d4
commit
ba60edbbda
338 files changed
+114457
-47
No files matched your search
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"label": "Packages",
|
||||
"position": 40,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"slug": "/usage/packages",
|
||||
"description": "Managing packages and package registries"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
---
|
||||
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#透過-api-認證):
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
如果您使用的是雙重身份驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)代替密碼。
|
||||
您不能將具有相同名稱的文件兩次發佈到一個包中。您必須首先刪除現有的包文件。
|
||||
|
||||
伺服器將以以下的 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
|
||||
# use latest version
|
||||
apk add {package_name}
|
||||
# use specific version
|
||||
apk add {package_name}={package_version}
|
||||
```
|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
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#透過-api-認證) |
|
||||
|
||||
## 發佈套件
|
||||
|
||||
在專案中運行以下命令來發布套件:
|
||||
|
||||
```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: 5
|
||||
---
|
||||
|
||||
# Chef 套件註冊表
|
||||
|
||||
為您的使用者或組織發佈 [Chef](https://chef.io/) cookbooks。
|
||||
|
||||
## 要求
|
||||
|
||||
要使用 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,110 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "composer"
|
||||
sidebar_position: 10
|
||||
---
|
||||
|
||||
# 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#透過-api-認證)替代密碼。
|
||||
|
||||
伺服器將以以下 HTTP 狀態碼響應。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ----------------- | ----------------------------------------------------------- |
|
||||
| `201 Created` | 套件已發佈 |
|
||||
| `400 Bad Request` | 套件名稱和/或版本無效,或具有相同名稱和版本的套件已存在 |
|
||||
|
||||
## 設定套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要將其添加到 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,89 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "conan"
|
||||
sidebar_position: 20
|
||||
---
|
||||
|
||||
# Conan 套件註冊表
|
||||
|
||||
為您的使用者或組織發佈 [Conan](https://conan.io/) 套件。
|
||||
|
||||
## 要求
|
||||
|
||||
要使用 [conan](https://conan.io/downloads.html) 套件註冊表,您需要使用 conan 命令行工具來消費和發佈套件。
|
||||
|
||||
## 設定套件註冊表
|
||||
|
||||
要註冊套件註冊表,您需要設定一個新的 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` | 套件的所有者。 |
|
||||
|
||||
例如:
|
||||
|
||||
```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` | 要上傳的 recipe |
|
||||
|
||||
For example:
|
||||
|
||||
```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` | 要下載的 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,73 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
|
||||
如果已經存在同名和版本的套件,則無法發佈套件。您必須先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝套件,請執行以下命令之一:
|
||||
|
||||
```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,81 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "container"
|
||||
sidebar_position: 30
|
||||
---
|
||||
|
||||
# 容器註冊表
|
||||
|
||||
為您的使用者或組織發佈符合 [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-認證)替代密碼進行身份驗證。
|
||||
|
||||
## 鏡像命名約定
|
||||
|
||||
鏡像必須遵循以下命名約定:
|
||||
|
||||
`{registry}/{owner}/{image}`
|
||||
|
||||
例如,以下是所有者為 `testuser` 的有效鏡像名稱範例:
|
||||
|
||||
`gitea.example.com/testuser/myimage`
|
||||
|
||||
`gitea.example.com/testuser/my-image`
|
||||
|
||||
`gitea.example.com/testuser/my/image`
|
||||
|
||||
**注意:** 該註冊表僅支援大小寫不敏感的標籤名稱。因此,`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}
|
||||
```
|
||||
|
||||
| Parameter | Description |
|
||||
| --------- | ------------ |
|
||||
| `owner` | 鏡像的所有者 |
|
||||
| `image` | 鏡像的名稱 |
|
||||
| `tag` | 鏡像的標籤 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
docker pull gitea.example.com/testuser/myimage:latest
|
||||
```
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
|
||||
如果同名和版本的套件已存在,則無法發佈套件。您必須首先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表中安裝R套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
install.packages("{package_name}")
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| -------------- | ----------------- |
|
||||
| `package_name` | The package name. |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
install.packages("testpackage")
|
||||
```
|
||||
@@ -0,0 +1,121 @@
|
||||
---
|
||||
date: "2023-01-07T00:00:00+00:00"
|
||||
slug: "debian"
|
||||
---
|
||||
|
||||
# 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#透過-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` 必須知道該密鑰:
|
||||
|
||||
```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#透過-api-認證)替代密碼。
|
||||
您無法向套件中多次發佈具有相同名稱的文件。您必須首先刪除現有的套件版本。
|
||||
|
||||
伺服器將使用以下 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/pools/bionic/main/test-package/1.0.0/amd64
|
||||
```
|
||||
|
||||
伺服器將使用以下 HTTP 狀態程式碼進行響應。
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 找不到套件或文件 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從 Debian 註冊表安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
# use latest version
|
||||
apt install {package_name}
|
||||
# use specific version
|
||||
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#透過-api-認證)。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
要發佈通用套件,請執行 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#透過-api-認證)替代密碼。
|
||||
|
||||
伺服器將使用以下 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
|
||||
```
|
||||
|
||||
The server responds with the following HTTP Status codes.
|
||||
|
||||
| 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,64 @@
|
||||
---
|
||||
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#透過-api-認證):
|
||||
|
||||
```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#透過-api-認證)替代密碼進行身份驗證。
|
||||
|
||||
伺服器將使用以下 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/) charts。
|
||||
|
||||
## 要求
|
||||
|
||||
要使用 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
|
||||
```
|
||||
|
||||
或者使用 `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#透過-api-認證)替代密碼進行身份驗證。 |
|
||||
| `repo` | 儲存庫名稱 |
|
||||
| `chart_file` | Helm Chart 歸檔文件 |
|
||||
| `owner` | 套件的所有者 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從註冊表中安裝Helm Chart,請執行以下命令:
|
||||
|
||||
```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#透過-api-認證) |
|
||||
| `owner` | 套件的所有者 |
|
||||
|
||||
### Gradle variant
|
||||
|
||||
如果您計劃在專案中添加來自 Gitea 實例的一些套件,請將其添加到 repositories 部分中:
|
||||
|
||||
```groovy
|
||||
repositories {
|
||||
// other 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,請使用 `gradle` 命令和 `publishAllPublicationsToGiteaRepository` 任務:
|
||||
|
||||
```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 Package Registry
|
||||
|
||||
為您的使用者或組織發佈 [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/)和非作用域套件。
|
||||
|
||||
以下範例使用具有作用域 `@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-認證)。 |
|
||||
|
||||
例如:
|
||||
|
||||
```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,105 @@
|
||||
---
|
||||
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)中的 NuGet 功能,如 Visual Studio。有關 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#透過-api-認證)代替密碼。 |
|
||||
| `owner` | 套件的所有者 |
|
||||
|
||||
例如:
|
||||
|
||||
```shell
|
||||
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-認證)。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
通過運行以下命令發佈套件:
|
||||
|
||||
```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,96 @@
|
||||
---
|
||||
date: "2021-07-20T00:00:00+00:00"
|
||||
slug: "overview"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# 套件註冊表
|
||||
|
||||
從Gitea **1.17**版本開始,套件註冊表可以用作常見套件管理器的公共或私有註冊表。
|
||||
|
||||
## 支援的套件管理器
|
||||
|
||||
目前支援以下套件管理器:
|
||||
|
||||
| Name | Language | Package client |
|
||||
| ------------------------------------------------------------------- | ---------- | ------------------------- |
|
||||
| [Alpine](usage/packages/alpine.md) | - | `apk` |
|
||||
| [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/rubygems.md) | Swift | `swift` |
|
||||
| [Vagrant](usage/packages/vagrant.md) | - | `vagrant` |
|
||||
|
||||
**以下段落僅適用於未全域禁用套件的情況!**
|
||||
|
||||
## 儲存庫 x 套件
|
||||
|
||||
套件始終屬於所有者(使用者或組織),而不是儲存庫。
|
||||
要將(已上傳的)套件鏈接到儲存庫,請打開該套件的設定頁面,並選擇要將此套件鏈接到的儲存庫。
|
||||
將鏈接到整個套件,而不僅是單個版本。
|
||||
|
||||
鏈接套件將導致在儲存庫的套件列表中顯示該套件,並在套件頁面上顯示到儲存庫的鏈接(以及到儲存庫工單的鏈接)。
|
||||
|
||||
## 訪問限制
|
||||
|
||||
| 套件所有者類型 | 使用者 | 組織 |
|
||||
| ---------------- | ---------------------------------------- | ------------------------------------------ |
|
||||
| **讀取** 訪問 | 公開,如果使用者也是公開的;否則僅限此使用者 | 公開,如果組織是公開的,否則僅限組織成員 |
|
||||
| **寫入** 訪問 | 僅套件所有者 | 具有組織中的管理員或寫入存取權限的組織成員 |
|
||||
|
||||
注意:這些訪問限制可能會[變化](https://github.com/go-gitea/gitea/issues/19270),將通過專門的組織團隊權限添加更細粒度的控制。
|
||||
|
||||
## 建立或上傳套件
|
||||
|
||||
根據套件類型,使用相應的套件管理器。請查看特定套件管理器的子頁面以獲取說明。
|
||||
|
||||
## 查看套件
|
||||
|
||||
您可以在儲存庫頁面上查看儲存庫的套件。
|
||||
|
||||
1. 轉到儲存庫主頁。
|
||||
2. 在導航欄中選擇**套件**
|
||||
|
||||
要查看有關套件的更多詳細資訊,請選擇套件的名稱。
|
||||
|
||||
## 下載套件
|
||||
|
||||
要從儲存庫下載套件:
|
||||
|
||||
1. 在導航欄中選擇**套件**
|
||||
2. 選擇套件的名稱以查看詳細資訊。
|
||||
3. 在 **Assets** 部分,選擇要下載的套件文件的名稱。
|
||||
|
||||
## 刪除套件
|
||||
|
||||
在將套件發佈到套件註冊表後,您無法編輯套件。相反,您必須刪除並重新建立它。
|
||||
|
||||
要從儲存庫中刪除套件:
|
||||
|
||||
1. 在導航欄中選擇**套件**
|
||||
2. 選擇套件的名稱以查看詳細資訊。
|
||||
3. 單擊**刪除套件**以永久刪除套件。
|
||||
|
||||
## 禁用套件註冊表
|
||||
|
||||
包註冊表已自動啟用。要在單個儲存庫中禁用它:
|
||||
|
||||
1. 在導航欄中選擇**設定**。
|
||||
2. 禁用**啟用儲存庫套件註冊表**.
|
||||
|
||||
禁用套件註冊表不會刪除先前發佈的套件。
|
||||
@@ -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#透過-api-認證)。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
要發佈套件,請編輯 `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
|
||||
# use latest version
|
||||
dart pub add mypackage --hosted-url=https://gitea.example.com/api/packages/testuser/pub/
|
||||
# specify version
|
||||
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#透過-api-認證)替代密碼 |
|
||||
|
||||
## 發佈套件
|
||||
|
||||
通過運行以下命令來發布套件:
|
||||
|
||||
```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,108 @@
|
||||
---
|
||||
date: "2023-03-08T00:00:00+00:00"
|
||||
slug: "packages/rpm"
|
||||
sidebar_position: 105
|
||||
---
|
||||
|
||||
# RPM 套件註冊表
|
||||
|
||||
為您的使用者或組織發佈 [RPM](https://rpm.org/) 套件。
|
||||
|
||||
## 要求
|
||||
|
||||
要使用RPM註冊表,您需要使用像 `yum`, `dnf` 或 `zypper` 這樣的套件管理器來消費套件。
|
||||
|
||||
以下範例使用 `dnf`。
|
||||
|
||||
## 設定套件註冊表
|
||||
|
||||
要註冊RPM註冊表,請將 URL 添加到已知 `apt` 源列表中:
|
||||
|
||||
```shell
|
||||
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{group}.repo
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ------- |--------------------------------------|
|
||||
| `owner` | 套件的所有者 |
|
||||
| `group` | 任何名稱,例如 `centos/7`、`el-7`、`fc38` |
|
||||
|
||||
如果註冊表是私有的,請在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中。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
要發佈RPM套件(`*.rpm`),請執行帶有套件內容的 HTTP `PUT` 操作。
|
||||
|
||||
```
|
||||
PUT https://gitea.example.com/api/packages/{owner}/rpm/{group}/upload
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| ------- |--------------|
|
||||
| `owner` | 套件的所有者 |
|
||||
| `group` | 套件自訂分組名稱 |
|
||||
|
||||
使用HTTP基本身份驗證的範例請求:
|
||||
|
||||
```shell
|
||||
curl --user your_username:your_password_or_token \
|
||||
--upload-file path/to/file.rpm \
|
||||
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/version/upload
|
||||
```
|
||||
|
||||
如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)替代密碼。您無法將具有相同名稱的文件兩次發佈到套件中。您必須先刪除現有的套件版本。
|
||||
|
||||
伺服器將以以下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/centos/el7/package/test-package/1.0.0/x86_64
|
||||
```
|
||||
|
||||
伺服器將以以下HTTP狀態碼響應:
|
||||
|
||||
| HTTP 狀態碼 | 含義 |
|
||||
| ---------------- | ------------------ |
|
||||
| `204 No Content` | 成功 |
|
||||
| `404 Not Found` | 未找到套件或文件 |
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從RPM註冊表安裝套件,請執行以下命令:
|
||||
|
||||
```shell
|
||||
# use latest version
|
||||
dnf install {package_name}
|
||||
# use specific version
|
||||
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#透過-api-認證) |
|
||||
|
||||
例如:
|
||||
|
||||
```
|
||||
---
|
||||
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: 5
|
||||
---
|
||||
|
||||
# 儲存
|
||||
|
||||
本文件描述了套件註冊表的儲存方式以及如何管理儲存。
|
||||
|
||||
## 去重
|
||||
|
||||
套件註冊表具有內置的去重功能,可以對上傳的 Blob 進行去重處理。
|
||||
如果上傳了兩個相同的文件,只會在文件系統上保存一個 Blob。
|
||||
這樣可以確保不會浪費空間用於重複的文件。
|
||||
|
||||
如果上傳了兩個具有相同文件的套件,這兩個套件將顯示相同的大小,但在文件系統上,它們只需要一半的大小。
|
||||
每當刪除一個套件時,只會刪除對底層 Blob 的引用。
|
||||
此時,Blob 不會被刪除,因此它們仍然佔用文件系統上的空間。
|
||||
當上傳新的套件時,現有的 Blob 可能會再次被引用。
|
||||
|
||||
這些無引用的 Blob 會在一個清理任務中被刪除。
|
||||
設定 `OLDER_THAN` 可以設定無引用的 Blob 在被刪除之前保留的時間。
|
||||
|
||||
## 清理規則
|
||||
|
||||
套件註冊表可能會隨著時間的推移而變得很大,如果不進行清理的話。
|
||||
建議刪除不必要的套件並設定清理規則以自動管理套件註冊表的使用情況。
|
||||
每個套件所有者(使用者或組織)都可以管理應用於其套件的清理規則。
|
||||
|
||||
| 設定 | 描述 |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 啟用 | 打開或關閉清理規則。 |
|
||||
| 類型 | 每個規則管理特定的套件類型。 |
|
||||
| 將模式應用於完整的套件名稱 | 如果啟用,則應用以下模式到完整的套件名稱(`package/version`),否則只使用版本號(`version`)。 |
|
||||
| 保留最近的版本數 | 對於每個套件要始終保留的版本數量。 |
|
||||
| 保留與以下模式匹配的版本 | 確定要保留哪些版本的正則表達式模式。空模式表示不保留任何版本,而 `.+` 表示保留所有版本。即使未設定,容器註冊表也始終保留 `latest` 版本。 |
|
||||
| 刪除早於多少天的版本 | 僅刪除早於所選天數的版本。 |
|
||||
| 刪除與以下模式匹配的版本 | 確定要刪除哪些版本的正則表達式模式。空模式或 `.+` 表示如果沒有其他設定指定,則刪除所有套件。 |
|
||||
|
||||
每個清理規則都可以顯示受影響的套件的預覽。
|
||||
這可以用來檢查清理規則是否正確設定。
|
||||
|
||||
### 正則表達式範例
|
||||
|
||||
正則表達式模式會自動使用 `\A` 和 `\z` 錨點進行包圍。
|
||||
不要在正則表達式模式中包含任何 `\A`、`\z`、`^` 或 `$` 標記,因為它們不是必要的。
|
||||
模式是不區分大小寫的,與 Gitea 中的套件註冊表的行為相匹配。
|
||||
|
||||
| Pattern | Description |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| `.*` | 匹配任何可能的版本。 |
|
||||
| `v.+` | 匹配以 `v` 開頭的版本。 |
|
||||
| `release` | 僅匹配版本號為 `release`。 |
|
||||
| `release.*` | 匹配以 `release` 命名或以 `release` 開頭的版本。 |
|
||||
| `.+-temp-.+` | 匹配包含 `-temp-` 的版本。 |
|
||||
| `v.+\|release` | 匹配以 `v` 開頭的版本或版本號為 `release`。 |
|
||||
| `package/v.+\|other/release` | 匹配以 `v` 開頭的 package 的版本或 `other` 的版本號為 `release`。需要啟用*將模式應用於完整的套件名稱*設定。 |
|
||||
|
||||
### 清理規則的工作原理
|
||||
|
||||
清理規則是清理任務的一部分,定期運行。
|
||||
|
||||
清理規則:
|
||||
|
||||
1. 收集所有屬於所有者註冊表的特定套件類型的套件。
|
||||
2. 對於每個套件,收集所有版本。
|
||||
3. 根據 *保留最近的版本數* 的值,從列表中排除版本。
|
||||
4. 根據 *保留與以下模式匹配的版本* 的值,從列表中排除任何版本。
|
||||
5. 根據 *刪除早於多少天的版本* 的值,從列表中排除比這個值更近的版本。
|
||||
6. 根據 *刪除與以下模式匹配的版本* 的值,從列表中排除任何不匹配的版本。
|
||||
7. 刪除剩餘的版本。
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
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 -login {username} -password {password}
|
||||
```
|
||||
|
||||
| 佔位符 | 描述 |
|
||||
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `owner` | 套件的所有者。 |
|
||||
| `username` | 您的 Gitea 使用者名稱。 |
|
||||
| `password` | 您的 Gitea 密碼。如果您使用兩步驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)代替密碼。 |
|
||||
|
||||
登入是可選的,只有在套件註冊表是私有的情況下才需要。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
首先,您需要打包套件的內容:
|
||||
|
||||
```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 密碼。如果您使用兩步驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)代替密碼。 |
|
||||
| `owner` | 套件的所有者。 |
|
||||
| `scope` | 套件的作用域。 |
|
||||
| `name` | 套件的名稱。 |
|
||||
| `version` | 套件的版本。 |
|
||||
| `metadata` | (可選)套件的元資料。以 JSON 編碼的子集,格式參考 https://schema.org/SoftwareSourceCode |
|
||||
|
||||
如果已經存在相同名稱和版本的套件,則無法發佈套件。您必須首先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表安裝 Swift 套件,請將其添加到 `Package.swift` 文件的依賴項列表中:
|
||||
|
||||
```
|
||||
dependencies: [
|
||||
.package(id: "{scope}.{name}", from:"{version}")
|
||||
]
|
||||
```
|
||||
|
||||
| 參數 | 描述 |
|
||||
| --------- | -------------- |
|
||||
| `scope` | 套件的作用域 |
|
||||
| `name` | 套件的名稱 |
|
||||
| `version` | 套件的版本 |
|
||||
|
||||
之後,執行以下命令來安裝它:
|
||||
|
||||
```shell
|
||||
swift package resolve
|
||||
```
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
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) 並使用類似於 `curl` 的工具進行 HTTP 請求。
|
||||
|
||||
## 發佈套件
|
||||
|
||||
透過執行 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
|
||||
```
|
||||
|
||||
如果已經存在相同名稱、版本和提供程式的套件,則無法發佈套件。您必須首先刪除現有的套件。
|
||||
|
||||
## 安裝套件
|
||||
|
||||
要從套件註冊表安裝套件,請執行以下命令:
|
||||
|
||||
```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` 參數。
|
||||
如果註冊表是私有的,您可以將您的[個人存取權杖](development/api-usage.md#透過-api-認證)傳遞給 `VAGRANT_CLOUD_TOKEN` 環境變量。
|
||||
|
||||
## 支援的命令
|
||||
|
||||
```
|
||||
vagrant box add
|
||||
```
|
||||
Reference in new issue
Block a user