mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-01 14:56:30 +00:00
Merge branch 'main' into pacman-packages
This commit is contained in:
commit
672b00b542
@ -110,9 +110,9 @@ Note that the repository may still use instance-level or organization-level runn
|
||||
|
||||
The level of the runner determines where to obtain the registration token.
|
||||
|
||||
- Instance level: The admin settings page, like `<your_gitea.com>/admin/runners`.
|
||||
- Organization level: The organization settings page, like `<your_gitea.com>/<org>/settings/runners`.
|
||||
- Repository level: The repository settings page, like `<your_gitea.com>/<owner>/<repo>/settings/runners`.
|
||||
- Instance level: The admin settings page, like `<your_gitea.com>/admin/actions/runners`.
|
||||
- Organization level: The organization settings page, like `<your_gitea.com>/<org>/settings/actions/runners`.
|
||||
- Repository level: The repository settings page, like `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`.
|
||||
|
||||
If you cannot see the settings page, please make sure that you have the right permissions and that Actions have been enabled.
|
||||
|
||||
|
@ -109,9 +109,9 @@ docker run -v $(pwd)/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
|
||||
|
||||
Runner级别决定了从哪里获取注册令牌。
|
||||
|
||||
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/runners`。
|
||||
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/runners`。
|
||||
- 存储库级别:存储库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/runners`。
|
||||
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`。
|
||||
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`。
|
||||
- 存储库级别:存储库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`。
|
||||
|
||||
如果您无法看到设置页面,请确保您具有正确的权限并且已启用 Actions。
|
||||
|
||||
|
@ -66,7 +66,11 @@ If you are unsure which address to use, the LAN address is usually the right cho
|
||||
|
||||
`token` is used for authentication and identification, such as `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`.
|
||||
It is one-time use only and cannot be used to register multiple runners.
|
||||
You can obtain tokens from `<your_gitea.com>/admin/runners`.
|
||||
You can obtain different levels of 'tokens' from the following places to create the corresponding level of' runners':
|
||||
|
||||
- Instance level: The admin settings page, like `<your_gitea.com>/admin/actions/runners`.
|
||||
- Organization level: The organization settings page, like `<your_gitea.com>/<org>/settings/actions/runners`.
|
||||
- Repository level: The repository settings page, like `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`.
|
||||
|
||||

|
||||
|
||||
|
@ -66,7 +66,11 @@ Runner和Job容器(由Runner启动以执行Job)将连接到此地址。
|
||||
|
||||
`token` 用于身份验证和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`。
|
||||
它只能使用一次,并且不能用于注册多个Runner。
|
||||
您可以从 `<your_gitea.com>/admin/runners` 获取令牌。
|
||||
您可以从以下位置获取不同级别的`token`,从而创建出相应级别的`runner`
|
||||
|
||||
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`。
|
||||
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`。
|
||||
- 存储库级别:存储库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`。
|
||||
|
||||

|
||||
|
||||
|
@ -18,7 +18,7 @@ menu:
|
||||
# Secrets
|
||||
|
||||
Secrets allow you to store sensitive information in your user, organization or repository.
|
||||
Secrets are available on Gitea 1.19+ and are only visible in 1.20+ when ACTIONS are enabled
|
||||
Secrets are available on Gitea 1.19+ and are only visible in 1.20+ when ACTIONS are enabled.
|
||||
|
||||
# Naming your secrets
|
||||
|
||||
|
@ -80,7 +80,9 @@ func ParsePackage(r io.Reader) (*Package, error) {
|
||||
|
||||
if strings.HasPrefix(hd.Name, controlTar) {
|
||||
var inner io.Reader
|
||||
switch hd.Name[len(controlTar):] {
|
||||
// https://man7.org/linux/man-pages/man5/deb-split.5.html#FORMAT
|
||||
// The file names might contain a trailing slash (since dpkg 1.15.6).
|
||||
switch strings.TrimSuffix(hd.Name[len(controlTar):], "/") {
|
||||
case "":
|
||||
inner = arr
|
||||
case ".gz":
|
||||
|
@ -69,59 +69,73 @@ func TestParsePackage(t *testing.T) {
|
||||
tw.Write([]byte("Package: gitea\nVersion: 1.0.0\nArchitecture: amd64\n"))
|
||||
tw.Close()
|
||||
|
||||
t.Run("None", func(t *testing.T) {
|
||||
data := createArchive(map[string][]byte{"control.tar": buf.Bytes()})
|
||||
cases := []struct {
|
||||
Extension string
|
||||
WriterFactory func(io.Writer) io.WriteCloser
|
||||
}{
|
||||
{
|
||||
Extension: "",
|
||||
WriterFactory: func(w io.Writer) io.WriteCloser {
|
||||
return nopCloser{w}
|
||||
},
|
||||
},
|
||||
{
|
||||
Extension: ".gz",
|
||||
WriterFactory: func(w io.Writer) io.WriteCloser {
|
||||
return gzip.NewWriter(w)
|
||||
},
|
||||
},
|
||||
{
|
||||
Extension: ".xz",
|
||||
WriterFactory: func(w io.Writer) io.WriteCloser {
|
||||
xw, _ := xz.NewWriter(w)
|
||||
return xw
|
||||
},
|
||||
},
|
||||
{
|
||||
Extension: ".zst",
|
||||
WriterFactory: func(w io.Writer) io.WriteCloser {
|
||||
zw, _ := zstd.NewWriter(w)
|
||||
return zw
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
})
|
||||
for _, c := range cases {
|
||||
t.Run(c.Extension, func(t *testing.T) {
|
||||
var cbuf bytes.Buffer
|
||||
w := c.WriterFactory(&cbuf)
|
||||
w.Write(buf.Bytes())
|
||||
w.Close()
|
||||
|
||||
t.Run("gz", func(t *testing.T) {
|
||||
var zbuf bytes.Buffer
|
||||
zw := gzip.NewWriter(&zbuf)
|
||||
zw.Write(buf.Bytes())
|
||||
zw.Close()
|
||||
data := createArchive(map[string][]byte{"control.tar" + c.Extension: cbuf.Bytes()})
|
||||
|
||||
data := createArchive(map[string][]byte{"control.tar.gz": zbuf.Bytes()})
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
})
|
||||
t.Run("TrailingSlash", func(t *testing.T) {
|
||||
data := createArchive(map[string][]byte{"control.tar" + c.Extension + "/": cbuf.Bytes()})
|
||||
|
||||
t.Run("xz", func(t *testing.T) {
|
||||
var xbuf bytes.Buffer
|
||||
xw, _ := xz.NewWriter(&xbuf)
|
||||
xw.Write(buf.Bytes())
|
||||
xw.Close()
|
||||
|
||||
data := createArchive(map[string][]byte{"control.tar.xz": xbuf.Bytes()})
|
||||
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
})
|
||||
|
||||
t.Run("zst", func(t *testing.T) {
|
||||
var zbuf bytes.Buffer
|
||||
zw, _ := zstd.NewWriter(&zbuf)
|
||||
zw.Write(buf.Bytes())
|
||||
zw.Close()
|
||||
|
||||
data := createArchive(map[string][]byte{"control.tar.zst": zbuf.Bytes()})
|
||||
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
})
|
||||
p, err := ParsePackage(data)
|
||||
assert.NotNil(t, p)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "gitea", p.Name)
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
type nopCloser struct {
|
||||
io.Writer
|
||||
}
|
||||
|
||||
func (nopCloser) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestParseControlFile(t *testing.T) {
|
||||
buildContent := func(name, version, architecture string) *bytes.Buffer {
|
||||
var buf bytes.Buffer
|
||||
|
@ -187,7 +187,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||
)
|
||||
if err != nil {
|
||||
switch err {
|
||||
case packages_model.ErrDuplicatePackageVersion:
|
||||
case packages_model.ErrDuplicatePackageVersion, packages_model.ErrDuplicatePackageFile:
|
||||
apiError(ctx, http.StatusBadRequest, err)
|
||||
case packages_service.ErrQuotaTotalCount, packages_service.ErrQuotaTypeSize, packages_service.ErrQuotaTotalSize:
|
||||
apiError(ctx, http.StatusForbidden, err)
|
||||
|
@ -144,6 +144,10 @@ func TestPackageDebian(t *testing.T) {
|
||||
}
|
||||
return seen
|
||||
})
|
||||
|
||||
req = NewRequestWithBody(t, "PUT", uploadURL, createArchive(packageName, packageVersion, architecture))
|
||||
AddBasicAuthHeader(req, user.Name)
|
||||
MakeRequest(t, req, http.StatusBadRequest)
|
||||
})
|
||||
|
||||
t.Run("Download", func(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user