55 Commits
v1.23 ... v1.24

Author SHA1 Message Date
Snowball_233
d5eac4f23d chore(docker-compose): remove obsolete version parament & remove useless default external=false (#288)
- Removed deprecated `version` key from docker-compose.yaml
- Cleaned up unnecessary `external: false` declarations for networks/volumes

Signed-off-by: Snowball_233 <snowballxueqiu@noreply.gitea.com>

Reviewed-on: https://gitea.com/gitea/docs/pulls/288
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: Snowball_233 <snowballxueqiu@noreply.gitea.com>
Co-committed-by: Snowball_233 <snowballxueqiu@noreply.gitea.com>
2025-10-30 14:07:06 +00:00
drabart
f954c6e7b8 Fix typo in CAD preview supported extensions list (#286) (#287)
Fixes small typo that caused copied code to not work.

Reviewed-on: https://gitea.com/gitea/docs/pulls/287
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: drabart <drabart@noreply.gitea.com>
Co-committed-by: drabart <drabart@noreply.gitea.com>
2025-10-28 01:40:09 +00:00
Lunny Xiao
cf9b8dce28 uprade 1.24.7 2025-10-25 21:03:20 -07:00
wxiaoguang
12293b604e Update docs/administration/config-cheat-sheet.md (#285)
Reviewed-on: https://gitea.com/gitea/docs/pulls/285
2025-10-25 03:47:14 +00:00
dangjinghao
bb7b7fe5bf Add frontmatter and TOC rendering support for markdown files (#284)
<https://github.com/go-gitea/gitea/issues/14411#issuecomment-764871702>

Reviewed-on: https://gitea.com/gitea/docs/pulls/284
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: dangjinghao <dangjinghaoemail@163.com>
Co-committed-by: dangjinghao <dangjinghaoemail@163.com>
2025-10-23 17:55:14 +00:00
juls0730
b6af199508 Clarify Setting up a push mirror from Gitea to GitHub in repo mirror docs (#275)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/275
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: juls0730 <juls0730@noreply.gitea.com>
Co-committed-by: juls0730 <juls0730@noreply.gitea.com>
2025-10-16 22:09:44 +00:00
Renovate Bot
dedfbf1f27 chore(deps): update dependency cross-env to v10.1.0 (#277)
Reviewed-on: https://gitea.com/gitea/docs/pulls/277
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-10-16 14:53:32 +00:00
Renovate Bot
f9ff323873 fix(deps): update dependency @mui/material to v7.3.4 (#278)
Reviewed-on: https://gitea.com/gitea/docs/pulls/278
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-10-16 14:51:56 +00:00
Renovate Bot
1046625638 fix(deps): update react monorepo to v19.2.0 (#279)
Reviewed-on: https://gitea.com/gitea/docs/pulls/279
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-10-16 14:50:44 +00:00
Renovate Bot
200479a1a3 chore(deps): update actions/setup-node action to v6 (#282)
Reviewed-on: https://gitea.com/gitea/docs/pulls/282
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-10-16 14:44:29 +00:00
DiegoBM
bd38456e4b Fix home reference (#281)
~ points to the logged user's home, not to /home

Co-authored-by: Diego de Blas Mateo <1613216+DiegoBM@users.noreply.github.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/281
Reviewed-by: TheFox0x7 <thefox0x7@noreply.gitea.com>
Co-authored-by: DiegoBM <diegobm@noreply.gitea.com>
Co-committed-by: DiegoBM <diegobm@noreply.gitea.com>
2025-10-16 14:43:55 +00:00
vincentkersten
3578007c38 Update docs/administration/reverse-proxies.md (#280)
Using a full certificate chain will prevent errors from using git directly on the URL to be pulled/cloned.
 (Error: 'fatal: unable to access 'https://git.example.net/git/sarah/test.git': server certificate verification failed. CAfile: none CRLfile: none')

Reviewed-on: https://gitea.com/gitea/docs/pulls/280
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: vincentkersten <vincentkersten@noreply.gitea.com>
Co-committed-by: vincentkersten <vincentkersten@noreply.gitea.com>
2025-10-08 16:30:48 +00:00
johny-mnemonic
c586a396b8 Add Nginx Proxy Manager instructions (#274)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/274
Co-authored-by: johny-mnemonic <johny-mnemonic@noreply.gitea.com>
Co-committed-by: johny-mnemonic <johny-mnemonic@noreply.gitea.com>
2025-09-15 03:09:06 +00:00
Lunny Xiao
de6d4374b0 Upgrade to 1.24.6 2025-09-11 20:20:46 -07:00
Johan Van de Wauw
c9bf137a23 Add TWO_FACTOR_AUTH documentation (#273)
Reviewed-on: https://gitea.com/gitea/docs/pulls/273
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Johan Van de Wauw <johanvdw@noreply.gitea.com>
Co-committed-by: Johan Van de Wauw <johanvdw@noreply.gitea.com>
2025-09-10 20:48:36 +00:00
Renovate Bot
83da675c59 chore(deps): update actions/setup-node action to v5 (#270)
Reviewed-on: https://gitea.com/gitea/docs/pulls/270
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-09-07 11:11:18 +00:00
Renovate Bot
135f34d09a chore(deps): update aws-actions/configure-aws-credentials action to v5 (#271)
Reviewed-on: https://gitea.com/gitea/docs/pulls/271
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-09-07 11:11:07 +00:00
baikuarch
3eda094305 更新 i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/backup-and-restore.md (#272)
Reviewed-on: https://gitea.com/gitea/docs/pulls/272
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: baikuarch <baikuarch@sina.com>
Co-committed-by: baikuarch <baikuarch@sina.com>
2025-09-06 00:57:20 +00:00
Renovate Bot
312cbc2a6e fix(deps): update dependency @mdx-js/react to v3.1.1 (#267)
Reviewed-on: https://gitea.com/gitea/docs/pulls/267
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-09-03 21:01:10 +00:00
Renovate Bot
4164f4df06 fix(deps): update dependency @mui/material to v7.3.2 (#268)
Reviewed-on: https://gitea.com/gitea/docs/pulls/268
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-09-03 21:00:45 +00:00
ifurther
cb462089e9 docs: update zh-tw (#265)
Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ifurther <55025025+ifurther@users.noreply.github.com>
Co-committed-by: ifurther <55025025+ifurther@users.noreply.github.com>
2025-09-03 21:00:35 +00:00
desysoft
908a27589d Update versioned_docs/version-1.24/development/api-usage.md (#269)
Fix JSON syntax error in token creation request

The previous JSON was malformed:

{"name":test_token","scopes":[...]}

The value of "name" was missing opening quotes, causing the error:
invalid character 't' looking for beginning of value

Fixed by enclosing the string in double quotes:

{"name":"test_token","scopes":[...]}

Reviewed-on: https://gitea.com/gitea/docs/pulls/269
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: desysoft <desysoft@noreply.gitea.com>
Co-committed-by: desysoft <desysoft@noreply.gitea.com>
2025-09-03 21:00:09 +00:00
Renovate Bot
6b64b97e3b chore(deps): update actions/checkout action to v5 (#261)
Reviewed-on: https://gitea.com/gitea/docs/pulls/261
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-09-01 01:38:35 +00:00
Renovate Bot
90ab1c20c2 fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.52.0 (#230)
Reviewed-on: https://gitea.com/gitea/docs/pulls/230
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-08-29 18:47:35 +00:00
Renovate Bot
d61eaecbb1 fix(deps): update docusaurus monorepo to v3.8.1 (#225)
Reviewed-on: https://gitea.com/gitea/docs/pulls/225
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-08-27 16:12:37 +00:00
Renovate Bot
b30993162c fix(deps): update dependency @mui/material to v7.3.1 (#242)
Reviewed-on: https://gitea.com/gitea/docs/pulls/242
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-08-27 16:11:50 +00:00
Renovate Bot
004bebe6b4 fix(deps): update react monorepo to v19.1.1 (#254)
Reviewed-on: https://gitea.com/gitea/docs/pulls/254
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-08-27 16:11:08 +00:00
techknowlogick
ed59125e25 Enable v4 future 2025-08-27 16:10:19 +00:00
Lunny Xiao
c699d12a55 upgrade to 1.24.5 2025-08-14 18:52:32 -07:00
kmanwar89
4d5fd1f6fb Clarified GPG signature validation instructions to be more clear (#262)
Added instructions on how to download the signature file using wget, and fixed a typo in the wget commands that would have caused the command to fail when copied/pasted.

Reviewed-on: https://gitea.com/gitea/docs/pulls/262
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: kmanwar89 <kmanwar89@noreply.gitea.com>
Co-committed-by: kmanwar89 <kmanwar89@noreply.gitea.com>
2025-08-14 21:51:45 +00:00
Lunny Xiao
c13d82ccc3 Update gpg check command to use hkps by default (#260)
Fix #255

Reviewed-on: https://gitea.com/gitea/docs/pulls/260
2025-08-12 16:57:24 +00:00
nero-dv
0552f4523c Update versioned_docs/version-1.24/installation/from-binary.md (#259)
The main branch is missing the directory where the autocompletion scripts were in. Version 1.24 does still have the scripts, so linked directly to them.

Reviewed-on: https://gitea.com/gitea/docs/pulls/259
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: nero-dv <nero-dv@noreply.gitea.com>
Co-committed-by: nero-dv <nero-dv@noreply.gitea.com>
2025-08-08 21:55:21 +00:00
Lunny Xiao
03c98878cf upgrade to 1.24.4 2025-08-04 17:00:13 -07:00
Christopher Homberger
cf33eee47f Initial Ephemeral Runners Documentation (#239)
Document this feature for 1.24 onwards.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/239
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Christopher Homberger <christopher.homberger@web.de>
Co-committed-by: Christopher Homberger <christopher.homberger@web.de>
2025-07-28 20:40:59 +00:00
Christopher Homberger
201f0f3ef8 Document workflow_dispatch workflow_run (#238)
Document missing workflow triggers of 1.23..1.25-dev

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/238
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Christopher Homberger <christopher.homberger@web.de>
Co-committed-by: Christopher Homberger <christopher.homberger@web.de>
2025-07-28 20:39:01 +00:00
Christopher Homberger
e8a6c4281d Add ssh commit signing to docs of 1.25-dev (#241)
Documentation for my changes to ssh commit signing in <https://github.com/go-gitea/gitea/pull/34341>.

* Renames "GPG Commit Signatures" to "GPG/SSH Commit Signatures", since the url is called just signing and creating a new page would duplicate a lot
* _"The default option and repository specific signing keys are not supported for ssh keys"_
   * the original draft implementation did support this for ssh keys
   * this warning should avoid people expecting this gitconfig style things to work for ssh keys, since verifying is disabled in this case (e.g. pre 1.25 undocumented behavior preserved).

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/241
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Christopher Homberger <christopher.homberger@web.de>
Co-committed-by: Christopher Homberger <christopher.homberger@web.de>
2025-07-28 20:37:52 +00:00
Karthik-Bhandary
641977c93a Updated the docs and versioned_docs (#253)
This closes #251

Co-authored-by: karthik.bhandary <karthik.bhandary@kfintech.com>
Co-authored-by: techknowlogick <techknowlogick@noreply.gitea.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/253
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: Karthik-Bhandary <karthik-bhandary@noreply.gitea.com>
Co-committed-by: Karthik-Bhandary <karthik-bhandary@noreply.gitea.com>
2025-07-28 19:46:12 +00:00
Renovate Bot
fbd73fd263 chore(deps): update dependency cross-env to v10 (#250)
Reviewed-on: https://gitea.com/gitea/docs/pulls/250
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-07-28 19:45:22 +00:00
dr-1
a6fc8044b0 Make language adjustments on index page (#244)
Some minor adjustments on the landing page.

- Fix grammatical errors
- Fix a capitalization error and inconsistent capitalization in a heading
- Remove a redundant sentence

Co-authored-by: Dominik Rubo <dominik.rubo@posteo.net>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/244
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: dr-1 <dr-1@noreply.gitea.com>
Co-committed-by: dr-1 <dr-1@noreply.gitea.com>
2025-07-18 03:18:05 +00:00
ChristopherHX
fa11851d67 Fix formatting of email setup (#249)
Sorry I incorrectly used the :::note syntax in one PR merged recently, missing `:::` to end the quote

CC @lunny

Picture of the bug I introduced appended.

Reviewed-on: https://gitea.com/gitea/docs/pulls/249
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Co-committed-by: ChristopherHX <christopher.homberger@web.de>
2025-07-18 03:10:58 +00:00
ChristopherHX
f9ff184ee3 Mention smtp+starttls not only in the config cheat sheet (#247)
I almost entered STARTTLS under PROTOCOLS, better to mention the correct solution without needing to check the config cheat sheet.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/247
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Co-committed-by: ChristopherHX <christopher.homberger@web.de>
2025-07-16 17:48:45 +00:00
ChristopherHX
cbbf31f1d5 Provide a hint for ENABLE_NOTIFY_MAIL in email setup (#246)
* some people like me might wonder why the email-setup didn't work

While reviewing https://github.com/go-gitea/gitea/pull/34982#pullrequestreview-3013995449, I enabled the mailer the first time and found this solution in the debugger not in the docs.

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/246
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Co-committed-by: ChristopherHX <christopher.homberger@web.de>
2025-07-16 17:48:12 +00:00
Lunny Xiao
47594bba97 upgrade gitea to 1.24.3 2025-07-15 09:44:13 -07:00
Renovate Bot
63c75a97c6 fix(deps): update dependency @emotion/styled to v11.14.1 (#240)
Reviewed-on: https://gitea.com/gitea/docs/pulls/240
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-06-30 16:06:46 +00:00
Renovate Bot
50aad0431b fix(deps): update dependency @mui/material to v7.1.2 (#233)
Reviewed-on: https://gitea.com/gitea/docs/pulls/233
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-06-30 16:06:40 +00:00
paultibbetts
164f1c837f Update URL for Caddy reverse proxy HTTPS guide (#236)
Reviewed-on: https://gitea.com/gitea/docs/pulls/236
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: paultibbetts <paultibbetts@noreply.gitea.com>
Co-committed-by: paultibbetts <paultibbetts@noreply.gitea.com>
2025-06-25 14:17:33 +00:00
Lunny Xiao
870f30e886 upgrade to 1.24.2 2025-06-21 10:13:34 -07:00
Lunny Xiao
33ec7a49df upgrade to 1.24.1 2025-06-19 15:31:41 -07:00
gnscc
bc606bd422 Fix typo in api-usage.md (#232)
Fix breaking typo in api-usage.

Reviewed-on: https://gitea.com/gitea/docs/pulls/232
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: gnscc <gnscc@noreply.gitea.com>
Co-committed-by: gnscc <gnscc@noreply.gitea.com>
2025-06-17 19:38:09 +00:00
recoolcz
3a82ab51f3 bugfix: Fix O3DV script since it broke in 1.24.0 (#231)
Reviewed-on: https://gitea.com/gitea/docs/pulls/231
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: recoolcz <recoolcz@noreply.gitea.com>
Co-committed-by: recoolcz <recoolcz@noreply.gitea.com>
2025-06-16 17:10:30 +00:00
Lunny Xiao
c8ebd4e896 Fix latest stable version 2025-06-10 15:46:23 -07:00
techknowlogick
a320f53087 1.24.0 2025-06-10 15:21:23 +00:00
Renovate Bot
95544e7847 fix(deps): update dependency @mui/material to v7.1.1 (#228)
Reviewed-on: https://gitea.com/gitea/docs/pulls/228
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-06-10 15:20:44 +00:00
Renovate Bot
af373024a0 fix(deps): update dependency @easyops-cn/docusaurus-search-local to ^0.50.0 (#229)
Reviewed-on: https://gitea.com/gitea/docs/pulls/229
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2025-06-10 15:19:21 +00:00
techknowlogick
57ed041528 bump to 1.24.0 2025-06-10 15:08:01 +00:00
157 changed files with 5300 additions and 5288 deletions

View File

@@ -10,8 +10,8 @@ jobs:
build-docs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
with:
node-version: 20
cache: npm
@@ -37,7 +37,7 @@ jobs:
run: |
make build
- name: aws credential configure
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@v5
with:
aws-access-key-id: ${{ secrets.AWS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}

View File

@@ -7,8 +7,8 @@ jobs:
build-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
with:
node-version: 20
cache: npm

View File

@@ -9,14 +9,14 @@ jobs:
update-swagger:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- run: |
wget https://raw.githubusercontent.com/go-gitea/gitea/refs/heads/main/templates/swagger/v1_json.tmpl
sed -i "$@" 's\"version": "{{AppVer | JSEscape}}"\"version": "dev"\' v1_json.tmpl
sed -i "$@" 's\"basePath": "{{AppSubUrl | JSEscape}}/api/v1"\"basePath": "https://gitea.com/api/v1"\' v1_json.tmpl
mv v1_json.tmpl static/swagger-latest.json
for ver in '1.24.0-rc0' '1.23.8' '1.22.6' '1.21.11' '1.20.6' '1.19.4'; do
for ver in '1.24.7' '1.23.8' '1.22.6' '1.21.11' '1.20.6' '1.19.4'; do
wget https://raw.githubusercontent.com/go-gitea/gitea/refs/tags/v${ver}/templates/swagger/v1_json.tmpl
sed -i "$@" "s|\"version\": \"{{AppVer \| JSEscape}}\"|\"version\": \"${ver}\"|" v1_json.tmpl
sed -i "$@" 's\"basePath": "{{AppSubUrl | JSEscape}}/api/v1"\"basePath": "https://gitea.com/api/v1"\' v1_json.tmpl

View File

@@ -1,5 +1,5 @@
---
date: "2016-12-26T16:00:00+02:00"
date: "2025-10-26T00:00:00+00:00"
slug: "config-cheat-sheet"
sidebar_position: 30
aliases:
@@ -99,7 +99,7 @@ In addition, there is _`StaticRootPath`_ which can be set as a built-in at build
default is not to present.
:::warning
This maybe harmful to you website if you do not give it a right value.
This maybe harmful to your website if you do not give it a right value.
:::
- `DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH`: **false**: Close an issue if a commit on a non default branch marks it as closed.
@@ -234,6 +234,7 @@ The following configuration set `Content-Type: application/vnd.android.package-a
- `CUSTOM_EMOJIS`: **gitea, codeberg, gitlab, git, github, gogs**: Additional Emojis not defined in the utf8 standard.
By default, we support Gitea (:gitea:), to add more copy them to public/assets/img/emoji/emoji_name.png and
add it to this config.
- `ENABLED_EMOJIS`: **_empty_**: Comma separated list of enabled emojis, for example: "smile, thumbsup, thumbsdown". Leave it empty to enable all emojis.
- `DEFAULT_SHOW_FULL_NAME`: **false**: Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used.
- `SEARCH_REPO_DESCRIPTION`: **true**: Whether to search within description at repository search on explore page.
- `ONLY_SHOW_RELEVANT_REPOS`: **false**: Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used.
@@ -626,6 +627,7 @@ And the following unique queues:
- `PASSWORD_CHECK_PWN`: **false**: Check [HaveIBeenPwned](https://haveibeenpwned.com/Passwords) to see if a password has been exposed.
- `SUCCESSFUL_TOKENS_CACHE_SIZE`: **20**: Cache successful token hashes. API tokens are stored in the DB as pbkdf2 hashes however, this means that there is a potentially significant hashing load when there are multiple API operations. This cache will store the successfully hashed tokens in a LRU cache as a balance between performance and security.
- `DISABLE_QUERY_AUTH_TOKEN`: **false**: Reject API tokens sent in URL query string (Accept Header-based API tokens only). This setting will default to `true` in Gitea 1.23 and be deprecated in Gitea 1.24.
- `TWO_FACTOR_AUTH`: **_empty_**: set to enforced to enforce two factor authentication. Only available in Gitea 1.24 and later.
## Camo (`camo`)
@@ -1258,6 +1260,8 @@ This section only does "set" config, a removed config key from this section won'
- `MERMAID_MAX_SOURCE_CHARACTERS`: **50000**: Set the maximum size of a Mermaid source. (Set to -1 to disable)
## Markup External Render (`markup.external-render-name`)
Gitea can support Markup using external tools. The example below will add a markup named `asciidoc`.
```ini
@@ -1270,7 +1274,6 @@ IS_INPUT_FILE = false
```
- ENABLED: **false** Enable markup support; set to **true** to enable this renderer.
- NEED\_POSTPROCESS: **true** set to **true** to replace links / sha1 and etc.
- FILE\_EXTENSIONS: **_empty_** List of file extensions that should be rendered by an external
command. Multiple extensions needs a comma as splitter.
- RENDER\_COMMAND: External command to render all matching extensions.
@@ -1279,6 +1282,10 @@ IS_INPUT_FILE = false
- sanitized: Sanitize the content and render it inside current page, default to only allow a few HTML tags and attributes. Customized sanitizer rules can be defined in `[markup.sanitizer.*]`.
- no-sanitizer: Disable the sanitizer and render the content inside current page. It's **insecure** and may lead to XSS attack if the content contains malicious code.
- iframe: Render the content in a separate standalone page and embed it into current page by iframe. The iframe is in sandbox mode with same-origin disabled, and the JS code are safely isolated from parent page.
- RENDER_CONTENT_SANDBOX: **_empty_** The sandbox applied to the iframe and Content-Security-Policy header when RENDER_CONTENT_MODE is `iframe`. It defaults to a safe set of "allow-*" restrictions (space separated). You can also set it by your requirements or use "disabled" to disable the sandbox completely. When set it, make sure there is no security risk:
- PDF-only content: generally safe to use "disabled", and it needs to be "disabled" because PDF only renders with no sandbox.
- HTML content with JS: if the "RENDER_COMMAND" can guarantee there is no XSS, then it is safe, otherwise, you need to fine tune the "allow-*" restrictions.
- NEED_POST_PROCESS: **false** Whether post-process the rendered HTML content, including: resolve relative links and image sources, recognizing issue/commit references, escaping invisible characters, mentioning users, rendering permlink code blocks, replacing emoji shorthands, etc. By default, this is true when RENDER_CONTENT_MODE is `sanitized`, otherwise false.
Two special environment variables are passed to the render command:

View File

@@ -180,9 +180,13 @@ In $GITEA_CUSTOM we need to add our template.
This template needs to be saved in "$GITEA_CUSTOM/templates/custom/".
Here create file "footer.tmpl" and add following text into it:
```
nano $GITEA_CUSTOM/templates/custom/footer.tmpl
```
```html
<script>
document.addEventListener('DOMContentLoaded', () => {
function onPageChange() {
// Supported 3D file types
const fileTypes = ['3dm', '3ds', '3mf', 'amf', 'bim', 'brep', 'dae', 'fbx', 'fcstd', 'glb', 'gltf', 'ifc', 'igs', 'iges', 'stp', 'step', 'stl', 'obj', 'off', 'ply', 'wrl'];
@@ -193,47 +197,112 @@ Here create file "footer.tmpl" and add following text into it:
return href.includes('/raw/') && fileTypes.some(ext => href.endsWith(`.${ext}`));
});
if (link3D) {
const script = document.createElement('script');
script.onload = () => {
const fileUrl = link3D.getAttribute('href');
// Prepare the container for the viewer
const fileView = document.querySelector('.file-view');
if (fileView) {
fileView.setAttribute('id', 'view-3d');
fileView.style.padding = '0';
fileView.style.margin = '0';
fileView.style.height = '400px';
fileView.style.width = '100%';
fileView.innerHTML = '';
}
// Initialize viewer
const parentDiv = document.getElementById('view-3d');
if (parentDiv) {
const viewer = new OV.EmbeddedViewer(parentDiv, {
backgroundColor: new OV.RGBAColor(59, 68, 76, 0), // Transparent
defaultColor: new OV.RGBColor(200, 200, 200),
edgeSettings: new OV.EdgeSettings(false, new OV.RGBColor(0, 0, 0), 1),
environmentSettings: new OV.EnvironmentSettings([
'/assets/o3dv/envmaps/fishermans_bastion/negx.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posx.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posy.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/negy.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posz.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/negz.jpg'
], false)
});
// Load the model
viewer.LoadModelFromUrlList([fileUrl]);
}
};
script.src = '/assets/o3dv/o3dv.min.js';
document.head.appendChild(script);
if (link3D) {
const existingScript = document.querySelector('script[src="/assets/o3dv/o3dv.min.js"]');
const initializeViewer = () => {
const fileUrl = link3D.getAttribute('href');
const fileView = document.querySelector('.file-view');
if (!fileView) return;
// Remove only the old viewer container if it exists
const oldView3D = document.getElementById('view-3d');
if (oldView3D) {
oldView3D.remove(); // safely remove old viewer container div
} else {
// No #view-3d, so remove all children inside .file-view
while (fileView.firstChild) {
fileView.removeChild(fileView.firstChild);
}
}
// Create a new container for the viewer
const newView3D = document.createElement('div');
newView3D.id = 'view-3d';
newView3D.style.padding = '0';
newView3D.style.margin = '0';
newView3D.style.flexGrow = '1';
newView3D.style.minHeight = '0';
newView3D.style.width = '100%';
const header = document.querySelector('header');
const headerHeight = header ? header.offsetHeight : 0;
newView3D.style.height = `calc(100vh - ${headerHeight}px)`;
// Append the new container inside fileView
fileView.appendChild(newView3D);
const parentDiv = document.getElementById('view-3d');
if (parentDiv) {
const viewer = new OV.EmbeddedViewer(parentDiv, {
backgroundColor: new OV.RGBAColor(59, 68, 76, 0),
defaultColor: new OV.RGBColor(200, 200, 200),
edgeSettings: new OV.EdgeSettings(false, new OV.RGBColor(0, 0, 0), 1),
environmentSettings: new OV.EnvironmentSettings([
'/assets/o3dv/envmaps/fishermans_bastion/negx.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posx.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posy.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/negy.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/posz.jpg',
'/assets/o3dv/envmaps/fishermans_bastion/negz.jpg'
], false)
});
viewer.LoadModelFromUrlList([fileUrl]);
}
};
if (typeof OV === 'undefined') {
if (!existingScript) {
const script = document.createElement('script');
script.onload = initializeViewer;
script.src = '/assets/o3dv/o3dv.min.js';
document.head.appendChild(script);
} else {
// Script is loading but OV not yet ready — wait for it
existingScript.addEventListener('load', initializeViewer);
}
} else {
// OV already loaded
initializeViewer();
}
}
};
// Run when the page is fully loaded
document.addEventListener('DOMContentLoaded', onPageChange);
const targetSelector = 'a.ui.mini.basic.button[href*="/raw/"]';
let lastHref = null;
let timeoutId = null;
const checkAndRun = () => {
const rawLink = document.querySelector(targetSelector);
if (!rawLink) return;
const currentHref = rawLink.getAttribute('href');
if (currentHref !== lastHref) {
lastHref = currentHref;
const fileName = currentHref.split('/').pop();
console.log('New Raw file link detected after delay:', fileName);
onPageChange();
}
};
const observer = new MutationObserver(() => {
// Delay execution by 300ms after last mutation
clearTimeout(timeoutId);
timeoutId = setTimeout(checkAndRun, 300);
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
</script>
```
@@ -248,11 +317,11 @@ mkdir o3dv
cd o3dv
```
Copy latest release zip link from [`GitHub`](https://github.com/kovacsv/Online3DViewer/releases) (v0.15.0 as of now).
Copy latest release zip link from [`GitHub`](https://github.com/kovacsv/Online3DViewer/releases) (v0.16.0 as of now).
Here use e.g. wget to download the file:
```
wget https://github.com/kovacsv/Online3DViewer/releases/download/0.15.0/o3dv.zip
wget https://github.com/kovacsv/Online3DViewer/releases/download/0.16.0/o3dv.zip
```
Use e.g. unzip to unzip the archive:
@@ -262,20 +331,14 @@ unzip o3dv.zip
#### Part 3: Folder permissions
Now the last thing. Change permissions on the "footer.tmpl":
```
chown git:git $GITEA_CUSTOM/templates/custom/footer.tmpl
chmod 770 $GITEA_CUSTOM/templates/custom/footer.tmpl
```
And on the public folder:
Now the last thing. Change permissions on the public folder:
```
chown -R git:git $GITEA_CUSTOM/public
```
Now we have everything ready! Restart your gitea instance to apply these changes and test it in your browser.
You should end-up with a folder structure similar to this:
Sanity check. You should end-up with a folder structure similar to this:
```
$GITEA_CUSTOM/templates

View File

@@ -10,6 +10,10 @@ aliases:
Gitea has mailer functionality for sending transactional emails (such as registration confirmation). It can be configured to either use Sendmail (or compatible MTAs like Postfix and msmtp) or directly use SMTP server.
:::note
Be sure to set ENABLE_NOTIFY_MAIL=true to allow Gitea to send email notifications. Check the [Config Cheat Sheet](../administration/config-cheat-sheet.md#service-service) for details.
:::
## Using Sendmail
Use `sendmail` command as mailer.
@@ -56,7 +60,7 @@ For the full list of options check the [Config Cheat Sheet](../administration/co
Authentication is only supported when the SMTP server communication is encrypted with TLS or `HOST=localhost`. TLS encryption can be through:
:::
- STARTTLS (also known as Opportunistic TLS) via port 587. Initial connection is done over cleartext, but then be upgraded over TLS if the server supports it.
- STARTTLS (also known as Opportunistic TLS) via port 587 with `PROTOCOL=smtp+starttls`. Initial connection is done over cleartext, but then be upgraded over TLS if the server supports it.
- SMTPS connection (SMTP over TLS) via the default port 465. Connection to the server use TLS from the beginning.
- Forced SMTPS connection with `PROTOCOL=smtps`. (These are both known as Implicit TLS.)
This is due to protections imposed by the Go internal libraries against STRIPTLS attacks.

View File

@@ -14,6 +14,7 @@ aliases:
2. Make the reverse-proxy pass `https://git.example.com/foo` to `http://gitea:3000/foo`.
3. Make sure the reverse-proxy does not decode the URI. The request `https://git.example.com/a%2Fb` should be passed as `http://gitea:3000/a%2Fb`.
4. Make sure `Host` and `X-Fowarded-Proto` headers are correctly passed to Gitea to make Gitea see the real URL being visited.
5. Make sure your webserver has a certificate, including all intermediate and RootCA certificates, for `git clone` and `git pull` to work.
### Use a sub-path
@@ -149,6 +150,20 @@ server {
}
```
## Nginx Proxy Manager
If you are using Nginx Proxy Manager to serve your Gitea instance it differs slighly from the raw Nginx.
It is [adding some directives](https://github.com/NginxProxyManager/nginx-proxy-manager/blob/master/docker/rootfs/etc/nginx/conf.d/include/proxy.conf) for a custom location by default, so you have to skip these from the above mentioned Nginx config. Otherwise Nginx will produce `400 bad request` error due to duplicated directives (`proxy_set_header Host $host` is the particularly problematic one).
So while creating the `/` Custom location, just add the following lines to it's configuration:
```nginx
client_max_body_size 512M;
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
```
## Apache HTTPD
If you want Apache HTTPD to serve your Gitea instance, you can add the following to your Apache HTTPD configuration (usually located at `/etc/apache2/httpd.conf` in Ubuntu):

View File

@@ -6,12 +6,14 @@ aliases:
- /en-us/signing
---
# GPG Commit Signatures
# GPG/SSH Commit Signatures
Gitea will verify GPG commit signatures in the provided tree by
Gitea will verify gpg/ssh commit signatures in the provided tree by
checking if the commits are signed by a key within the Gitea database,
or if the commit matches the default key for Git.
Additionally Gitea will verify commits signed by ssh keys, which public keys are part of [`TRUSTED_SSH_KEYS`](#general-configuration).
Keys are not checked to determine if they have expired or revoked.
Keys are also not checked with keyservers.
@@ -46,6 +48,11 @@ for GPG - in particular it is probably advisable to only install a
signing secret subkey without the master signing and certifying secret
key.
## Installing and generating a SSH key for Gitea
You can run `ssh-keygen -t ed25519 -f gitea-signing-key` to generate the private/public keypair for commit signing without any password. Usually you would store the key next to the gitea configuration, then point `SIGNING_KEY` to the generated public key `/path/to/gitea-signing-key.pub`. Gitea generates all its commits using the server `git` command at present - and therefore the server `ssh-keygen` will be used for
signing (if configured.)
## General Configuration
Gitea's configuration for signing can be found with the
@@ -65,16 +72,41 @@ MERGES = pubkey, twofa, basesigned, commitssigned
...
```
---
For SSH commit signing, you need to specify the `SIGNING_FORMAT` to `ssh` instead of the default `openpgp`. `SIGNING_NAME` and `SIGNING_EMAIL` are required for verifing the signatures.
This looks like this:
```ini
...
[repository.signing]
SIGNING_KEY = /path/to/gitea-signing-key.pub
SIGNING_NAME =
SIGNING_EMAIL =
SIGNING_FORMAT = ssh
INITIAL_COMMIT = always
CRUD_ACTIONS = pubkey, twofa, parentsigned
WIKI = never
MERGES = pubkey, twofa, basesigned, commitssigned
...
```
- `/path/to/gitea-signing-key` is expected to be the private key for `/path/to/gitea-signing-key.pub` [see here how to generate a new ssh keypair](#installing-and-generating-a-ssh-key-for-gitea).
- `TRUSTED_SSH_KEYS = ssh-<algorithm> <key>` or `TRUSTED_SSH_KEYS = ssh-<algorithm> <key1>, ssh-<algorithm> <key2>` can be used for rotating the global ssh signing key to continue verifying commits signed by the previous keys.
### `SIGNING_KEY`
The first option to discuss is the `SIGNING_KEY`. There are three main
options:
- `none` - this prevents Gitea from signing any commits
- `default` - Gitea will default to the key configured within `git config`
- `default` - Gitea will default to the gpg key configured within `git config`
- `KEYID` - Gitea will sign commits with the gpg key with the ID
`KEYID`. In this case you should provide a `SIGNING_NAME` and
`SIGNING_EMAIL` to be displayed for this key.
- `/path/to/gitea-signing-key.pub` - Gitea will sign commits with the ssh key without the `.pub` suffix `/path/to/gitea-signing-key`. In this case you should provide a `SIGNING_NAME` and
`SIGNING_EMAIL` to be displayed for this key and set `SIGNING_FORMAT` to `ssh`.
The `default` option will interrogate `git config` for
`commit.gpgsign` option - if this is set, then it will use the results
@@ -97,6 +129,10 @@ Related home files for git command (like `.gnupg`) should also be put in Gitea's
If you like to keep the `.gnupg` directory outside of `{[git].HOME_PATH}/`, consider setting the `$GNUPGHOME` environment variable to your preferred location, otherwise Gitea will use the gpg keys only under `{[git].HOME_PATH}/.gnupg`.
:::
:::warning
The default option and repository specific signing keys are not supported for ssh keys
:::
### `INITIAL_COMMIT`
This option determines whether Gitea should sign the initial commit
@@ -168,3 +204,9 @@ In cases where there is a repository specific key this can be obtained from:
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg
```
For ssh commit signing the default ssh public key can be obtained via the API at:
```sh
/api/v1/signing-key.pub
```

View File

@@ -35,7 +35,8 @@ Note that `/users/:name/tokens` is a special endpoint and requires you
to authenticate using `BasicAuth` and a password, as follows:
```sh
$ curl -H "Content-Type: application/json" -d '{"name":test_token","scopes":["read:activitypub","read:issue", "write:misc", "read:notification", "read:organization", "read:package", "read:repository", "read:user"]}'
$ curl -H "Content-Type: application/json" \
-d '{"name":"test_token","scopes":["read:activitypub","read:issue", "write:misc", "read:notification", "read:organization", "read:package", "read:repository", "read:user"]}' \
-u 'username:password' "https://gitea.your.host/api/v1/users/{username}/tokens"
{"id":1,"name":"test_token","sha1":"9fcb1158165773dd010fca5f0cf7174316c3e37d","token_last_eight":"16c3e37d"}
```

View File

@@ -13,7 +13,7 @@ Gitea was originally forked from [Gogs](https://gogs.io) and almost all the code
:::warning
Gitea does not sent or cherry-picked commits from upstream, so there is no guarantee it will work if you upgrade from Gogs to Gitea. The recommended method is to migrate repositories from Gogs to Gitea.
Gitea does not send commits to upstream or cherry-pick commits from it, so there is no guarantee it will work if you upgrade from Gogs to Gitea. The recommended method is to migrate repositories from Gogs to Gitea.
:::
@@ -31,11 +31,11 @@ You can try it out using [the online demo](https://demo.gitea.com).
- **Code Hosting**
Gitea supports creating and managing repositories, browsing commit history and code files, reviewing and merging code submissions, managing collaborators, handling branches, and more. It also supports many common Git features such as tags, Cherry-pick, hooks, integrated collaboration tools, and more.
Gitea supports creating and managing repositories, browsing commit history and code files, reviewing and merging code submissions, managing collaborators, handling branches, and more. It also supports many common Git features such as tags, cherry-picking, hooks, integrated collaboration tools, and more.
- **Lightweight and Fast**
One of Gitea's design goals is to be lightweight and fast in response. Unlike some large code hosting platforms, it remains lean, performs well in terms of speed, and is suitable for resource-limited server environments. Due to its lightweight design, Gitea has relatively low resource consumption and performs well in resource-constrained environments.
One of Gitea's design goals is to be lightweight and fast in response. Unlike some large code hosting platforms, it remains lean, performs well in terms of speed, and is suitable for resource-limited server environments.
- **Easy Deployment and Maintenance**
@@ -105,6 +105,6 @@ For more detailed information, please refer to: https://docs.gitea.com/installat
- [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
- [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
## Integrated support
## Integrated Support
Please visit [Awesome Gitea](https://gitea.com/gitea/awesome-gitea/) to get more third-party integrated support

View File

@@ -46,7 +46,7 @@ Gitea signs all binaries with a [GPG key](https://keys.openpgp.org/search?q=teab
To validate the binary, download the signature file which ends in `.asc` for the binary you downloaded and use the GPG command line tool.
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -386,7 +386,7 @@ In this option, the idea is that the host simply uses the `authorized_keys` that
- Please note depending on the local version of ssh you may want to consider using `-t ecdsa` here.
- `/home/git/.ssh/authorized_keys` on the host now needs to be modified. It needs to act in the same way as `authorized_keys` within the Gitea container. Therefore add the public key of the key you created above ("Gitea Host Key") to `~/git/.ssh/authorized_keys`. As an administrative user on the host run:
- `/home/git/.ssh/authorized_keys` on the host now needs to be modified. It needs to act in the same way as `authorized_keys` within the Gitea container. Therefore add the public key of the key you created above ("Gitea Host Key") to `/home/git/.ssh/authorized_keys`. As an administrative user on the host run:
```bash
sudo -u git cat /home/git/.ssh/id_rsa.pub | sudo -u git tee -a /home/git/.ssh/authorized_keys

View File

@@ -128,6 +128,30 @@ If this file is missing or corrupted, you can simply remove it and register agai
If you want to store the registration information in another place, you can specify it in the configuration file,
and don't forget to specify the `--config` option.
#### Ephemeral Runners
Ephemeral runners provide a security hardening mechanism for enabling organization- or instance-wide runners without requiring full user trust. Once a job is assigned within a spot VM or container, the runner's exposed credentials are automatically revoked—blocking it from polling further jobs before any untrusted code runs, while still allowing it to report progress until completion by either Gitea or the runner.
act_runner **0.2.12+** required.
The updated commands for registering the runner as ephemeral are listed below. Refer to the previous section for detailed information on registering the act_runner.
```bash
./act_runner register --ephemeral
```
```bash
./act_runner --config config.yaml register --ephemeral
```
```bash
./act_runner register --no-interactive --ephemeral --instance <instance_url> --token <registration_token> --name <runner_name> --labels <runner_labels>
```
The runner must be registered each time it is intended to receive a job. After completing the single job it is designed to execute, the runner terminates.
To automate the registration and startup of new runners when a job is queued, use the `workflow_job` webhook.
### Start the runner in command line
After you have registered the runner, you can run it by running the following command:
@@ -297,6 +321,36 @@ It is because the act runner will run jobs in docker containers, so it needs to
As mentioned, you can remove it if you want to run jobs in the host directly.
To be clear, the "host" actually means the container which is running the act runner now, instead of the host machine.
---
To enable ephemeral runners, set the environment variable `GITEA_RUNNER_EPHEMERAL=1` in the runner image. This setup doesn't use a `/data` volume because the credentials are single-use and not intended to be reused. You can find more details about this mode under [Ephemeral runners](#ephemeral-runners).
```bash
docker run \
-e GITEA_INSTANCE_URL=<instance_url> \
-e GITEA_RUNNER_REGISTRATION_TOKEN=<registration_token> \
-e GITEA_RUNNER_EPHEMERAL=1 \
-e GITEA_RUNNER_NAME=<runner_name> \
--name my_runner \
-d docker.io/gitea/act_runner:nightly
```
```bash
docker run \
-v $PWD/config.yaml:/config.yaml \
-v /var/run/docker.sock:/var/run/docker.sock \
-e CONFIG_FILE=/config.yaml \
-e GITEA_INSTANCE_URL=<instance_url> \
-e GITEA_RUNNER_REGISTRATION_TOKEN=<registration_token> \
-e GITEA_RUNNER_EPHEMERAL=1 \
-e GITEA_RUNNER_NAME=<runner_name> \
-e GITEA_RUNNER_LABELS=<runner_labels> \
--name my_runner \
-d docker.io/gitea/act_runner:nightly
```
Mounting the host's Docker socket using `/var/run/docker.sock:/var/run/docker.sock` introduces a potential security vulnerability. If a job can access this socket, the reusable `GITEA_RUNNER_REGISTRATION_TOKEN` could be exposed through Docker inspect data.
### Start the runner using docker compose
You could also set up the runner using the following `docker-compose.yml`:
@@ -320,6 +374,29 @@ services:
When using docker, there is no requirement to enter the container and manually run `./act_runner daemon` command as shown below. Once the container has been started successfully, it will show up as an active runner in your Gitea instance.
---
To enable ephemeral runners, set the environment variable `GITEA_RUNNER_EPHEMERAL=1` in the runner image. This setup doesn't use a `/data` volume because the credentials are single-use and not intended to be reused. You can find more details about this mode under [Ephemeral runners](#ephemeral-runners).
```yml
version: "3.8"
services:
runner:
image: docker.io/gitea/act_runner:nightly
environment:
CONFIG_FILE: /config.yaml
GITEA_INSTANCE_URL: "${INSTANCE_URL}"
GITEA_RUNNER_REGISTRATION_TOKEN: "${REGISTRATION_TOKEN}"
GITEA_RUNNER_NAME: "${RUNNER_NAME}"
GITEA_RUNNER_LABELS: "${RUNNER_LABELS}"
GITEA_RUNNER_EPHEMERAL: "1"
volumes:
- ./config.yaml:/config.yaml
- /var/run/docker.sock:/var/run/docker.sock
```
Mounting the host's Docker socket using `/var/run/docker.sock:/var/run/docker.sock` introduces a potential security vulnerability. If a job can access this socket, the reusable `GITEA_RUNNER_REGISTRATION_TOKEN` could be exposed through Docker inspect data.
## Advanced Configurations
### Configuring cache when starting a Runner using docker image

View File

@@ -163,6 +163,8 @@ For events supported only by GitHub, see GitHub's [documentation](https://docs.g
| pull_request_review_comment | `created`, `edited` |
| release | `published`, `edited` |
| registry_package | `published` |
| workflow_dispatch | not applicable |
| workflow_run | `requested`, `completed` |
> For `pull_request` events, in [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request), the `ref` is `refs/pull/:prNumber/merge`, which is a reference to the merge commit preview. However, Gitea has no such reference.
> Therefore, the `ref` in Gitea Actions is `refs/pull/:prNumber/head`, which points to the head of pull request rather than the preview of the merge commit.

View File

@@ -100,3 +100,26 @@ Using code-block with language:
\alpha
```
````
## Frontmatter
Gitea supports frontmatter and Table of Contents (TOC) rendering. By default, frontmatter rendering is enabled, and TOC rendering is disabled.
### Enabling TOC rendering
To enable TOC rendering for a markdown file, add `include_toc: true` to its frontmatter section.
### Disabling frontmatter
To disable frontmatter rendering for a markdown file, add `gitea: none` to its frontmatter section.
### Example
```yaml
---
include_toc: true
gitea: none
---
```
Then, when you preview this markdown file in Gitea, the frontmatter section will not be rendered, and a Table of Contents will be generated at the top of the content.

View File

@@ -29,7 +29,7 @@ const apiConfig = [
},
{
route: "/api/",
spec: "static/swagger-23.json",
spec: "static/swagger-24.json",
},
{
route: "/api/1.24/",
@@ -73,9 +73,9 @@ const pageConfig = renderApiSSR
const globalVariables = {
current: {
goVersion: "1.23",
minGoVersion: "1.23",
minNodeVersion: "18",
goVersion: "1.24",
minGoVersion: "1.24",
minNodeVersion: "22",
version: "main-nightly",
sourceVersion: "main",
sourceBranch: "main",
@@ -84,20 +84,20 @@ const globalVariables = {
},
1.24: {
goVersion: "1.24",
minGoVersion: "1.23",
minNodeVersion: "18",
version: "1.24.0-rc0",
sourceVersion: "v1.24.0-rc0",
minGoVersion: "1.24",
minNodeVersion: "22",
version: "1.24.7",
sourceVersion: "v1.24.0",
sourceBranch: "release/v1.24",
dockerVersion: "1.24.0-rc0",
displayVersion: "1.24.0-rc0",
dockerVersion: "1.24.7",
displayVersion: "1.24.7",
},
1.23: {
goVersion: "1.23",
minGoVersion: "1.22",
minNodeVersion: "18",
version: "1.23.8",
sourceVersion: "v1.23.0",
sourceVersion: "v1.23.8",
sourceBranch: "release/v1.23",
dockerVersion: "1.23.8",
displayVersion: "1.23.8",
@@ -180,6 +180,7 @@ const config = {
favicon: "img/favicon.png",
future: {
experimental_faster: true,
v4: true
},
plugins: [
[
@@ -283,7 +284,7 @@ const config = {
}/${docPath}`;
},
versions: versions,
lastVersion: "1.23",
lastVersion: "1.24",
async sidebarItemsGenerator({
defaultSidebarItemsGenerator,
...args
@@ -390,7 +391,7 @@ const config = {
label: "Docs",
},
{
to: "/api/1.23/",
to: "/api/1.24/",
label: "API",
position: "left",
activeBaseRegex: "api/(1.19|1.20|1.21|1.22|1.23|1.24|next)/",
@@ -427,7 +428,7 @@ const config = {
position: "right",
items: [
{ to: "/api/next/", label: "1.25-dev" },
{ to: "/api/1.24/", label: "1.24.0-rc0" },
{ to: "/api/1.24/", label: "1.24.7" },
{ to: "/api/1.23/", label: "1.23.8" },
{ to: "/api/1.22/", label: "1.22.6" },
{ to: "/api/1.21/", label: "1.21.11" },
@@ -481,10 +482,6 @@ const config = {
label: "Discord",
href: "https://discord.gg/gitea",
},
{
label: "Matrix",
href: "https://matrix.to/#/#gitea-space:matrix.org",
},
{
label: "Forum",
href: "https://forum.gitea.com/",
@@ -497,6 +494,10 @@ const config = {
label: "Mastodon",
href: "https://social.gitea.io/@gitea",
},
{
label: "Bluesky",
href: "https://bsky.app/profile/gitea.com",
},
],
},
{

View File

@@ -47,7 +47,7 @@ Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都
```sh
# mysql
mysqldump -u$USER -p$PASS --database $DATABASE > gitea-db.sql
mysqldump -u$USER -p$PASS --databases $DATABASE > gitea-db.sql
# postgres
pg_dump -U $USER $DATABASE > gitea-db.sql
```

View File

@@ -39,7 +39,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -343,7 +343,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -37,7 +37,7 @@ Gitea 对打包的二进制文件使用 [GPG密钥](https://keys.openpgp.org/sea
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -342,7 +342,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -343,7 +343,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -345,7 +345,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -345,7 +345,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -39,7 +39,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -343,7 +343,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -39,7 +39,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -343,7 +343,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -39,7 +39,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -344,7 +344,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -37,7 +37,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -342,7 +342,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -344,7 +344,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -346,7 +346,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -41,7 +41,7 @@ Gitea 对打包的二进制文件使用 [GPG 密钥](https://keys.openpgp.org/se
请根据对应文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -346,7 +346,7 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式进行操作。因此将您在上面创建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通过 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通过 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]` 作为前缀。
该文件应该看起来像:

View File

@@ -45,7 +45,7 @@ Gitea 使用 [GPG 密鑰](https://keys.openpgp.org/search?q=teabot%40gitea.io)
要驗證二進制文件,請下載您下載的二進制文件的簽名文件,該文件以 `.asc` 結尾,並使用 GPG 命令行工具。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```
@@ -194,7 +194,7 @@ Gitea signs all binaries with a [GPG key](https://keys.openpgp.org/search?q=teab
To validate the binary, download the signature file which ends in `.asc` for the binary you downloaded and use the GPG command line tool.
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```

View File

@@ -6,208 +6,208 @@ aliases:
- /zh-tw/authentication
---
# 认证
# 認證
## 轻量级目访问协议Lightweight Directory Access ProtocolLDAP
## 轻量级目访问协议Lightweight Directory Access ProtocolLDAP
BindDN 的 LDAP 和简单认证方式 LDAP 共享以下字段:
BindDN 的 LDAP 和简單認證方式 LDAP 共享以下字段:
- 认证名称 **(必)**
- 認證名稱 **(必)**
- 分配给新授权方法的名
- 分配给新授权方法的名
- 主机名 **(必)**
- 主机名 **(必)**
- LDAP 服务的主机地址.
- 例如:`mydomain.com`
- 端口号 **(必)**
- 端口号 **(必)**
- LDAP 服务的端口号.
- 例如: LDAP `389`/ LDAPs `636`
- 安全协议 (可)
- 安全协议 (可)
- 连接 LDAP 服务器时是否使用 TLS 协议。
- 管理员过滤规则 (可)
- 管理员過滤規則 (可)
- 一个 LDAP 滤器,用于指定哪些用户应该被赋予管理员特权。如果用户帐户符合滤器条件,则该用户将被授予管理员权限。
- 一个 LDAP 滤器,用于指定哪些使用者應該被赋予管理员特权。如果使用者帳戶符合滤器条件,则該使用者将被授予管理员权限。
- 示例:`(objectClass=adminAccount)`
- 适用于 Microsoft Active DirectoryAD的示例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
- 用户名属性(可
- 使用者名属性(可
- 用户 LDAP 记录中包含用户名称的属性。在第一次成功登后,将使用指定的属性值作新的 Gitea 账户用户名。若留空,则使用登录表单上提供的用户名。
- 当提供的登名与多个属性匹配时,这一项非常有用,但是只有一个特定属性应该用于 Gitea 账户名称,请参阅"用户过滤器"。
- 使用者 LDAP 记录中包含使用者名稱的属性。在第一次成功登后,将使用指定的属性值作新的 Gitea 账户使用者名。若留空,则使用登入表單上提供的使用者名。
- 当提供的登名与多个属性匹配时,这一项非常有用,但是只有一个特定属性應該用于 Gitea 账户名稱,請参阅"使用者過滤器"。
- 示例:uid
- 适用于 Microsoft Active DirectoryAD的示例:`sAMAccountName`
- 名字属性(可
- 名字属性(可
- 用户 LDAP 记录中包含用户名字的属性。将用于填充他们的账户信息。
- 使用者 LDAP 记录中包含使用者名字的属性。将用于填充他们的账户信息。
- 示例:givenName
- 姓氏属性(可
- 姓氏属性(可
- 用户 LDAP 记录中包含用户姓氏的属性。将用于填充他们的账户信息。
- 使用者 LDAP 记录中包含使用者姓氏的属性。将用于填充他们的账户信息。
- 示例:`sn`
- 电子邮件属性 **(必)**
- 用户 LDAP 记录中包含用户电子邮件地址的属性。将用于填充他们的账户信息。
- 电子邮件属性 **(必)**
- 使用者 LDAP 记录中包含使用者电子邮件地址的属性。将用于填充他们的账户信息。
- 示例:`mail`
### LDAP(via BindDN)
需要额外设置以下字段:
- 绑定 DN (可)
- 绑定 DN (可)
- 搜索用户时绑定到 LDAP 服务器的 DN。这可以留空以行匿名搜索。
- 搜索使用者时绑定到 LDAP 服务器的 DN。这可以留空以行匿名搜索。
- 示例: `cn=Search,dc=mydomain,dc=com`
- 绑定密 (可)
- 绑定密 (可)
- 上述指定的 Bind DN绑定区别名的密,如果有的话。注意:该密码在服务器上使用 SECRET_KEY 行加密存。仍然建议确保 Bind DN 具有尽可能少的权限。
- 上述指定的 Bind DN绑定区别名的密,如果有的话。注意:該密碼在服务器上使用 SECRET_KEY 行加密存。仍然建议确保 Bind DN 具有尽可能少的权限。
- 用户搜索基准 **(必)**
- 使用者搜索基准 **(必)**
- 这是用于搜索用户帐户的 LDAP 基础路径.
- 这是用于搜索使用者帳戶的 LDAP 基础路径.
- 示例: `ou=Users,dc=mydomain,dc=com`
- 用户过滤规则 **(必)**
- LDAP 滤器声明如何查找试图行身份验证的用户记录
`%[1]s`匹配参数将替换为登录表单中给出的登
- 使用者過滤規則 **(必)**
- LDAP 滤器声明如何查找试图行身份驗證的使用者记录
`%[1]s`匹配參數将替换為登入表單中给出的登
- 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
- 示例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))`
- 如需多次替换,使用 `%[1]s`,例如在将提供的登名与多个属性(如用户标识符、电子邮件甚至电话号码)行匹配时。
- 如需多次替换,使用 `%[1]s`,例如在将提供的登名与多个属性(如使用者标识符、电子邮件甚至电话号码)行匹配时。
- 示例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
- 启用用户同步
- 这个项启用了一个周期性任务,用于将 Gitea 用户与 LDAP 服务器行同步。默认的同步周期是每 24 小时,
但您可以在 app.ini 文件中行更改。
有关此部分的详细说明,参阅[sample
- 启用使用者同步
- 这个项启用了一个周期性任务,用于将 Gitea 使用者与 LDAP 服务器行同步。默认的同步周期是每 24 小时,
但您可以在 app.ini 文件中行更改。
有关此部分的详细说明,参阅[sample
app.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
的*cron.sync_external_users* 部分的注释。前面提到的*User Search Base*和*User Filter*
设置将限制哪些用户可以使用 Gitea 以及哪些用户将被同步。
在初始运行任务时,将根据给定的设置建所有与 LDAP 匹配的用户,因此在使用大型企业 LDAP 目时需要小心。
设置将限制哪些使用者可以使用 Gitea 以及哪些使用者将被同步。
在初始运行任务时,将根据给定的设置建所有与 LDAP 匹配的使用者,因此在使用大型企业 LDAP 目时需要小心。
### LDAP(simple auth)
需要额外设置以下字段:
- 用户 DN **(必)**
- 使用者 DN **(必)**
- 用作用户 DN 的模板。匹配参数 `%s` 将替换为登录表单中的登名。
- 用作使用者 DN 的模板。匹配參數 `%s` 将替换為登入表單中的登名。
- 示例: `cn=%s,ou=Users,dc=mydomain,dc=com`
- 示例: `uid=%s,ou=Users,dc=mydomain,dc=com`
- 用户搜索基准 (可)
- 使用者搜索基准 (可)
- 用户搜索基准声明哪些用户帐户将被搜索.
- 使用者搜索基准声明哪些使用者帳戶将被搜索.
- 示例: `ou=Users,dc=mydomain,dc=com`
- 用户过滤规则 **(必)**
- LDAP 滤器声明何时允许用户登录
`%[1]s`匹配参数将替换为登录表单中给出的登名。
- 使用者過滤規則 **(必)**
- LDAP 滤器声明何时允许使用者登入
`%[1]s`匹配參數将替换為登入表單中给出的登名。
- 示例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
- 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
### 使用 LDAP 验证分组成员
### 使用 LDAP 驗證分组成员
使用以下字段:
- 群组搜索基础 DN(可)
- 群组搜索基础 DN(可)
- 组使用的 LDAP DN。
- 示例: `ou=group,dc=mydomain,dc=com`
- 组名滤器 (可)
- 组名滤器 (可)
- LDAP 滤器,声明如何在上述 DN 中查找有效组。
- LDAP 滤器,声明如何在上述 DN 中查找有效组。
- 示例: `(|(cn=gitea_users)(cn=admins))`
- 组中的用户属性 (可)
- 组中的使用者属性 (可)
- 组中列出了哪个用户的 LDAP 属性。
- 组中列出了哪个使用者的 LDAP 属性。
- 示例: `uid`
- 用户组属性 (可)
- 哪个组的 LDAP 属性包含一个高于用户属性名的数组。
- 使用者组属性 (可)
- 哪个组的 LDAP 属性包含一个高于使用者属性名的数组。
- 示例: `memberUid`
## 可插拔式认证模块(Pluggable Authentication Module,PAM)
## 可插拔式認證模組(Pluggable Authentication Module,PAM)
这个程启用了 PAMPluggable Authentication Modules认证。用户仍然可以通过用户管理手动添加到系统中。
PAM 提供了一种制,通过对用户进行 PAM 认证来自动将其添加到当前数据库中。了与普通的 Linux 密一起使用,
运行 Gitea 的用户还必须具有对`/etc/shadow`的读取权限,以便在使用公钥登时检查账户的有效性。
这个程启用了 PAMPluggable Authentication Modules認證。使用者仍然可以通過使用者管理手动添加到系统中。
PAM 提供了一种制,通過对使用者進行 PAM 認證来自动将其添加到当前数据库中。了与普通的 Linux 密一起使用,
运行 Gitea 的使用者還必須具有对`/etc/shadow`的读取权限,以便在使用公钥登时检查账户的有效性。
**注意**:如果用户已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕过登录检查系统。因此,
如果您希望禁用使用 PAM 行身份验证的用户,应该在 Gitea 中手动禁用账户,使用内置的用户管理功能。
**注意**:如果使用者已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕過登入检查系统。因此,
如果您希望禁用使用 PAM 行身份驗證的使用者,應該在 Gitea 中手动禁用账户,使用内置的使用者管理功能。
1. 配置和安准备.
- 建议您建一个管理用户.
1. 配置和安准备.
- 建议您建一个管理使用者.
- 建议取消自动注册.
1. 一旦数据库已初始化完成,使用新建的管理员账户登.
1. 导航至用户设置(右上角的图标),然后
`Site Administration` -> `Authentication Sources`, 并选
1. 一旦数据库已初始化完成,使用新建的管理员账户登.
1. 导航至使用者设置(右上角的图标),然后
`Site Administration` -> `Authentication Sources`, 並選
`Add Authentication Source`.
1. 填写字段如下:
- 认证类型:`PAM`
-:任何有效的值都可以,如果您愿意,可以使用"System Authentication"。
- PAM 服务名:从/etc/pam.d/目录下选择适用于所需认证的正确文件[^1]。
- PAM 电子邮件域:用户认证时要附加的电子邮件后缀。例如,如果登系统期望一个名 gituse 的用户
且将此字段设置 mail.com那么 Gitea 在验证一个 GIT 实例的用户时将期望 user emai 字段gituser@mail.com[^2]。
- 認證類型:`PAM`
-:任何有效的值都可以,如果您愿意,可以使用"System Authentication"。
- PAM 服务名:从/etc/pam.d/目錄下選择适用于所需認證的正确文件[^1]。
- PAM 电子邮件域:使用者認證时要附加的电子邮件后缀。例如,如果登系统期望一个名 gituse 的使用者
且将此字段设置 mail.com那么 Gitea 在驗證一个 GIT 实例的使用者时将期望 user emai 字段gituser@mail.com[^2]。
**Note**: PAM 支持通[build-time flags](installation/from-source.md#build)添加,
而官方提供的二制文件通常不会默认启用此功能。PAM 需要确保系统上有必要的 libpam 动态库,且编译器可以访问必要的 PAM 开发头文件。
**Note**: PAM 支持通[build-time flags](installation/from-source.md#build)添加,
而官方提供的二制文件通常不会默认启用此功能。PAM 需要确保系统上有必要的 libpam 动态库,且编译器可以访问必要的 PAM 开发头文件。
[^1]:
例如,在 Debian "Bullseye"上使用标准 Linux 登,可以使用`common-session-noninteractive`。这个值对于其他版本的 Debian
包括 Ubuntu 和 Mint可能也是有效的查阅您所使用发行版的文以确认。
例如,在 Debian "Bullseye"上使用标准 Linux 登,可以使用`common-session-noninteractive`。这个值對於其他版本的 Debian
包括 Ubuntu 和 Mint可能也是有效的查阅您所使用发行版的文以确认。
[^2]: **PAM 的必** 注意:在上面的示例中,用户将作`gituser`而不是`gituser@mail.com`到 Gitea 的 Web 界面。
[^2]: **PAM 的必** 注意:在上面的示例中,使用者将作`gituser`而不是`gituser@mail.com`到 Gitea 的 Web 界面。
## 简邮件传输协议(Simple Mail Transfer Protocol,SMTP)
## 简邮件传输协议(Simple Mail Transfer Protocol,SMTP)
项允许 Gitea 以 Gitea 用户身份登 SMTP 主机。设置以下字段:
项允许 Gitea 以 Gitea 使用者身份登 SMTP 主机。设置以下字段:
- 身份验证名称 **(必)**
- 身份驗證名稱 **(必)**
- 分配给新授权方法的名
- 分配给新授权方法的名
- SMTP 验证类**(必)**
- SMTP 驗證類**(必)**
- 用于连接 SMTP 主机的验证类plain 或 login
- 用于连接 SMTP 主机的驗證類plain 或 login
- 主机名 **(必)**
- 主机名 **(必)**
- SMTP 服务的主机地址
- 例如:`smtp.mydomain.com`
- 端口号 **(必)**
- 端口号 **(必)**
- SMTP 服务的端口号
- 例如: `587`
- 允许的域名
- 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登
限制哪些域可以登
- 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登
限制哪些域可以登
- 示例: `gitea.com,mydomain.com,mydomain2.com`
- 强制使用 SMTPS
- 默认情况下将使用 SMTPS 连接到端口 465.如果您希望将 smtp 用于其他端口,自行设置
- 否则,如果服务器提供' STARTTLS '扩展名,则将使用此扩展名
- TLS 验证
- 禁用 TLS 验证身份.
- 该认证源处于激活状态
- 启用或禁用此身份验证
- TLS 驗證
- 禁用 TLS 驗證身份.
- 該認證源处于激活状态
- 启用或禁用此身份驗證
## FreeIPA
- 要使用 FreeIPA 凭据登 Gitea需要 Gitea 建一个绑定帐户
建一个绑定帐户:
- 在 FreeIPA 服务器上建一个 gitea.ldif 文件,`dc=example,dc=com`替换您的`dn`,然后提供一个适当安全的密
- 要使用 FreeIPA 凭据登 Gitea需要 Gitea 建一个绑定帳戶
一个绑定帳戶:
- 在 FreeIPA 服务器上建一个 gitea.ldif 文件,`dc=example,dc=com`替换您的`dn`,然后提供一个适当安全的密
```sh
dn: uid=gitea,cn=sysaccounts,cn=etc,dc=example,dc=com
@@ -220,76 +220,76 @@ PAM 提供了一种机制,通过对用户进行 PAM 认证来自动将其添
nsIdleTimeout: 0
```
- 导入 LDIF 文件(如果需要,将 localhost 更改 IPA 服务器)。系统会提示您输入 Directory Manager 的密。:
- 导入 LDIF 文件(如果需要,将 localhost 更改 IPA 服务器)。系统会提示您输入 Directory Manager 的密。:
```sh
ldapmodify -h localhost -p 389 -x -D \
"cn=Directory Manager" -W -f gitea.ldif
```
- `gitea_users`添加 IPA 组:
- `gitea_users`添加 IPA 组:
```sh
ipa group-add --desc="Gitea Users" gitea_users
```
- **提示**:对于 IPA 凭证错误,运行' kinit admin '提供域管理帐户密码.
- 以管理员身份登 Gitea点击 Admin Panel 下的`Authentication`。然后单击`Add New Source`填写详细信息,更改所有适当的地方。
- **提示**:對於 IPA 凭证错误,运行' kinit admin '提供域管理帳戶密碼.
- 以管理员身份登 Gitea點擊 Admin Panel 下的`Authentication`。然后單擊`Add New Source`填写详细信息,更改所有适当的地方。
## SPNEGO with SSPI (Kerberos/NTLM, for Windows only)
Gitea 支持通 Windows 内置的安全支持提供程序接口Security Support Provider InterfaceSSPI SPNEGO 点登录认证(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
Gitea 支持通 Windows 内置的安全支持提供程序接口Security Support Provider InterfaceSSPI SPNEGO 点登入認證(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
在激活 SSPI 点登录认证SSO之前您需要准备您的环境:
在激活 SSPI 点登入認證SSO之前您需要准备您的环境:
- 在 Active Directory 中建一个独的用户账户gitea.exe 程将在账户下运行(例如,在 domain.local 域下建一个名 user 的账户:
- 运行 gitea.exe 的主机建一个服务主体名称Service Principal NameSPN其类别 HTTP:
- 在 Active Directory 中建一个独的使用者账户gitea.exe 程将在账户下运行(例如,在 domain.local 域下建一个名 user 的账户:
- 运行 gitea.exe 的主机建一个服务主體名稱Service Principal NameSPN其类别 HTTP:
- 以特权域用户例如域管理员的身份启动“命令提示符”或“PowerShell”。
- 运行下面的命令,将 host.domain.local 替换 Web 用程序将运行的服务器的完全限定域名FQDN将 domain\user 替换在前一步中建的账户名:
- 以特权域使用者例如域管理员的身份启动“命令提示符”或“PowerShell”。
- 运行下面的命令,将 host.domain.local 替换 Web 用程序将运行的服务器的完全限定域名FQDN将 domain\user 替换在前一步中建的账户名:
```sh
setspn -A HTTP/host.domain.local domain\user
```
在遵循上述步骤之前,确保您按照以下流程行操作:
在遵循上述步骤之前,确保您按照以下流程行操作:
1. 用之前创建的用户登录(如果已经登录,请先注销)。
2. 确保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`设置 Web 用程序将运行的服务器的完全限定域名FQDN与之前建服务主体名称时使用的一致(例如,`host.domain.local`)。
1. 用之前建立的使用者登入(如果已经登入,請先注销)。
2. 确保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`设置 Web 用程序将运行的服务器的完全限定域名FQDN与之前建服务主體名稱时使用的一致(例如,`host.domain.local`)。
3. 启动 Web 服务器(运行 `gitea.exe web`)。
4. 在 `Site Administration -> Authentication Sources` 中添加一个 `SPNEGO with SSPI` 认证源,以启用 SSPI 认证
5. 在域中的客户端计算机上,使用任何域用户登录(与运行`gitea.exe`的服务器不同)。
6. 如果您使用 Chrome 或 Edge 浏览器,将 Web 用程序的 URL 添加到“本地站点”(`Internet项 -> 安全 -> 本地站点 -> 站点`)。
4. 在 `Site Administration -> Authentication Sources` 中添加一个 `SPNEGO with SSPI` 認證源,以启用 SSPI 認證
5. 在域中的客户端计算机上,使用任何域使用者登入(与运行`gitea.exe`的服务器不同)。
6. 如果您使用 Chrome 或 Edge 浏览器,将 Web 用程序的 URL 添加到“本地站点”(`Internet项 -> 安全 -> 本地站点 -> 站点`)。
7. 启动 Chrome 或 Edge 浏览器,导航到 Gitea 的 FQDN URL例如`http://host.domain.local:3000`)。
8. 在控制面板中点击“Sign In”按钮然后择 SSPI将会自动使用当前登到计算机的用户进行登
9. 如果法正常工作,确保:
- 您不是在运行`gitea.exe`的同一台服务器上运行 Web 浏览器。应该在与服务器不同的域加入计算机(客户端)上运行 Web 浏览器。如果客户端和服务器都在同一台计算机上运行,则 NTLM 将优先于 Kerberos。
8. 在控制面板中點擊“Sign In”按钮然后择 SSPI将会自动使用当前登到计算机的使用者進行登
9. 如果法正常工作,确保:
- 您不是在运行`gitea.exe`的同一台服务器上运行 Web 浏览器。應該在与服务器不同的域加入计算机(客户端)上运行 Web 浏览器。如果客户端和服务器都在同一台计算机上运行,则 NTLM 将优先于 Kerberos。
- 主机上只有一个`HTTP/...`的 SPN。
- SPN 中只包含主机名,不包含端口号。
- 将 Web 用程序的 URL 添加到"本地站点"。
- 服务器和客户端的时钟差异不超 5 分钟(取决于组策略)。
- 在 Internet Explorer 中启用了"集成 Windows 身份验证"(在"高级设置"下)。
- 将 Web 用程序的 URL 添加到"本地站点"。
- 服务器和客户端的时钟差异不超 5 分钟(取决于组策略)。
- 在 Internet Explorer 中启用了"集成 Windows 身份驗證"(在"高级设置"下)。
遵循这些步骤,您应该能够成功启用和使用 SSPI 点登录认证SSO
遵循这些步骤,您應該能够成功启用和使用 SSPI 点登入認證SSO
## 反向代理认证
## 反向代理認證
Gitea 支持通读取反向代理传递的 HTTP 头中的登名或者 email 地址来支持反向代理来认证。默认是不启用的,你可以用以下配置启用。
Gitea 支持通读取反向代理传递的 HTTP 头中的登名或者 email 地址来支持反向代理来認證。默认是不启用的,你可以用以下配置启用。
```ini
[service]
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
```
默认的登录用户名的 HTTP 头是 `X-WEBAUTH-USER`,你可以通修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果用户不存在,可以自动创建用户,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。
默认的登入使用者名的 HTTP 头是 `X-WEBAUTH-USER`,你可以通修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果使用者不存在,可以自动建立使用者,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。
默认的登录用户 Email 的 HTTP 头是 `X-WEBAUTH-EMAIL`,你可以通修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 来变更它。如果用户不存在,可以自动创建用户,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。你也可以通修改 `ENABLE_REVERSE_PROXY_EMAIL` 来启用或停用这个 HTTP 头。
默认的登入使用者 Email 的 HTTP 头是 `X-WEBAUTH-EMAIL`,你可以通修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 来变更它。如果使用者不存在,可以自动建立使用者,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。你也可以通修改 `ENABLE_REVERSE_PROXY_EMAIL` 来启用或停用这个 HTTP 头。
如果设置了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`,则用户的全名会从 `X-WEBAUTH-FULLNAME` 读取,这样在自动创建用户时将使用这个字段作为用户全名,你也可以通修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 来变更 HTTP 头。
如果设置了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`,则使用者的全名会从 `X-WEBAUTH-FULLNAME` 读取,这样在自动建立使用者时将使用这个字段作為使用者全名,你也可以通修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 来变更 HTTP 头。
你也可以通修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加强安全性,默认值是 `127.0.0.0/8,::1/128`。 通 `REVERSE_PROXY_LIMIT` 可以设置最多信任几级反向代理。
你也可以通修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加强安全性,默认值是 `127.0.0.0/8,::1/128`。 通 `REVERSE_PROXY_LIMIT` 可以设置最多信任几级反向代理。
你可以通以下配置 API 启用此认证方法:
你可以通以下配置 API 启用此認證方法:
```ini
[service]

View File

@@ -9,17 +9,17 @@ aliases:
# 备份与恢复
Gitea 已经实`dump` 命令可以用来备份所有需要的文件到一个 zip 压缩文件。压缩文件可以被用来行数据恢复。
Gitea 已经实`dump` 命令可以用来备份所有需要的文件到一个 zip 压缩文件。压缩文件可以被用来行数据恢复。
## 备份一致性
了确保 Gitea 实例的一致性,在备份期间必关闭它。
了确保 Gitea 实例的一致性,在备份期间必关闭它。
Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都会发生变化。例如,当迁移正在行时,在数据库中建一个事务,而 Git 仓库正在被复制。如果备份发生在迁移的中间Git 仓库可能是不完整的,尽管数据库声它是完整的,因它是在之后被转的。避免这种竞争条件的唯一方法是在备份期间停止 Gitea 实例。
Gitea 包括数据库、文件和 Git 存放庫,当它被使用时所有这些都会发生变化。例如,当迁移正在行时,在数据库中建一个事务,而 Git 存放庫正在被复制。如果备份发生在迁移的中间Git 存放庫可能是不完整的,尽管数据库声它是完整的,因它是在之后被转的。避免这种竞争条件的唯一方法是在备份期间停止 Gitea 实例。
## 备份命令 (`dump`)
先转到 git 用户的权限: `su git`. 再 Gitea 目运行 `./gitea dump`。一般会显示类似如下的输出:
先转到 git 使用者的权限: `su git`. 再 Gitea 目运行 `./gitea dump`。一般会显示类似如下的输出:
```
2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
@@ -32,18 +32,18 @@ Gitea 包括数据库、文件和 Git 仓库,当它被使用时所有这些都
最后生成的 `gitea-dump-1482906742.zip` 文件将会包含如下内容:
- `app.ini` - 如果原先存在默认的 custom/ 目之外,则是配置文件的可副本
- `custom/` - 所有保存在 `custom/`下的配置和自定义的文件。
- `data/` - 数据目APP_DATA_PATH如果使用文件会话则不包括会话。该目录包括 `attachments``avatars``lfs``indexers`、如果使用 SQLite 则包括 SQLite 文件。
- `repos/` - 仓库目录的完整副本。
- `app.ini` - 如果原先存在默认的 custom/ 目之外,则是配置文件的可副本
- `custom/` - 所有保存在 `custom/`下的配置和自定义的文件。
- `data/` - 数据目APP_DATA_PATH如果使用文件会话则不包括会话。該目錄包括 `attachments``avatars``lfs``indexers`、如果使用 SQLite 则包括 SQLite 文件。
- `repos/` - 存放庫目錄的完整副本。
- `gitea-db.sql` - 数据库 dump 出来的 SQL。
- `log/` - Logs 文件,如果用作迁移不是必的。
- `log/` - Logs 文件,如果用作迁移不是必的。
中间备份文件将会在临时目录进行创建,如果您要重新指定临时目,可以用 `--tempdir` 参数,或者用 `TMPDIR` 环境变量。
中间备份文件将会在临时目錄進行建立,如果您要重新指定临时目,可以用 `--tempdir` 參數,或者用 `TMPDIR` 环境变量。
## 备份数据库
`gitea dump` 建的 SQL 转使用 XORMGitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转工具。使用 XORM 转数据库时仍然存在一些问题,可能会导致在尝试恢复时出问题。
`gitea dump`的 SQL 转使用 XORMGitea 管理员可能更喜欢使用本地的 MySQL 和 PostgreSQL 转工具。使用 XORM 转数据库时仍然存在一些问题,可能会导致在尝试恢复时出问题。
```sh
# mysql
@@ -56,7 +56,7 @@ pg_dump -U $USER $DATABASE > gitea-db.sql
在使用 Docker 时,使用 `dump` 命令有一些注意事项。
`gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 执行该命令;且,了让备份文件夹的压缩程能够顺利行,`docker exec` 命令必`--tempdir` 内部行。
`gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 執行該命令;且,了让备份文件夹的压缩程能够顺利行,`docker exec` 命令必`--tempdir` 内部行。
示例:
@@ -64,13 +64,13 @@ pg_dump -U $USER $DATABASE > gitea-db.sql
docker exec -u <OS_USERNAME> -it -w <--tempdir> $(docker ps -qf 'name=^<NAME_OF_DOCKER_CONTAINER>$') bash -c '/usr/local/bin/gitea dump -c </path/to/app.ini>'
```
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 环境的临时目;如果您没有指定自定义的 `--tempdir`,那么 Gitea 将使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。对于 `--tempdir`请相应调整您的 `docker exec` 命令项。
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 环境的临时目;如果您没有指定自定义的 `--tempdir`,那么 Gitea 将使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。對於 `--tempdir`請相應调整您的 `docker exec` 命令项。
结果应该是一个文件,存在指定的 `--tempdir` 中,类似于:`gitea-dump-1482906742.zip`
结果應該是一个文件,存在指定的 `--tempdir` 中,类似于:`gitea-dump-1482906742.zip`
## 恢复命令 (`restore`)
当前没有恢复命令,恢复需要人工行。主要是把文件和数据库行恢复。
当前没有恢复命令,恢复需要人工行。主要是把文件和数据库行恢复。
例如:
@@ -93,15 +93,15 @@ psql -U $USER -d $DATABASE < gitea-db.sql
service gitea restart
```
如果安方式发生了变化(例如 二制 -> Docker或者 Gitea 安到了与之前安不同的目,则需要重新生成仓库 Git 钩子。
如果安方式发生了变化(例如 二制 -> Docker或者 Gitea 安到了与之前安不同的目,则需要重新生成存放庫 Git 钩子。
在 Gitea 运行时,从 Gitea 二制文件所在的目录执行:`./gitea admin regenerate hooks`
在 Gitea 运行时,从 Gitea 二制文件所在的目錄執行:`./gitea admin regenerate hooks`
这样可以确保仓库 Git 钩子中的用程序和配置文件路径与当前安一致。如果这些路径没有更新,仓库`push` 操作将失败。
这样可以确保存放庫 Git 钩子中的用程序和配置文件路径与当前安一致。如果这些路径没有更新,存放庫`push` 操作将失败。
### 使用 Docker (`restore`)
在基于 Docker 的 Gitea 实例中,也没有恢复命令的支持。恢复程与前面描述的步骤相同,但路径不同。
在基于 Docker 的 Gitea 实例中,也没有恢复命令的支持。恢复程与前面描述的步骤相同,但路径不同。
示例:
@@ -113,7 +113,7 @@ unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
# 恢复 Gitea 数据
mv data/* /data/gitea
# 恢复仓库本身
# 恢复存放庫本身
mv repos/* /data/git/gitea-repositories/
# 调整文件权限
chown -R git:git /data
@@ -121,11 +121,11 @@ chown -R git:git /data
/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks
```
Gitea 容器中的默认用户`git`1000:1000用您的 Gitea 容器 ID 或名替换 `2a83b293548e`
Gitea 容器中的默认使用者`git`1000:1000用您的 Gitea 容器 ID 或名替换 `2a83b293548e`
### 使用 Docker-rootless (`restore`)
在 Docker-rootless 容器中的恢复工作流程只是要使用的目不同:
在 Docker-rootless 容器中的恢复工作流程只是要使用的目不同:
```sh
# 在容器中打开 bash 会话
@@ -137,7 +137,7 @@ cd gitea-dump-1610949662
mv data/conf/app.ini /etc/gitea/app.ini
# 恢复 Gitea 数据
mv data/* /var/lib/gitea
# 恢复仓库本身
# 恢复存放庫本身
mv repos/* /var/lib/gitea/git/gitea-repositories
# 调整文件权限
chown -R git:git /etc/gitea/app.ini /var/lib/gitea

View File

@@ -9,29 +9,29 @@ aliases:
# 嵌入资源提取工具
Gitea 的可行文件包含了运行所需的所有资源:模板、图片、样式表和翻译文件。你可以通`custom`下的相路径中放置替换文件来覆盖其中的任何资源(详见 [自定义 Gitea 配置](../administration/customizing-gitea.md))。
Gitea 的可行文件包含了运行所需的所有资源:模板、图片、样式表和翻译文件。你可以通`custom`下的相路径中放置替换文件来覆盖其中的任何资源(详见 [自定义 Gitea 配置](../administration/customizing-gitea.md))。
要获取嵌入资源的副本以行编辑,可以使用 CLI 中的 `embedded` 命令,通操作系统的 shell 行。
要获取嵌入资源的副本以行编辑,可以使用 CLI 中的 `embedded` 命令,通操作系统的 shell 行。
**注意:** 嵌入资源提取工具包含在 Gitea 1.12 及以上版本中。
## 资源列表
要列出嵌入在 Gitea 可行文件中的资源,使用以下语法:
要列出嵌入在 Gitea 可行文件中的资源,使用以下语法:
```sh
gitea embedded list [--include-vendored] [patterns...]
```
`--include-vendored` 标志使命令包括被供的文件,这些文件通常被排除在外;即来自外部库的文件,这些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
`--include-vendored` 标志使命令包括被供的文件,这些文件通常被排除在外;即来自外部库的文件,这些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作其 glob 语法。以下是一些示例:
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作其 glob 语法。以下是一些示例:
- 列出所有模板文件,论在哪个虚拟目下:`**.tmpl`
- 列出所有模板文件,论在哪个虚拟目下:`**.tmpl`
- 列出所有邮件模板文件:`templates/mail/**.tmpl`
列出 `public/assets/img`下的所有文件:`public/assets/img/**`
列出 `public/assets/img`下的所有文件:`public/assets/img/**`
不要忘记模式使用引号,因空格、`*` 和其他字符可能对命令行解释器有特殊含义。
不要忘记模式使用引号,因空格、`*` 和其他字符可能对命令行解释器有特殊含义。
如果未提供模式,则列出所有文件。
@@ -53,31 +53,31 @@ templates/user/settings/security_openid.tmpl
## 提取资源
要提取嵌入在 Gitea 可行文件中的资源,使用以下语法:
要提取嵌入在 Gitea 可行文件中的资源,使用以下语法:
```sh
gitea [--config {file}] embedded extract [--destination {dir}|--custom] [--overwrite|--rename] [--include-vendored] {patterns...}
```
`--config` 项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此选项仅在使用 `--custom` 标志时使用。
`--config` 项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此選项僅在使用 `--custom` 标志时使用。
`--destination` 项用于指定提取文件的目标目。默认当前目
`--destination` 项用于指定提取文件的目标目。默认当前目
`--custom` 标志告知 Gitea 直接将文件提取到 `custom`中。使其正常工作,命令需要知道 `app.ini` 配置文件的位置(通 `--config` 指定),且根据配置的不同,需要从 Gitea 通常启动的目运行。有关详细信息,参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md)。
`--custom` 标志告知 Gitea 直接将文件提取到 `custom`中。使其正常工作,命令需要知道 `app.ini` 配置文件的位置(通 `--config` 指定),且根据配置的不同,需要从 Gitea 通常启动的目运行。有关详细信息,参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md)。
`--overwrite` 标志允许覆盖目标目中的任何有文件。
`--overwrite` 标志允许覆盖目标目中的任何有文件。
`--rename` 标志告知 Gitea 将目标目中的任何有文件重命名 `filename.bak`。之前的 `.bak` 文件将被覆盖。
`--rename` 标志告知 Gitea 将目标目中的任何有文件重命名 `filename.bak`。之前的 `.bak` 文件将被覆盖。
至少需要提供一个文件搜索模式;有关模式的语法和示例,参阅上述 `list` 子命令。
至少需要提供一个文件搜索模式;有关模式的语法和示例,参阅上述 `list` 子命令。
### 重要提示
确保**只提取需要自定义的文件**。位于 `custom`中的文件不会受到 Gitea 的升级程的影。当 Gitea 升级到新版本(通替换可行文件许多嵌入文件将发生变化。Gitea 将尊重使用在 `custom`中找到的任何文件,即使这些文件是旧的和不兼容的。
确保**只提取需要自定义的文件**。位于 `custom`中的文件不会受到 Gitea 的升级程的影。当 Gitea 升级到新版本(通替换可行文件许多嵌入文件将发生变化。Gitea 将尊重使用在 `custom`中找到的任何文件,即使这些文件是旧的和不兼容的。
### 示例:提取邮件模板
将邮件模板提取到临时目
将邮件模板提取到临时目
```sh
$ mkdir tempdir

View File

@@ -11,17 +11,17 @@ aliases:
## 用法
`gitea [全局项] 命令 [命令或全局项] [参数...]`
`gitea [全局项] 命令 [命令或全局项] [參數...]`
## 全局
## 全局
所有全局项均可被放置在命令级别。
所有全局项均可被放置在命令级别。
- `--help``-h`:显示帮助文本退出。可
- `--version``-v`:显示版本信息退出。可。 (示例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。
- `--custom-path path``-C path`Gitea 自定义文件夹的路径。可。 (默认值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。
- `--config path``-c path`Gitea 配置文件的路径。可。 (默认值:`custom`/conf/app.ini)。
- `--work-path path``-w path`Gitea 的 `AppWorkPath`。可。 (默认值LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`)
- `--help``-h`:显示帮助文本退出。可
- `--version``-v`:显示版本信息退出。可。 (示例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。
- `--custom-path path``-C path`Gitea 自定义文件夹的路径。可。 (默认值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。
- `--config path``-c path`Gitea 配置文件的路径。可。 (默认值:`custom`/conf/app.ini)。
- `--work-path path``-w path`Gitea 的 `AppWorkPath`。可。 (默认值LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`)
注意:默认的 custom-path、config 和 work-path 也可以在构建时更改(如果需要)。
@@ -31,10 +31,10 @@ aliases:
启动服务器:
- 项:
- `--port number``-p number`:端口号。可。 (默认值3000)。覆盖配置文件中的设置。
- `--install-port number`:运行安页面的端口号。可。 (默认值3000)。覆盖配置文件中的设置。
- `--pid path``-P path`Pid 文件的路径。可
- 项:
- `--port number``-p number`:端口号。可。 (默认值3000)。覆盖配置文件中的设置。
- `--install-port number`:运行安页面的端口号。可。 (默认值3000)。覆盖配置文件中的设置。
- `--pid path``-P path`Pid 文件的路径。可
- `--quiet``-q`:只在控制台上输出 Fatal 日志,用于在设置日志之前发出的日志。
- `--verbose`:在控制台上输出跟踪日志,用于在设置日志之前发出的日志。
- 示例:
@@ -42,7 +42,7 @@ aliases:
- `gitea web --port 80`
- `gitea web --config /etc/gitea.ini --pid /some/custom/gitea.pid`
- 注意:
- Gitea 不以 root 用户身份运行。要绑定到低于 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新行此操作。
- Gitea 不以 root 使用者身份运行。要绑定到低于 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新行此操作。
### admin
@@ -51,278 +51,278 @@ aliases:
- 命令:
- `user`
- `list`
- 项:
- `--admin`列出管理员用户。可
- 描述:列出所有现有用户
- 项:
- `--admin`列出管理员使用者。可
- 描述:列出所有現有使用者
- 示例:
- `gitea admin user list`
- `delete`
- 项:
- `--email`:要删除的用户的电子邮件。
- `--username`:要删除的用户的用户名。
- `--id`:要删除的用户的 ID。
-提供 `--id``--username``--email` 中的一个。如果提供多个,则所有条件必匹配。
- 项:
- `--email`:要删除的使用者的电子邮件。
- `--username`:要删除的使用者的使用者名。
- `--id`:要删除的使用者的 ID。
-提供 `--id``--username``--email` 中的一个。如果提供多个,则所有条件必匹配。
- 示例:
- `gitea admin user delete --id 1`
- `create`
- 项:
- `--name value`用户名。必填。自 Gitea 1.9.0 版本起,改用 `--username` 标志。
- `--username value`用户名。必填。Gitea 1.9.0 新增。
- `--password value`:密。必填。
- 项:
- `--name value`使用者名。必填。自 Gitea 1.9.0 版本起,改用 `--username` 标志。
- `--username value`使用者名。必填。Gitea 1.9.0 新增。
- `--password value`:密。必填。
- `--email value`:邮箱。必填。
- `--admin`:如果提供此项,将建一个管理员用户。可
- `--access-token`:如果提供,将为用户创建访问令牌。可默认值false
- `--must-change-password`:如果提供,创建的用户将在初始登后需要择一个新密。可默认值true
- `--random-password`:如果提供,将使用随机生成的密码作为创建用户的密`--password` 的值将被忽略。可
- `--random-password-length`:如果提供,将用于配置随机生成密的长度。可默认值12
- `--admin`:如果提供此项,将建一个管理员使用者。可
- `--access-token`:如果提供,将為使用者建立访问令牌。可默认值false
- `--must-change-password`:如果提供,建立的使用者将在初始登后需要择一个新密。可默认值true
- `--random-password`:如果提供,将使用随机生成的密碼作為建立使用者的密`--password` 的值将被忽略。可
- `--random-password-length`:如果提供,将用于配置随机生成密的长度。可默认值12
- 示例:
- `gitea admin user create --username myname --password asecurepassword --email me@example.com`
- `change-password`
- 项:
- `--username value``-u value`用户名。必填。
- `--password value``-p value`:新密。必填。
- 项:
- `--username value``-u value`使用者名。必填。
- `--password value``-p value`:新密。必填。
- 示例:
- `gitea admin user change-password --username myname --password asecurepassword`
- `must-change-password`
- 参数
- `[username...]`:需要更改密码的用户
- 项:
- `--all``-A`:强制所有用户更改密
- `--exclude username``-e username`:排除给定的用户。可以多次设置。
- `--unset`:撤销对给定用户的强制密更改
- 參數
- `[username...]`:需要更改密碼的使用者
- 项:
- `--all``-A`:强制所有使用者更改密
- `--exclude username``-e username`:排除给定的使用者。可以多次设置。
- `--unset`:撤销对给定使用者的强制密更改
- `regenerate`
- 项:
- `hooks`:重新生成所有仓库的 Git Hooks。
- 项:
- `hooks`:重新生成所有存放庫的 Git Hooks。
- `keys`:重新生成 authorized_keys 文件。
- 示例:
- `gitea admin regenerate hooks`
- `gitea admin regenerate keys`
- `auth`
- `list`
- 描述:列出所有存在的外部认证源。
- 描述:列出所有存在的外部認證源。
- 示例:
- `gitea admin auth list`
- `delete`
- 项:
- 项:
- `--id`:要删除的源的 ID。必填。
- 示例:
- `gitea admin auth delete --id 1`
- `add-oauth`
- 项:
- `--name`用程序名
- 项:
- `--name`用程序名
- `--provider`OAuth2 提供者。
- `--key`:客户端 IDKey
- `--secret`:客户端密钥。
- `--auto-discover-url`OpenID Connect 自动发 URL在使用 OpenID Connect 作提供程序时需要)。
- `--auto-discover-url`OpenID Connect 自动发 URL在使用 OpenID Connect 作提供程序时需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。
- `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的项)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的项)。
- `--icon-url`OAuth2 登源的自定义图标 URL。
- `--skip-local-2fa`:允许源覆盖本地 2FA。
- `--scopes`求此 OAuth2 源的附加范围。(可
- `--required-claim-name`:必设置的声明名,以允许用户使用此源登。(可
- `--required-claim-value`:必设置的声明值,以允许用户使用此源登。(可
- `--group-claim-name`:提供此源的组名的声明名。(可
- `--admin-group`:管理员用户的组声明值。(可
- `--restricted-group`:受限用户的组声明值。(可
- `--group-team-map`:组与组织团队之间的 JSON 映射。(可
- `--group-team-map-removal`:根据组自动激活团队成员资格的删除。(可
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的项)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的项)。
- `--icon-url`OAuth2 登源的自定义图标 URL。
- `--skip-local-2fa`:允许源覆盖本地 2FA。
- `--scopes`求此 OAuth2 源的附加范围。(可
- `--required-claim-name`:必设置的声明名,以允许使用者使用此源登。(可
- `--required-claim-value`:必设置的声明值,以允许使用者使用此源登。(可
- `--group-claim-name`:提供此源的组名的声明名。(可
- `--admin-group`:管理员使用者的组声明值。(可
- `--restricted-group`:受限使用者的组声明值。(可
- `--group-team-map`:组与組織团队之间的 JSON 映射。(可
- `--group-team-map-removal`:根据组自动激活团队成员资格的删除。(可
- 示例:
- `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE`
- `update-oauth`
- 项:
- 项:
- `--id`:要更新的源的 ID。必填。
- `--name`用程序名
- `--name`用程序名
- `--provider`OAuth2 提供者。
- `--key`:客户端 IDKey
- `--secret`:客户端密钥。
- `--auto-discover-url`OpenID Connect 自动发 URL在使用 OpenID Connect 作提供程序时需要)。
- `--auto-discover-url`OpenID Connect 自动发 URL在使用 OpenID Connect 作提供程序时需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端点上使用自定义 URL。
- `--custom-tenant-id`:在 OAuth 端点上使用自定义租户 ID。
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的项)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的项)。
- `--icon-url`OAuth2 登源的自定义图标 URL。
- `--skip-local-2fa`:允许源覆盖本地 2FA。
- `--scopes`求此 OAuth2 源的附加范围。
- `--required-claim-name`:必设置的声明名,以允许用户使用此源登。(可
- `--required-claim-value`:必设置的声明值,以允许用户使用此源登。(可
- `--group-claim-name`:提供此源的组名的声明名。(可
- `--admin-group`:管理员用户的组声明值。(可
- `--restricted-group`:受限用户的组声明值。(可
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的项)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的项)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的项)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的项)。
- `--icon-url`OAuth2 登源的自定义图标 URL。
- `--skip-local-2fa`:允许源覆盖本地 2FA。
- `--scopes`求此 OAuth2 源的附加范围。
- `--required-claim-name`:必设置的声明名,以允许使用者使用此源登。(可
- `--required-claim-value`:必设置的声明值,以允许使用者使用此源登。(可
- `--group-claim-name`:提供此源的组名的声明名。(可
- `--admin-group`:管理员使用者的组声明值。(可
- `--restricted-group`:受限使用者的组声明值。(可
- 示例:
- `gitea admin auth update-oauth --id 1 --name external-github-updated`
- `add-smtp`
- 项:
- `--name`用程序名。必填。
- `--auth-type`SMTP 认证类PLAIN/LOGIN/CRAM-MD5。默认 PLAIN。
- 项:
- `--name`用程序名。必填。
- `--auth-type`SMTP 認證類PLAIN/LOGIN/CRAM-MD5。默认 PLAIN。
- `--host`SMTP 主机。必填。
- `--port`SMTP 端口。必填。
- `--force-smtps`SMTPS 始终在端口 465 上使用。设置此项以强制在其他端口上使用 SMTPS。
- `--skip-verify`:跳 TLS 验证
- `--force-smtps`SMTPS 始终在端口 465 上使用。设置此项以强制在其他端口上使用 SMTPS。
- `--skip-verify`:跳 TLS 驗證
- `--helo-hostname`:发送 HELO 时使用的主机名。留空以发送当前主机名。
- `--disable-helo`:禁用 SMTP helo。
- `--allowed-domains`:留空以允许所有域。使用逗号(',')分隔多个域。
- `--skip-local-2fa`:跳 2FA 登
- `--active`:启用此认证源。
- `--skip-local-2fa`:跳 2FA 登
- `--active`:启用此認證源。
备注:
`--force-smtps``--skip-verify``--disable-helo``--skip-local-2fs``--active` 项可以采用以下形式使用:
- `--option``--option=true` 以启用
- `--option=false` 以禁用
如果未指定这些项,则在 `update-smtp` 中不会更改值,或者在 `add-smtp` 中将使用默认的 `false` 值。
`--force-smtps``--skip-verify``--disable-helo``--skip-local-2fs``--active` 项可以采用以下形式使用:
- `--option``--option=true` 以启用
- `--option=false` 以禁用
如果未指定这些项,则在 `update-smtp` 中不会更改值,或者在 `add-smtp` 中将使用默认的 `false` 值。
- 示例:
- `gitea admin auth add-smtp --name ldap --host smtp.mydomain.org --port 587 --skip-verify --active`
- `update-smtp`
- 项:
- 项:
- `--id`:要更新的源的 ID。必填。
- 其他项与 `add-smtp` 共享
- 其他项与 `add-smtp` 共享
- 示例:
- `gitea admin auth update-smtp --id 1 --host smtp.mydomain.org --port 587 --skip-verify=false`
- `gitea admin auth update-smtp --id 1 --active=false`
- `add-ldap`:添加新的 LDAP Bind DN认证
- 项:
- `--name value`认证名称。必填。
- `--not-active`:停用认证源。
- `--security-protocol value`:安全协议名。必填。
- `--skip-tls-verify`:禁用 TLS 验证
- `add-ldap`:添加新的 LDAP Bind DN認證
- 项:
- `--name value`認證名稱。必填。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名。必填。
- `--skip-tls-verify`:禁用 TLS 驗證
- `--host value`LDAP 服务器的地址。必填。
- `--port value`:连接到 LDAP 服务器时使用的端口。必填。
- `--user-search-base value`用户帐户将在其中搜索的 LDAP 基础路径。必填。
- `--user-filter value`:声明如何查找试图行身份验证的用户记录的 LDAP 滤器。必填。
- `--admin-filter value`:指定是否授予用户管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否应将用户设置受限状态的 LDAP 滤器。
- `--username-attribute value`用户 LDAP 记录中包含用户名的属性。
- `--firstname-attribute value`用户 LDAP 记录中包含用户名字的属性。
- `--surname-attribute value`用户 LDAP 记录中包含用户姓氏的属性。
- `--email-attribute value`用户 LDAP 记录中包含用户电子邮件地址的属性。必填。
- `--public-ssh-key-attribute value`用户 LDAP 记录中包含用户公共 SSH 密钥的属性。
- `--avatar-attribute value`用户 LDAP 记录中包含用户头像的属性。
- `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。
- `--bind-password value`:绑定 DN 的密(如果有)。
- `--user-search-base value`使用者帳戶将在其中搜索的 LDAP 基础路径。必填。
- `--user-filter value`:声明如何查找试图行身份驗證的使用者记录的 LDAP 滤器。必填。
- `--admin-filter value`:指定是否授予使用者管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否應将使用者设置受限状态的 LDAP 滤器。
- `--username-attribute value`使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`使用者 LDAP 记录中包含使用者名字的属性。
- `--surname-attribute value`使用者 LDAP 记录中包含使用者姓氏的属性。
- `--email-attribute value`使用者 LDAP 记录中包含使用者电子邮件地址的属性。必填。
- `--public-ssh-key-attribute value`使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`使用者 LDAP 记录中包含使用者头像的属性。
- `--bind-dn value`:在搜索使用者时绑定到 LDAP 服务器的 DN。
- `--bind-password value`:绑定 DN 的密(如果有)。
- `--attributes-in-bind`:在绑定 DN 上下文中获取属性。
- `--synchronize-users`:启用用户同步。
- `--synchronize-users`:启用使用者同步。
- `--page-size value`:搜索页面大小。
- 示例:
- `gitea admin auth add-ldap --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-search-base "ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))" --email-attribute mail`
- `update-ldap`:更新有的 LDAP Bind DN认证
- 项:
- `--id value`认证源的 ID。必填。
- `--name value`认证名称
- `--not-active`:停用认证源。
- `--security-protocol value`:安全协议名
- `--skip-tls-verify`:禁用 TLS 验证
- `update-ldap`:更新有的 LDAP Bind DN認證
- 项:
- `--id value`認證源的 ID。必填。
- `--name value`認證名稱
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名
- `--skip-tls-verify`:禁用 TLS 驗證
- `--host value`LDAP 服务器的地址。
- `--port value`:连接到 LDAP 服务器时使用的端口。
- `--user-search-base value`用户帐户将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份验证的用户记录的 LDAP 滤器。
- `--admin-filter value`:指定是否授予用户管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否应将用户设置受限状态的 LDAP 滤器。
- `--username-attribute value`用户 LDAP 记录中包含用户名的属性。
- `--firstname-attribute value`用户 LDAP 记录中包含用户名字的属性。
- `--surname-attribute value`用户 LDAP 记录中包含用户姓氏的属性。
- `--email-attribute value`用户 LDAP 记录中包含用户电子邮件地址的属性。
- `--public-ssh-key-attribute value`用户 LDAP 记录中包含用户公共 SSH 密钥的属性。
- `--avatar-attribute value`用户 LDAP 记录中包含用户头像的属性。
- `--bind-dn value`:在搜索用户时绑定到 LDAP 服务器的 DN。
- `--bind-password value`:绑定 DN 的密(如果有)。
- `--user-search-base value`使用者帳戶将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份驗證的使用者记录的 LDAP 滤器。
- `--admin-filter value`:指定是否授予使用者管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否應将使用者设置受限状态的 LDAP 滤器。
- `--username-attribute value`使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`使用者 LDAP 记录中包含使用者名字的属性。
- `--surname-attribute value`使用者 LDAP 记录中包含使用者姓氏的属性。
- `--email-attribute value`使用者 LDAP 记录中包含使用者电子邮件地址的属性。
- `--public-ssh-key-attribute value`使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`使用者 LDAP 记录中包含使用者头像的属性。
- `--bind-dn value`:在搜索使用者时绑定到 LDAP 服务器的 DN。
- `--bind-password value`:绑定 DN 的密(如果有)。
- `--attributes-in-bind`:在绑定 DN 上下文中获取属性。
- `--synchronize-users`:启用用户同步。
- `--synchronize-users`:启用使用者同步。
- `--page-size value`:搜索页面大小。
- 示例:
- `gitea admin auth update-ldap --id 1 --name "my ldap auth source"`
- `gitea admin auth update-ldap --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn`
- `add-ldap-simple`:添加新的 LDAP身份验证)认证
- 项:
- `--name value`认证名称。必填。
- `--not-active`:停用认证源。
- `--security-protocol value`:安全协议名。必填。
- `--skip-tls-verify`:禁用 TLS 验证
- `add-ldap-simple`:添加新的 LDAP身份驗證)認證
- 项:
- `--name value`認證名稱。必填。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名。必填。
- `--skip-tls-verify`:禁用 TLS 驗證
- `--host value`LDAP 服务器的地址。必填。
- `--port value`:连接到 LDAP 服务器时使用的端口。必填。
- `--user-search-base value`用户帐户将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份验证的用户记录的 LDAP 滤器。必填。
- `--admin-filter value`:指定是否授予用户管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否应将用户设置受限状态的 LDAP 滤器。
- `--username-attribute value`用户 LDAP 记录中包含用户名的属性。
- `--firstname-attribute value`用户 LDAP 记录中包含用户名字的属性。
- `--surname-attribute value`用户 LDAP 记录中包含用户姓氏的属性。
- `--email-attribute value`用户 LDAP 记录中包含用户电子邮件地址的属性。必填。
- `--public-ssh-key-attribute value`用户 LDAP 记录中包含用户公共 SSH 密钥的属性。
- `--avatar-attribute value`用户 LDAP 记录中包含用户头像的属性。
- `--user-dn value`用户的 DN。必填。
- `--user-search-base value`使用者帳戶将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份驗證的使用者记录的 LDAP 滤器。必填。
- `--admin-filter value`:指定是否授予使用者管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否應将使用者设置受限状态的 LDAP 滤器。
- `--username-attribute value`使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`使用者 LDAP 记录中包含使用者名字的属性。
- `--surname-attribute value`使用者 LDAP 记录中包含使用者姓氏的属性。
- `--email-attribute value`使用者 LDAP 记录中包含使用者电子邮件地址的属性。必填。
- `--public-ssh-key-attribute value`使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`使用者 LDAP 记录中包含使用者头像的属性。
- `--user-dn value`使用者的 DN。必填。
- 示例:
- `gitea admin auth add-ldap-simple --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-dn "cn=%s,ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(cn=%s))" --email-attribute mail`
- `update-ldap-simple`:更新有的 LDAP身份验证)认证
- 项:
- `--id value`认证源的 ID。必填。
- `--name value`认证名称
- `--not-active`:停用认证源。
- `--security-protocol value`:安全协议名
- `--skip-tls-verify`:禁用 TLS 验证
- `update-ldap-simple`:更新有的 LDAP身份驗證)認證
- 项:
- `--id value`認證源的 ID。必填。
- `--name value`認證名稱
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名
- `--skip-tls-verify`:禁用 TLS 驗證
- `--host value`LDAP 服务器的地址。
- `--port value`:连接到 LDAP 服务器时使用的端口。
- `--user-search-base value`用户帐户将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份验证的用户记录的 LDAP 滤器。
- `--admin-filter value`:指定是否授予用户管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否应将用户设置受限状态的 LDAP 滤器。
- `--username-attribute value`用户 LDAP 记录中包含用户名的属性。
- `--firstname-attribute value`用户 LDAP 记录中包含用户名字的属性。
- `--surname-attribute value`用户 LDAP 记录中包含用户姓氏的属性。
- `--email-attribute value`用户 LDAP 记录中包含用户电子邮件地址的属性。
- `--public-ssh-key-attribute value`用户 LDAP 记录中包含用户公共 SSH 密钥的属性。
- `--avatar-attribute value`用户 LDAP 记录中包含用户头像的属性。
- `--user-dn value`用户的 DN。
- `--user-search-base value`使用者帳戶将在其中搜索的 LDAP 基础路径。
- `--user-filter value`:声明如何查找试图行身份驗證的使用者记录的 LDAP 滤器。
- `--admin-filter value`:指定是否授予使用者管理员特权的 LDAP 滤器。
- `--restricted-filter value`:指定是否應将使用者设置受限状态的 LDAP 滤器。
- `--username-attribute value`使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`使用者 LDAP 记录中包含使用者名字的属性。
- `--surname-attribute value`使用者 LDAP 记录中包含使用者姓氏的属性。
- `--email-attribute value`使用者 LDAP 记录中包含使用者电子邮件地址的属性。
- `--public-ssh-key-attribute value`使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`使用者 LDAP 记录中包含使用者头像的属性。
- `--user-dn value`使用者的 DN。
- 示例:
- `gitea admin auth update-ldap-simple --id 1 --name "my ldap auth source"`
- `gitea admin auth update-ldap-simple --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn`
### cert
生成自签名的 SSL 证书。将输出到当前目下的`cert.pem``key.pem`文件中,且会覆盖任何有文件。
生成自签名的 SSL 证书。将输出到当前目下的`cert.pem``key.pem`文件中,且会覆盖任何有文件。
- 项:
- 项:
- `--host value`:逗号分隔的主机名和 IP 地址列表,此证书适用于这些主机。支持使用通配符。必填。
- `--ecdsa-curve value`:用于生成密钥的 ECDSA 曲线。可。有效选项为 P224、P256、P384、P521。
- `--rsa-bits value`:要生成的 RSA 密钥的大小。可。如果设置了--ecdsa-curve则忽略此项。默认值3072
- `--start-date value`:证书的建日期。可。(格式:`Jan 1 15:04:05 2011`)。
- `--duration value`:证书有效期。可默认值8760h0m0s
- `--ca`:如果提供此项,则证书将生成自己的证书颁发机构。可
- `--ecdsa-curve value`:用于生成密钥的 ECDSA 曲线。可。有效選项為 P224、P256、P384、P521。
- `--rsa-bits value`:要生成的 RSA 密钥的大小。可。如果设置了--ecdsa-curve则忽略此项。默认值3072
- `--start-date value`:证书的建日期。可。(格式:`Jan 1 15:04:05 2011`)。
- `--duration value`:证书有效期。可默认值8760h0m0s
- `--ca`:如果提供此项,则证书将生成自己的证书颁发机构。可
- 示例:
- `gitea cert --host git.example.com,example.com,www.example.com --ca`
### dump
将所有文件和数据库导出到一个 zip 文件中。输出文件将保存在当前目下,类似于`gitea-dump-1482906742.zip`
将所有文件和数据库导出到一个 zip 文件中。输出文件将保存在当前目下,类似于`gitea-dump-1482906742.zip`
- 项:
- `--file name``-f name`:指定要建的导出文件的名。可默认值gitea-dump-[timestamp].zip
- `--tempdir path``-t path`:指定临时目的路径。可。(默认值:/tmp
- `--skip-repository``-R`:跳过仓库的导出。可
- `--skip-custom-dir`:跳自定义目的导出。可
- `--skip-lfs-data`:跳 LFS 数据的导出。可
- `--skip-attachment-data`:跳附件数据的导出。可
- `--skip-package-data`:跳包数据的导出。可
- `--skip-log`:跳日志数据的导出。可
- `--database``-d`:指定数据库的 SQL 语法。可
- `--verbose``-V`:如果提供此项,显示附加详细信息。可
- `--type`:设置导出的格式。可默认值zip
- 项:
- `--file name``-f name`:指定要建的导出文件的名。可默认值gitea-dump-[timestamp].zip
- `--tempdir path``-t path`:指定临时目的路径。可。(默认值:/tmp
- `--skip-repository``-R`:跳過存放庫的导出。可
- `--skip-custom-dir`:跳自定义目的导出。可
- `--skip-lfs-data`:跳 LFS 数据的导出。可
- `--skip-attachment-data`:跳附件数据的导出。可
- `--skip-package-data`:跳包数据的导出。可
- `--skip-log`:跳日志数据的导出。可
- `--database``-d`:指定数据库的 SQL 语法。可
- `--verbose``-V`:如果提供此项,显示附加详细信息。可
- `--type`:设置导出的格式。可默认值zip
- 示例:
- `gitea dump`
- `gitea dump --verbose`
### generate
用于在配置文件中生成随机值和令牌。对于自动部署时生成值非常有用。
用于在配置文件中生成随机值和令牌。對於自动部署时生成值非常有用。
- 命令:
- `secret`:
- 项:
- `INTERNAL_TOKEN`: 用于内部 API 调用身份验证的令牌。
- `JWT_SECRET`: 用于 LFS 和 OAUTH2 JWT 身份验证的密钥LFS_JWT_SECRET 是此项的别名,用于向后兼容)。
- 项:
- `INTERNAL_TOKEN`: 用于内部 API 调用身份驗證的令牌。
- `JWT_SECRET`: 用于 LFS 和 OAUTH2 JWT 身份驗證的密钥LFS_JWT_SECRET 是此项的别名,用于向后兼容)。
- `SECRET_KEY`: 全局密钥。
- 示例:
- `gitea generate secret INTERNAL_TOKEN`
@@ -331,27 +331,27 @@ aliases:
### keys
提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中行配置:
提供一个 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中行配置:
```ini
...
# -e 的值和 AuthorizedKeysCommandUser 与运行 Gitea 的用户名匹配
# -e 的值和 AuthorizedKeysCommandUser 与运行 Gitea 的使用者名匹配
AuthorizedKeysCommandUser git
AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
```
命令将返回适用于提供的密钥的合适 authorized_keys 行。您还应`app.ini``[server]` 部分设置值 `SSH_CREATE_AUTHORIZED_KEYS_FILE=false`
命令将返回适用于提供的密钥的合适 authorized_keys 行。您還應`app.ini``[server]` 部分设置值 `SSH_CREATE_AUTHORIZED_KEYS_FILE=false`
注意: opensshd 要求 Gitea 程序由 root 拥有,且不可由组或其他人写入。程序必使用绝对路径指定。
注意: Gitea 必在运行此命令时处于运行状态才能成功。
注意: opensshd 要求 Gitea 程序由 root 拥有,且不可由组或其他人写入。程序必使用绝对路径指定。
注意: Gitea 必在运行此命令时处于运行状态才能成功。
### migrate
迁移数据库。命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。
迁移数据库。命令可用于在首次启动服务器之前运行其他命令。此命令是幂等的。
### doctor check
对 Gitea 实例行诊断,可以修复一些可修复的问题。
对 Gitea 实例行诊断,可以修复一些可修复的问题。
默认只运行部分检查,额外的检查可以参考:
- `gitea doctor check --list` - 列出所有可用的检查
@@ -359,8 +359,8 @@ AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
- `gitea doctor check --default` - 运行默认的检查
- `gitea doctor check --run [check(s),]...` - 运行指定的名字的检查
有些问题可以通设置 `--fix` 选项进行自动修复。
额外的日志可以通 `--log-file=...` 行设置。
有些问题可以通设置 `--fix` 選项進行自动修复。
额外的日志可以通 `--log-file=...` 行设置。
#### doctor recreate-table
@@ -370,19 +370,19 @@ AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0
```
您可以通以下方式让 Gitea 重新建这些表,将旧数据复制到新表中,适当设置默认值:
您可以通以下方式让 Gitea 重新建这些表,将旧数据复制到新表中,适当设置默认值:
```
gitea doctor recreate-table user
```
您可以使用以下方式让 Gitea 重新建多个表:
您可以使用以下方式让 Gitea 重新建多个表:
```
gitea doctor recreate-table table1 table2 ...
```
如果您希望 Gitea 重新建所有表,直接调用:
如果您希望 Gitea 重新建所有表,直接调用:
```
gitea doctor recreate-table
@@ -392,47 +392,47 @@ gitea doctor recreate-table
### doctor convert
有的 MySQL 数据库从 utf8 转换 utf8mb4或者把 MSSQL 数据库从 varchar 转换 nvarchar。
有的 MySQL 数据库从 utf8 转换 utf8mb4或者把 MSSQL 数据库从 varchar 转换 nvarchar。
### manager
管理运行中的服务器操作:
- 命令:
- `shutdown`: 优雅地关闭运行中的
- `restart`: 优雅地重新启动运行中的程(对于 Windows 服务器尚未实
- `flush-queues`: 刷新运行中的程中的队列
- 项:
- `--timeout value`: 刷新程的超时时间(默认值: 1m0s
- `--non-blocking`: 设置 true以在返回之前不等待刷新完成
- `shutdown`: 优雅地关闭运行中的
- `restart`: 优雅地重新启动运行中的程(對於 Windows 服务器尚未实
- `flush-queues`: 刷新运行中的程中的队列
- 项:
- `--timeout value`: 刷新程的超时时间(默认值: 1m0s
- `--non-blocking`: 设置 true以在返回之前不等待刷新完成
- `logging`: 调整日志命令
- 命令:
- `pause`: 暂停日志记录
- 注意:
- 如果日志级别低于此级别,日志级别将被临时提升 INFO。
- Gitea 将在一定程度上缓冲日志,在超过该点后丢弃日志。
- 如果日志级别低于此级别,日志级别将被临时提升 INFO。
- Gitea 将在一定程度上缓冲日志,在超過該点后丢弃日志。
- `resume`: 恢复日志记录
- `release-and-reopen`: 使 Gitea 释放和重新打开用于日志记录的文件和连接(相当于向 Gitea 发送 SIGUSR1 信号)。
- `remove name`: 删除指定的日志记录器
- 项:
- `--group group`, `-g group`: 从中删除子记录器的组(默认`default`
- 项:
- `--group group`, `-g group`: 从中删除子记录器的组(默认`default`
- `add`: 添加日志记录器
- 命令:
- `console`: 添加控制台日志记录器
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表达式
- `--prefix value`, `-p value`: 日志记录器的前缀
- `--color`: 在日志中使用颜色
- `--stderr`: 将控制台日志输出到 stderr - 适用于控制台
- `--stderr`: 将控制台日志输出到 stderr - 适用于控制台
- `file`: 添加文件日志记录器
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
@@ -441,79 +441,79 @@ gitea doctor recreate-table
- `--color`: 在日志中使用颜色
- `--filename value`, `-f value`: 日志记录器的文件名
- `--rotate`, `-r`: 轮转日志
- `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节为单位)
- `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节為單位)
- `--daily`, `-d`: 每天轮转日志
- `--max-days value`, `-D value`: 保留的每日日志的最大数量
- `--compress`, `-z`: 压缩轮转的日志
- `--compression-level value`, `-Z value`: 使用的压缩级别
- `conn`: 添加网络连接日志记录器
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表达式
- `--prefix value`, `-p value`: 日志记录器的前缀
- `--color`: 在日志中使用颜色
- `--reconnect-on-message`, `-R`: 对于每个消息重新连接主机
- `--reconnect-on-message`, `-R`: 對於每个消息重新连接主机
- `--reconnect`, `-r`: 连接中断时重新连接主机
- `--protocol value`, `-P value`: 设置要使用的协议tcp、unix 或 udp默认 tcp
- `--address value`, `-a value`: 要连接到的主机地址和端口(默认:7020
- `--protocol value`, `-P value`: 设置要使用的协议tcp、unix 或 udp默认 tcp
- `--address value`, `-a value`: 要连接到的主机地址和端口(默认:7020
- `smtp`: 添加 SMTP 日志记录器
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- 项:
- `--group value`, `-g value`: 要添加日志记录器的组 - 默认"default"
- `--name value`, `-n value`: 新日志记录器的名 - 默认模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表达式
- `--prefix value`, `-p value`: 日志记录器的前缀
- `--color`: 在日志中使用颜色
- `--username value`, `-u value`: 邮件服务器用户
- `--password value`, `-P value`: 邮件服务器密
- `--host value`, `-H value`: 邮件服务器主机(默认: 127.0.0.1:25
- `--username value`, `-u value`: 邮件服务器使用者
- `--password value`, `-P value`: 邮件服务器密
- `--host value`, `-H value`: 邮件服务器主机(默认: 127.0.0.1:25
- `--send-to value`, `-s value`: 要发送到的电子邮件地址
- `--subject value`, `-S value`: 发送电子邮件的主题标题
- `processes`: 显示 Gitea 程和 Goroutine 信息
- 项:
- `--flat`: 以平面表格形式显示程,而不是树形结构
- `--no-system`: 不显示系统
- `--stacktraces`: 显示与程关联的 Goroutine 的堆栈跟踪
- `--json`: 输出 JSON 格式
- `--cancel PID`: 向具有 PID 的程发送取消命令(适用于非系统程)
- `processes`: 显示 Gitea 程和 Goroutine 信息
- 项:
- `--flat`: 以平面表格形式显示程,而不是树形结构
- `--no-system`: 不显示系统
- `--stacktraces`: 显示与程关联的 Goroutine 的堆栈跟踪
- `--json`: 输出 JSON 格式
- `--cancel PID`: 向具有 PID 的程发送取消命令(适用于非系统程)
### dump-repo
`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转储存储库数据:
`dump-repo` 从 Git/GitHub/Gitea/GitLab 中转儲存儲库数据:
- 项:
- `--git_service service`Git 服务,可以是 `git``github``gitea``gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此项。
- `--repo_dir dir``-r dir`:存数据的存库目路径。
- 项:
- `--git_service service`Git 服务,可以是 `git``github``gitea``gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此项。
- `--repo_dir dir``-r dir`:存数据的存库目路径。
- `--clone_addr addr`:将被克隆的 URL目前可以是 git/github/gitea/gitlab 的 http/https URL。例如https://github.com/lunny/tango.git
- `--auth_username lunny`:访问 `clone_addr`用户名。
- `--auth_password <password>`:访问 `clone_addr` 的密
- `--auth_username lunny`:访问 `clone_addr`使用者名。
- `--auth_password <password>`:访问 `clone_addr` 的密
- `--auth_token <token>`:访问 `clone_addr` 的个人令牌。
- `--owner_name lunny`:如果非空,数据将存在具有所有者名的目中。
- `--repo_name tango`:如果非空,数据将存在具有存库名的目中。
- `--units <units>`:要迁移的项目,一个或多个项目以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果空,则表示所有项目。
- `--owner_name lunny`:如果非空,数据将存在具有所有者名的目中。
- `--repo_name tango`:如果非空,数据将存在具有存库名的目中。
- `--units <units>`:要迁移的项目,一个或多个项目以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果空,则表示所有项目。
### restore-repo
`restore-repo`磁盘目录中还原存库数据:
`restore-repo`硬碟目錄中還原存库数据:
- 项:
- `--repo_dir dir``-r dir`原数据的存库目路径。
- `--owner_name lunny`原目标所有者名
- `--repo_name tango`原目标存库名
- `--units <units>`:要原的项目,一个或多个项目以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果空,则表示所有项目。
- 项:
- `--repo_dir dir``-r dir`原数据的存库目路径。
- `--owner_name lunny`原目标所有者名
- `--repo_name tango`原目标存库名
- `--units <units>`:要原的项目,一个或多个项目以逗号分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果空,则表示所有项目。
### actions generate-runner-token
生成一个供 Runner 使用的新令牌,用于向服务器注册。
- 项:
- `--scope {owner}[/{repo}]``-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示 Runner 可用于所有仓库,但你也可以将其限制特定的仓库或所有者。
- 项:
- `--scope {owner}[/{repo}]``-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示 Runner 可用于所有存放庫,但你也可以将其限制特定的存放庫或所有者。
要注册全局 Runner
@@ -521,13 +521,13 @@ gitea doctor recreate-table
gitea actions generate-runner-token
```
要注册特定组织的 Runner例如 `org`
要注册特定組織的 Runner例如 `org`
```
gitea actions generate-runner-token -s org
```
要注册特定仓库的 Runner例如 `username/test-repo`
要注册特定存放庫的 Runner例如 `username/test-repo`
```
gitea actions generate-runner-token -s username/test-repo

View File

@@ -9,75 +9,75 @@ aliases:
# 自定义 Gitea 配置
Gitea 引用 `custom`中的自定义配置文件来覆盖配置、模板等默认配置。
Gitea 引用 `custom`中的自定义配置文件来覆盖配置、模板等默认配置。
如果从二制部署 Gitea ,则所有默认路径都将相对于该 gitea 二制文件;如果从发行版安,则可能会将这些路径修改 Linux 文件系统标准。Gitea
将会自动建包括 `custom/` 在内的必要用目录,应用本身的配置存放在
`custom/conf/app.ini` 当中。在发行版中可能会以 `/etc/gitea/` 的形式 `custom` 设置一个符号链接,查看配置详情移步:
如果从二制部署 Gitea ,则所有默认路径都将相對於該 gitea 二制文件;如果从发行版安,则可能会将这些路径修改 Linux 文件系统标准。Gitea
将会自动建包括 `custom/` 在内的必要用目錄,應用本身的配置存放在
`custom/conf/app.ini` 当中。在发行版中可能会以 `/etc/gitea/` 的形式 `custom` 设置一个符号链接,查看配置详情移步:
- [快速备忘](../administration/config-cheat-sheet.md)
- [完整配置清](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
- [快速备忘](../administration/config-cheat-sheet.md)
- [完整配置清](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
如果您在 binary 同目录下无法找到 `custom` 文件夹,检查您的 `GITEA_CUSTOM`
环境变量配置, 因它可能被配置到了其他地方(可能被一些启动脚本设置指定了目)。
如果您在 binary 同目錄下無法找到 `custom` 文件夹,检查您的 `GITEA_CUSTOM`
环境变量配置, 因它可能被配置到了其他地方(可能被一些启动脚本设置指定了目)。
- [环境变量清](../administration/environment-variables.md)
- [环境变量清](../administration/environment-variables.md)
**注:**完全重启 Gitea 以使配置生效。
**注:**完全重启 Gitea 以使配置生效。
## 使用自定义 /robots.txt
将 [想要展示的内容](http://www.robotstxt.org/) 存放在 `custom`中的
将 [想要展示的内容](http://www.robotstxt.org/) 存放在 `custom`中的
`robots.txt` 文件来让 Gitea 使用自定义的`/robots.txt` (默认:空 404
## 使用自定义的公共文件
将自定义的公共文件(比如页面和图片)作 webroot 放在 `custom/public/` 中来让 Gitea 提供这些自定义内容(符号链接将被追踪)。
将自定义的公共文件(比如页面和图片)作 webroot 放在 `custom/public/` 中来让 Gitea 提供这些自定义内容(符号链接将被追踪)。
举例说明:`image.png` 存放在 `custom/public/assets/`中,那么它可以通链接 http://gitea.domain.tld/assets/image.png 访问。
举例说明:`image.png` 存放在 `custom/public/assets/`中,那么它可以通链接 http://gitea.domain.tld/assets/image.png 访问。
## 修改默认头像
替换以下目中的 png 图片: `custom/public/assets/img/avatar\_default.png`
替换以下目中的 png 图片: `custom/public/assets/img/avatar\_default.png`
## 自定义 Gitea 页面
您可以改变 Gitea `custom/templates` 的每个页面。您可以在 Gitea 源码的 `templates`中找到用于覆盖的模板文件,用将根据
`custom/templates`下的路径结构行匹配和覆盖。
您可以改变 Gitea `custom/templates` 的每个页面。您可以在 Gitea 源码的 `templates`中找到用于覆盖的模板文件,用将根据
`custom/templates`下的路径结构行匹配和覆盖。
包含在 `{{``}}` 中的任何语句都是 Gitea 的模板语法,如果您不完全理解这些组件,不建议您对它们行修改。
包含在 `{{``}}` 中的任何语句都是 Gitea 的模板语法,如果您不完全理解这些组件,不建议您对它们行修改。
### 添加链接和页签
如果您只是想添加额外的链接到顶部导航栏或额外的项卡到存库视图,您可以将它们放在您 `custom/templates/custom/`下的 `extra_links.tmpl``extra_tabs.tmpl` 文件中。
如果您只是想添加额外的链接到顶部导航栏或额外的项卡到存库视图,您可以将它们放在您 `custom/templates/custom/`下的 `extra_links.tmpl``extra_tabs.tmpl` 文件中。
举例说明:假设您需要在网站放置一个静态的“关于”页面,您只需将页面放在您的
"custom/public/"目下(比如 `custom/public/impressum.html`且将它与 `custom/templates/custom/extra_links.tmpl` 链接起来即可。
举例说明:假设您需要在网站放置一个静态的“关于”页面,您只需将页面放在您的
"custom/public/"目下(比如 `custom/public/impressum.html`且将它与 `custom/templates/custom/extra_links.tmpl` 链接起来即可。
这个链接当使用一个名“item”的 class 来匹配当前样式,您可以使用 `{{AppSubUrl}}` 来获取 base URL:
这个链接当使用一个名“item”的 class 来匹配当前样式,您可以使用 `{{AppSubUrl}}` 来获取 base URL:
`<a class="item" href="{{AppSubUrl}}/assets/impressum.html">Impressum</a>`
同理,您可以将页签添加到 `extra_tabs.tmpl` 中,使用同样的方式来添加页签。它的具样式需要与
`templates/repo/header.tmpl` 中已有的其他项卡的样式匹配
同理,您可以将页签添加到 `extra_tabs.tmpl` 中,使用同样的方式来添加页签。它的具样式需要与
`templates/repo/header.tmpl` 中已有的其他项卡的样式匹配
([source in GitHub](https://github.com/go-gitea/gitea/blob/main/templates/repo/header.tmpl))
### 页面的其他新增内容
除了 `extra_links.tmpl``extra_tabs.tmpl`,您可以在您的 `custom/templates/custom/`中存放一些其他有用的模板,例如:
除了 `extra_links.tmpl``extra_tabs.tmpl`,您可以在您的 `custom/templates/custom/`中存放一些其他有用的模板,例如:
- `header.tmpl`,在 `<head>` 标记结束之前的模板,例如添加自定义 CSS 文件
- `body_outer_pre.tmpl`,在 `<body>` 标记开始处的模板
- `body_inner_pre.tmpl`,在顶部导航栏之前,但在主 container 内部的模板,例如添加一个 `<div class="full height">`
- `body_inner_post.tmpl`,在主 container 结束处的模板
- `body_outer_post.tmpl`,在底部 `<footer>` 元素之前.
- `footer.tmpl`,在 `<body>` 标签结束处的模板,可以在这里填写一些附加的 Javascript 脚本。
- `footer.tmpl`,在 `<body>` 標籤结束处的模板,可以在这里填写一些附加的 Javascript 脚本。
## 自定义 gitignoreslabels licenses locales 以及 readmes
将自定义文件放在 `custom/options` 下相子的文件夹中即可
将自定义文件放在 `custom/options` 下相子的文件夹中即可
## 更改 Gitea 外观
内置主题是“gitea-light”、“gitea-dark”和“gitea-auto”自动适操作系统设置)。
内置主题是“gitea-light”、“gitea-dark”和“gitea-auto”自动适操作系统设置)。
默认主题可以通 `app.ini` 的 [ui](../administration/config-cheat-sheet.md#界面) 部分中的 `DEFAULT_THEME` 行更改。
默认主题可以通 `app.ini` 的 [ui](../administration/config-cheat-sheet.md#界面) 部分中的 `DEFAULT_THEME` 行更改。

View File

@@ -9,15 +9,15 @@ aliases:
# Email 设置
Gitea 具有邮件功能,用于发送事务性邮件(例如注册确认邮件)。它可以配置使用 Sendmail或兼容的 MTA例如 Postfix 和 msmtp或直接使用 SMTP 服务器。
Gitea 具有邮件功能,用于发送事务性邮件(例如注册确认邮件)。它可以配置使用 Sendmail或兼容的 MTA例如 Postfix 和 msmtp或直接使用 SMTP 服务器。
## 使用 Sendmail
使用 `sendmail` 命令作邮件传输代理mailer
使用 `sendmail` 命令作邮件传输代理mailer
注意:对于在官方 Gitea Docker 镜像中使用,使用 SMTP 版本行配置(参考下一节)。
注意:對於在官方 Gitea Docker 镜像中使用,使用 SMTP 版本行配置(参考下一节)。
注意:对于面向互联网的网站,查阅您的 MTA 文以了解通 TLS 发送邮件的说明。同时设置 SPF、DMARC 和 DKIM DNS 记录,以使发送的邮件被各个电子邮件提供商接受合法邮件。
注意:對於面向互联网的网站,查阅您的 MTA 文以了解通 TLS 发送邮件的说明。同时设置 SPF、DMARC 和 DKIM DNS 记录,以使发送的邮件被各个电子邮件提供商接受合法邮件。
```ini title="app.ini"
[mailer]
@@ -25,12 +25,12 @@ ENABLED = true
FROM = gitea@mydomain.com
PROTOCOL = sendmail
SENDMAIL_PATH = /usr/sbin/sendmail
SENDMAIL_ARGS = "--" ; 大多数 "sendmail" 程序都接受项,使用 "--" 将防止电子邮件地址被解释为选项。
SENDMAIL_ARGS = "--" ; 大多数 "sendmail" 程序都接受项,使用 "--" 将防止电子邮件地址被解释為選项。
```
## 使用 SMTP
直接使用 SMTP 服务器作中继。如果您不想在实例上设置 MTA但在电子邮件提供商那里有一个帐户,这个项非常有用。
直接使用 SMTP 服务器作中继。如果您不想在实例上设置 MTA但在电子邮件提供商那里有一个帳戶,这个项非常有用。
```ini title="app.ini"
[mailer]
@@ -45,27 +45,27 @@ PASSWD = `password`
重启 Gitea 以使配置更改生效。
要发送测试邮件以验证设置,转到 Gitea > 站点管理 > 配置 > SMTP 邮件配置。
要发送测试邮件以驗證设置,转到 Gitea > 站点管理 > 配置 > SMTP 邮件配置。
有关所有项的完整列表,查看[配置速查表](../administration/config-cheat-sheet.md)。
有关所有项的完整列表,查看[配置速查表](../administration/config-cheat-sheet.md)。
注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服务器通信时才支持身份验证。TLS 加密可以通以下方式行:
注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服务器通信时才支持身份驗證。TLS 加密可以通以下方式行:
- 通端口 587 的 STARTTLS称为 Opportunistic TLS。初始连接是明文的但如果服务器支持则可以升级 TLS。
- 通默认端口 465 的 SMTPS 连接。连接到服务器从一开始就使用 TLS。
- 使用 `PROTOCOL=smtps` 行强制的 SMTPS 连接。(这两种方式都被称为 Implicit TLS
这是由于 Go 内部库对 STRIPTLS 攻的保护制。
- 通端口 587 的 STARTTLS稱為 Opportunistic TLS。初始连接是明文的但如果服务器支持则可以升级 TLS。
- 通默认端口 465 的 SMTPS 连接。连接到服务器从一开始就使用 TLS。
- 使用 `PROTOCOL=smtps` 行强制的 SMTPS 连接。(这两种方式都被稱為 Implicit TLS
这是由于 Go 内部库对 STRIPTLS 攻的保护制。
注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推荐使用 Implicit TLS。
注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推荐使用 Implicit TLS。
### Gmail
以下配置应该适用于 Gmail 的 SMTP 服务器:
以下配置應該适用于 Gmail 的 SMTP 服务器:
```ini title="app.ini"
[mailer]
ENABLED = true
HOST = smtp.gmail.com:465 ; 对于 Gitea >= 1.18.0,删除此行
HOST = smtp.gmail.com:465 ; 對於 Gitea >= 1.18.0,删除此行
SMTP_ADDR = smtp.gmail.com
SMTP_PORT = 465
FROM = example.user@gmail.com
@@ -74,4 +74,4 @@ PASSWD = `***`
PROTOCOL = smtps
```
注意,您需要创建并使用一个 [用密](https://support.google.com/accounts/answer/185833?hl=en) 在您的 Google 帐户上启用 2FA。您将法直接使用您的 Google 帐户密码
注意,您需要建立並使用一个 [用密](https://support.google.com/accounts/answer/185833?hl=en) 在您的 Google 帳戶上启用 2FA。您将法直接使用您的 Google 帳戶密碼

View File

@@ -7,9 +7,9 @@ aliases:
- /zh-tw/environment-variables
---
# 环境变量清
# 环境变量清
这里是用来控制 Gitea 行为表现的的环境变量清,您需要在行如下 Gitea 启动命令前设置它们来确保配置生效:
这里是用来控制 Gitea 行為表現的的环境变量清,您需要在行如下 Gitea 启动命令前设置它们来确保配置生效:
```
GITEA_CUSTOM=/home/gitea/custom ./gitea web
@@ -17,33 +17,33 @@ GITEA_CUSTOM=/home/gitea/custom ./gitea web
## Go 的配置
Gitea 使用 Go 语言编写,因此它使用了一些相关的 Go 的配置参数
Gitea 使用 Go 语言编写,因此它使用了一些相关的 Go 的配置參數
- `GOOS`
- `GOARCH`
- [`GOPATH`](https://go.dev/cmd/go/#hdr-GOPATH_environment_variable)
您可以在[官方文](https://go.dev/cmd/go/#hdr-Environment_variables)中查阅这些配置参数的详细信息。
您可以在[官方文](https://go.dev/cmd/go/#hdr-Environment_variables)中查阅这些配置參數的详细信息。
## Gitea 的文件目
## Gitea 的文件目
- `GITEA_WORK_DIR`:工作目的绝对路径
- `GITEA_CUSTOM`:默认情况下 Gitea 使用默认目 `GITEA_WORK_DIR`/custom您可以使用这个参数来配置 _custom_
- `GOGS_WORK_DIR` 已废弃,使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM` 已废弃,使用 `GITEA_CUSTOM` 替代
- `GITEA_WORK_DIR`:工作目的绝对路径
- `GITEA_CUSTOM`:默认情况下 Gitea 使用默认目 `GITEA_WORK_DIR`/custom您可以使用这个參數来配置 _custom_
- `GOGS_WORK_DIR` 已废弃,使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM` 已废弃,使用 `GITEA_CUSTOM` 替代
## 操作系统配置
- `USER`Gitea 运行时使用的系统用户,它将作一些 repository 的访问地址的一部分
- `USER`Gitea 运行时使用的系统使用者,它将作一些 repository 的访问地址的一部分
- `USERNAME` 如果没有配置 `USER` Gitea 将使用 `USERNAME`
- `HOME` 用户的 home 目,在 Windows 中会使用 `USERPROFILE` 环境变量
- `HOME` 使用者的 home 目,在 Windows 中会使用 `USERPROFILE` 环境变量
### 限于 Windows 的配置
### 限于 Windows 的配置
- `USERPROFILE` 用户的主目,如果未配置则会使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用于访问 home 目的主驱动器路径C 盘)
- `HOMEPATH`:在指定主驱动器下的 home 目相对路径
- `USERPROFILE` 使用者的主目,如果未配置则会使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用于访问 home 目的主驱动器路径C 盘)
- `HOMEPATH`:在指定主驱动器下的 home 目相对路径
## Miscellaneous
- `SKIP_MINWINSVC`:如果设置 1在 Windows 上不会以 service 的形式运行。
- `SKIP_MINWINSVC`:如果设置 1在 Windows 上不会以 service 的形式运行。

View File

@@ -9,18 +9,18 @@ aliases:
# 外部渲染器
Gitea 通外部二制文件支持自定义文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要行以下步骤:
Gitea 通外部二制文件支持自定义文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要行以下步骤:
-外部二制文件
-外部二制文件
- 在您的 `app.ini` 文件中添加一些配置
- 重新启动 Gitea 实例
此功能支持整个文件的渲染。如果您想要在 Markdown 中渲染代码块,您需要使用 JavaScript 行一些操作。参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md) 页面上的一些示例。
此功能支持整个文件的渲染。如果您想要在 Markdown 中渲染代码块,您需要使用 JavaScript 行一些操作。参阅 [自定义 Gitea 配置](../administration/customizing-gitea.md) 页面上的一些示例。
## 安外部二制文件
## 安外部二制文件
了通外部二制文件行文件渲染,必须安装它们的关联软件包。
如果您正在使用 Docker 镜像,则您的 `Dockerfile` 应该包含以下内容:
了通外部二制文件行文件渲染,必須安裝它们的关联軟體包。
如果您正在使用 Docker 镜像,则您的 `Dockerfile` 應該包含以下内容:
```docker
FROM docker.gitea.com/gitea:@dockerVersion@
@@ -30,15 +30,15 @@ COPY custom/app.ini /data/gitea/conf/app.ini
[...]
RUN apk --no-cache add asciidoctor freetype freetype-dev gcc g++ libpng libffi-dev pandoc python3-dev py3-pyzmq pipx
# 安其他您需要的外部渲染器的软件
# 安其他您需要的外部渲染器的軟體
RUN pipx install jupyter docutils --include-deps
# 在上面添加您需要安的任何其他 Python 软件
# 在上面添加您需要安的任何其他 Python 軟體
```
## `app.ini` 文件配置
在您的自定义 `app.ini` 文件中每个外部渲染器添加一个 `[markup.XXXXX]` 部分:
在您的自定义 `app.ini` 文件中每个外部渲染器添加一个 `[markup.XXXXX]` 部分:
```ini
[markup.asciidoc]
@@ -61,12 +61,12 @@ RENDER_COMMAND = "timeout 30s pandoc +RTS -M512M -RTS -f rst"
IS_INPUT_FILE = false
```
如果您的外部标记语言依赖于在生成的 HTML 元素上的额外类和属性您可能需要启用自定义的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作我们的 HTML 清理器。下面的示例可以用于支持从 [`pandoc`](https://pandoc.org/) 输出的服务器端 [KaTeX](https://katex.org/) 渲染结果。
如果您的外部标记语言依赖于在生成的 HTML 元素上的额外类和属性您可能需要启用自定义的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作我们的 HTML 清理器。下面的示例可以用于支持从 [`pandoc`](https://pandoc.org/) 输出的服务器端 [KaTeX](https://katex.org/) 渲染结果。
```ini
[markup.sanitizer.TeX]
; Pandoc 渲染 TeX 段落带有 "math" 类的 <span> 元素,根据上下文可能带有 "inline" 或 "display" 类。
; - 注意,这与我们的 Markdown 解析器中内置的数学支持不同,后者使用 <code> 元素。
; Pandoc 渲染 TeX 段落带有 "math" 类的 <span> 元素,根据上下文可能带有 "inline" 或 "display" 类。
; - 注意,这与我们的 Markdown 解析器中内置的数学支持不同,后者使用 <code> 元素。
ELEMENT = span
ALLOW_ATTR = class
REGEXP = ^\s*((math(\s+|$)|inline(\s+|$)|display(\s+|$)))+
@@ -77,17 +77,17 @@ FILE_EXTENSIONS = .md,.markdown
RENDER_COMMAND = pandoc -f markdown -t html --katex
```
您必在每个部分中定义 `ELEMENT``ALLOW_ATTR`
您必在每个部分中定义 `ELEMENT``ALLOW_ATTR`
要定义多个条目,添加唯一的字母数字后缀(例如,`[markup.sanitizer.1]``[markup.sanitizer.something]`)。
要定义多个条目,添加唯一的字母数字后缀(例如,`[markup.sanitizer.1]``[markup.sanitizer.something]`)。
仅为特定的外部渲染器用清理规则,它们必使用渲染器名,例如 `[markup.sanitizer.asciidoc.rule-1]``[markup.sanitizer.<renderer>.rule-1]`
僅為特定的外部渲染器用清理規則,它们必使用渲染器名,例如 `[markup.sanitizer.asciidoc.rule-1]``[markup.sanitizer.<renderer>.rule-1]`
**注意**:如果规则在渲染器 ini 部分之前定义,或者名与渲染器不匹配,它将用于所有渲染器。
**注意**:如果規則在渲染器 ini 部分之前定义,或者名与渲染器不匹配,它将用于所有渲染器。
完成配置更改后,重新启动 Gitea 以使更改生效。
完成配置更改后,重新启动 Gitea 以使更改生效。
**注意**:在 Gitea 1.12 之前,存在一个名 `markup.sanitiser`个部分,其中的键被重新定义多个规则,但是,这种配置方法存在重大问题,需要通多个部分行配置。
**注意**:在 Gitea 1.12 之前,存在一个名 `markup.sanitiser`个部分,其中的键被重新定义多个規則,但是,这种配置方法存在重大问题,需要通多个部分行配置。
### 示例HTML
@@ -110,9 +110,9 @@ ELEMENT = a
ALLOW_ATTR = class
```
注意:此示例中的配置将允许渲染 HTML 文件,使用 `cat` 命令将文件内容输出 HTML。此外配置中的两个清理规则将允许 `<div>``<a>` 元素使用 `class` 属性。
注意:此示例中的配置将允许渲染 HTML 文件,使用 `cat` 命令将文件内容输出 HTML。此外配置中的两个清理規則将允许 `<div>``<a>` 元素使用 `class` 属性。
行配置更改后,重新启动 Gitea 以使更改生效。
行配置更改后,重新启动 Gitea 以使更改生效。
### 示例Office DOCX
@@ -128,7 +128,7 @@ RENDER_COMMAND = "pandoc --from docx --to html --self-contained --template /path
ALLOW_DATA_URI_IMAGES = true
```
在此示例中,配置将允许显示 Office DOCX 文件,使用 `pandoc` 命令将文件转换 HTML 格式。同时,清理规则中的 `ALLOW_DATA_URI_IMAGES` 设置 `true`,允许使用 Data URI 格式的图片。
在此示例中,配置将允许显示 Office DOCX 文件,使用 `pandoc` 命令将文件转换 HTML 格式。同时,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置 `true`,允许使用 Data URI 格式的图片。
模板文件的内容如下:
@@ -150,13 +150,13 @@ RENDER_COMMAND = "jupyter-nbconvert --stdin --stdout --to html --template basic"
ALLOW_DATA_URI_IMAGES = true
```
在此示例中,配置将允许显示 Jupyter Notebook 文件,使用 `nbconvert` 命令将文件转换 HTML 格式。同样,清理规则中的 `ALLOW_DATA_URI_IMAGES` 设置 `true`,允许使用 Data URI 格式的图片。
在此示例中,配置将允许显示 Jupyter Notebook 文件,使用 `nbconvert` 命令将文件转换 HTML 格式。同样,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置 `true`,允许使用 Data URI 格式的图片。
行配置更改后,重新启动 Gitea 以使更改生效。
行配置更改后,重新启动 Gitea 以使更改生效。
## 自定义 CSS
`.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,且由外部渲染器生成的 HTML 将被包装在一个带有 `markup``XXXXX` 类的 `<div>` 中。`markup` 类提供了预定义的样式(如果 `XXXXX``markdown`,则使用 `markdown` 类)。否则,您可以使用这些类来针对渲染的 HTML 内容行定制样式。
`.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,且由外部渲染器生成的 HTML 将被包装在一个带有 `markup``XXXXX` 类的 `<div>` 中。`markup` 类提供了预定义的样式(如果 `XXXXX``markdown`,则使用 `markdown` 类)。否则,您可以使用这些类来针对渲染的 HTML 内容行定制样式。
因此,您可以编写一些 CSS 样式:
@@ -185,10 +185,10 @@ ALLOW_DATA_URI_IMAGES = true
}
```
将您的样式表添加到自定义目中,例如 `custom/public/assets/css/my-style-XXXXX.css`使用自定义的头文件 `custom/templates/custom/header.tmpl` 行导入:
将您的样式表添加到自定义目中,例如 `custom/public/assets/css/my-style-XXXXX.css`使用自定义的头文件 `custom/templates/custom/header.tmpl` 行导入:
```html
<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/my-style-XXXXX.css" />
```
以上步骤,您可以将自定义的 CSS 样式用到特定的外部渲染器,使其具有所需的样式效果。
以上步骤,您可以将自定义的 CSS 样式用到特定的外部渲染器,使其具有所需的样式效果。

View File

@@ -9,11 +9,11 @@ aliases:
# 设置 Fail2ban
**Fail2ban 检查客户端登日志,将多次登失败的客户端识别为攻击者并在一段时间内阻止其访问服务。如果你的实例是公开的,这一点尤其重要。管理员仔细设置 fail2ban错误的配置将导致防火墙阻止你访问自己的服务器。**
**Fail2ban 检查客户端登日志,将多次登失败的客户端识别為攻擊者並在一段时间内阻止其访问服务。如果你的实例是公开的,这一点尤其重要。管理员仔细设置 fail2ban错误的配置将导致防火墙阻止你访问自己的服务器。**
Gitea 会在日志文件 `log/gitea.log` 中记录登失败的 CLI、SSH 或 HTTP 客户端 IP 地址,而你需要将 Gitea 的日志输出模式从默认的 `console` 更改 `file`。这表示将日志输出到文件,使得 fail2ban 可以定期描日志内容。
Gitea 会在日志文件 `log/gitea.log` 中记录登失败的 CLI、SSH 或 HTTP 客户端 IP 地址,而你需要将 Gitea 的日志输出模式从默认的 `console` 更改 `file`。这表示将日志输出到文件,使得 fail2ban 可以定期描日志内容。
用户的身份验证失败时,日志中会记录此类信息:
使用者的身份驗證失败时,日志中会记录此类信息:
```log
2018/04/26 18:15:54 [I] Failed authentication attempt for user from xxx.xxx.xxx.xxx
@@ -23,9 +23,9 @@ Gitea 会在日志文件 `log/gitea.log` 中记录登录失败的 CLI、SSH 或
2020/10/15 16:08:44 [E] invalid credentials from xxx.xxx.xxx.xxx
```
## 配置规则
## 配置規則
添加日志滤器规则到配置文件 `/etc/fail2ban/filter.d/gitea.conf`:
添加日志滤器規則到配置文件 `/etc/fail2ban/filter.d/gitea.conf`:
```ini
[Definition]
@@ -33,7 +33,7 @@ failregex = .*(Failed authentication attempt|invalid credentials|Attempted acce
ignoreregex =
```
添加监狱规则到配置文件 `/etc/fail2ban/jail.d/gitea.conf`:
添加监狱規則到配置文件 `/etc/fail2ban/jail.d/gitea.conf`:
```ini
[gitea]
@@ -46,9 +46,9 @@ bantime = 900
action = iptables-allports
```
如果你的 Gitea 实例运行在 Docker 容器中,且直接将容器端口暴露到外部网络,
需要添加 `chain="FORWARD"` 到监狱规则配置文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
以适 Docker 的网络转发规则。但如果你在容器的宿主机上使用 Nginx 反向代理连接到 Gitea 则需这样配置。
如果你的 Gitea 实例运行在 Docker 容器中,且直接将容器端口暴露到外部网络,
需要添加 `chain="FORWARD"` 到监狱規則配置文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
以适 Docker 的网络转发規則。但如果你在容器的宿主机上使用 Nginx 反向代理连接到 Gitea 则需这样配置。
```ini
[gitea-docker]
@@ -61,13 +61,13 @@ bantime = 900
action = iptables-allports[chain="FORWARD"]
```
最后,运行 `systemctl restart fail2ban` 即可用更改。在,你可以使用 `systemctl status fail2ban` 检查 fail2ban 运行状态。
最后,运行 `systemctl restart fail2ban` 即可用更改。在,你可以使用 `systemctl status fail2ban` 检查 fail2ban 运行状态。
上述规则规定客户端在 1 小时内,如果登失败的次数达到 10 次,则通 iptables 锁定客户端 IP 地址 15 分钟。
上述規則规定客户端在 1 小时内,如果登失败的次数达到 10 次,则通 iptables 锁定客户端 IP 地址 15 分钟。
## 设置反向代理
如果你使用 Nginx 反向代理到 Gitea 实例,你需要设置 Nginx 的 HTTP 头部值 `X-Real-IP` 将真实的客户端 IP 地址传递给 Gitea。否则 Gitea 程序会将客户端地址错误解析反向代理服务器的地址,例如回环地址 `127.0.0.1`
如果你使用 Nginx 反向代理到 Gitea 实例,你需要设置 Nginx 的 HTTP 头部值 `X-Real-IP` 将真实的客户端 IP 地址传递给 Gitea。否则 Gitea 程序会将客户端地址错误解析反向代理服务器的地址,例如回环地址 `127.0.0.1`
```
proxy_set_header X-Real-IP $remote_addr;
@@ -80,7 +80,7 @@ REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.0/8,::1/128
```
`REVERSE_PROXY_LIMIT` 限制反向代理服务器的层数,设置 `0` 表示不使用这些标头。
`REVERSE_PROXY_LIMIT` 限制反向代理服务器的层数,设置 `0` 表示不使用这些标头。
`REVERSE_PROXY_TRUSTED_PROXIES` 表示受信任的反向代理服务器网络地址,
过该网络地址转发来的流量会经解析 `X-Real-IP` 头部得到真实客户端地址。
過該网络地址转发来的流量会经解析 `X-Real-IP` 头部得到真实客户端地址。
(参考 [configuration cheat sheet](../administration/config-cheat-sheet.md#安全性)

View File

@@ -13,12 +13,12 @@ aliases:
```ini
[server]
; 启用 git-lfs 支持。true 或 false默认 false。
; 启用 git-lfs 支持。true 或 false默认 false。
LFS_START_SERVER = true
[lfs]
; 存放 LFS 文件的路径,默认 data/lfs。
; 存放 LFS 文件的路径,默认 data/lfs。
PATH = /home/gitea/data/lfs
```
**注意**LFS 服务器支持需要服务器上安 Git v2.1.2 以上版本。
**注意**LFS 服务器支持需要服务器上安 Git v2.1.2 以上版本。

View File

@@ -10,11 +10,11 @@ sidebar_position: 12
## 使用内置服务器
在启用HTTPS之前确保您拥有有效的SSL/TLS证书。
建议在测试和评估情况下使用自签名证书,运行 `gitea cert --host [HOST]` 以生成自签名证书
建议在测试和评估情况下使用自签名证书,运行 `gitea cert --host [HOST]` 以生成自签名证书
如果您在服务器上使用阿帕奇Apache或Nginx建议参考 [反向代理指南](reverse-proxies.md)。
要使用Gitea内置HTTPS支持您必编辑`app.ini`文件。
要使用Gitea内置HTTPS支持您必编辑`app.ini`文件。
```ini
[server]
@@ -25,13 +25,13 @@ CERT_FILE = cert.pem
KEY_FILE = key.pem
```
注意,如果您的证书由第三方证书颁发机构签名(即不是自签名的),则 cert.pem 包含证书链。服务器证书必是 cert.pem 中的第一个条目,后跟中介(如果有)。不必包含根证书,因连接客户端必已经拥有根证书才能建立信任关系。要了解有关配置值的更多信息,查看 [配置备忘](../administration/config-cheat-sheet#server-server)。
注意,如果您的证书由第三方证书颁发机构签名(即不是自签名的),则 cert.pem 包含证书链。服务器证书必是 cert.pem 中的第一个条目,后跟中介(如果有)。不必包含根证书,因连接客户端必已经拥有根证书才能建立信任关系。要了解有关配置值的更多信息,查看 [配置备忘](../administration/config-cheat-sheet#server-server)。
对于“CERT_FILE”或“KEY_FILE”字段当文件路径是相对路径时文件路径相对于“GITEA_CUSTOM”环境变量。它也可以是绝对路径。
對於“CERT_FILE”或“KEY_FILE”字段当文件路径是相对路径时文件路径相對於“GITEA_CUSTOM”环境变量。它也可以是绝对路径。
### 设置HTTP重定向
Gitea服务器支持监听一个端口要重定向HTTP求致HTTPS端口您需要启用HTTP重定向服务
Gitea服务器支持监听一个端口要重定向HTTP求致HTTPS端口您需要启用HTTP重定向服务
```ini
[server]
@@ -44,7 +44,7 @@ PORT_TO_REDIRECT = 3080
## 使用 ACME (默认: Let's Encrypt)
[ACME](https://tools.ietf.org/html/rfc8555) 是一种证书颁发机构标准协议,允许您自动求和续订 SSL/TLS 证书。[Let`s Encrypt](https://letsencrypt.org/) 是使用此标准的免费公开信任的证书颁发机构服务器。实施“HTTP-01”和“TLS-ALPN-01”挑战。了使 ACME 质询通过并验证您的域所有权“80”端口“HTTP-01”或“443”端口“TLS-ALPN-01”上 gitea 域的外部流量必由 gitea 实例提供服务。可能需要设置 [HTTP 重定向](#设置http重定向) 和端口转发才能正确路由外部流量。否则到端口“80”的正常流量将自动重定向到 HTTPS。**您必同意**ACME提供商的服务条款默认Let's Encrypt的 [服务条款](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
[ACME](https://tools.ietf.org/html/rfc8555) 是一种证书颁发机构标准协议,允许您自动求和续订 SSL/TLS 证书。[Let`s Encrypt](https://letsencrypt.org/) 是使用此标准的免费公开信任的证书颁发机构服务器。实施“HTTP-01”和“TLS-ALPN-01”挑战。了使 ACME 质询通過並驗證您的域所有权“80”端口“HTTP-01”或“443”端口“TLS-ALPN-01”上 gitea 域的外部流量必由 gitea 实例提供服务。可能需要设置 [HTTP 重定向](#设置http重定向) 和端口转发才能正确路由外部流量。否则到端口“80”的正常流量将自动重定向到 HTTPS。**您必同意**ACME提供商的服务条款默认Let's Encrypt的 [服务条款](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
使用默认 Let's Encrypt 的最小配置如下:
@@ -59,7 +59,7 @@ ACME_DIRECTORY=https
ACME_EMAIL=email@example.com
```
小型配置使用 [smallstep CA](https://github.com/smallstep/certificates), 点击 [教程](https://smallstep.com/docs/tutorials/acme-challenge) 了解更多信息。
小型配置使用 [smallstep CA](https://github.com/smallstep/certificates), 點擊 [教程](https://smallstep.com/docs/tutorials/acme-challenge) 了解更多信息。
```ini
[server]
@@ -74,11 +74,11 @@ ACME_DIRECTORY=https
ACME_EMAIL=email@example.com
```
要了解关于配置, 访问 [配置备忘](../administration/config-cheat-sheet.md#server-server)获取更多信息
要了解关于配置, 访问 [配置备忘](../administration/config-cheat-sheet.md#server-server)获取更多信息
## 使用反向代理服务器
按照 [reverse proxy guide](reverse-proxies.md) 的规则设置你的反向代理服务器
按照 [reverse proxy guide](reverse-proxies.md) 的規則设置你的反向代理服务器
然后,按照下面的向导启用 HTTPS
@@ -86,4 +86,4 @@ ACME_EMAIL=email@example.com
- [apache2/httpd](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
- [caddy](https://caddyserver.com/docs/tls)
注意:在代理层启用 HTTPS 被称为 [TLS 终止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服务器接受传入的 TLS 连接,解密内容,然后将在未加密的内容传递给 Gitea。只要代理和 Gitea 实例在同一台计算机上或在私有网络中的不同计算机上(代理暴露给外部网络),这通常是可以接受的。如果您的 Gitea 实例与代理隔离在公共网络上,或者如果您想要全端到端的加密,您可以直接在 Gitea 中 [启用内置服务器的 HTTPS 支持](#使用内置服务器)将连接转发到 HTTPS 上。
注意:在代理层启用 HTTPS 被稱為 [TLS 终止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服务器接受传入的 TLS 连接,解密内容,然后将在未加密的内容传递给 Gitea。只要代理和 Gitea 实例在同一台计算机上或在私有网络中的不同计算机上(代理暴露给外部网络),这通常是可以接受的。如果您的 Gitea 实例与代理隔离在公共网络上,或者如果您想要全端到端的加密,您可以直接在 Gitea 中 [启用内置服务器的 HTTPS 支持](#使用内置服务器)将连接转发到 HTTPS 上。

View File

@@ -8,17 +8,17 @@ aliases:
# 日志配置
Gitea 的日志配置主要由以下三种型的组件组成:
Gitea 的日志配置主要由以下三种型的组件组成:
- `[log]` 部分用于一般配置
- `[log.<mode-name>]` 部分用于配置不同的日志输出方式,也称为 "writer mode",模式名同时也作 "writer name"
- `[log]` 部分可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日志记录器的配置
- `[log.<mode-name>]` 部分用于配置不同的日志输出方式,也稱為 "writer mode",模式名同时也作 "writer name"
- `[log]` 部分可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日志记录器的配置
默认情况下,已经有一个完全功能的日志输出,因此不需要重新定义。
## 收集日志以获取帮助
要收集日志以获取帮助和报告问题,参阅 [需要帮助](help/support.md)。
要收集日志以获取帮助和报告问题,参阅 [需要帮助](help/support.md)。
## `[log]` 部分
@@ -28,16 +28,16 @@ Gitea 的日志配置主要由以下三种类型的组件组成:
- `ROOT_PATH`:(默认值:**%(GITEA_WORK_DIR)/log**):日志文件的基本路径。
- `MODE`:(默认值:**console**):要用于默认日志记录器的日志输出列表。
- `LEVEL`:(默认值:**Info**):要持久化的最严重的日志事件,不区分大小写。可能的值`Trace``Debug``Info``Warn``Error``Fatal`
- `STACKTRACE_LEVEL`:(默认值:**None**对于此类及更严重的事件,将在记录时打印堆栈跟踪。
- `LEVEL`:(默认值:**Info**):要持久化的最严重的日志事件,不区分大小写。可能的值`Trace``Debug``Info``Warn``Error``Fatal`
- `STACKTRACE_LEVEL`:(默认值:**None**對於此类及更严重的事件,将在记录时打印堆栈跟踪。
可以包含以下子日志记录器:
可以包含以下子日志记录器:
- `logger.router.MODE`:(默认值:**,**):用于路由器日志记录器的日志输出列表。
- `logger.access.MODE`:(默认值:**_empty_**):用于访问日志记录器的日志输出列表。默认情况下,访问日志记录器被禁用。
- `logger.xorm.MODE`:(默认值:**,**):用于 XORM 日志记录器的日志输出列表。
将子日志记录器的模式设置逗号(`,`)表示使用默认的全局 `MODE`
将子日志记录器的模式设置逗号(`,`)表示使用默认的全局 `MODE`
## 快速示例
@@ -55,7 +55,7 @@ logger.router.MODE = ,
logger.xorm.MODE = ,
logger.access.MODE =
; 这是“控制台”模式的配置项(由上面的 MODE=console 使用)
; 这是“控制台”模式的配置项(由上面的 MODE=console 使用)
[log.console]
MODE = console
FLAGS = stdflags
@@ -63,11 +63,11 @@ PREFIX =
COLORIZE = true
```
这等同于将所有日志发送到控制台,将默认的 Golang 日志也发送到控制台日志中。
这等同于将所有日志发送到控制台,将默认的 Golang 日志也发送到控制台日志中。
这只是一个示例,默认情况下不需要将其写入配置文件中。
### 禁用路由日志将一些访问日志记录到文件中
### 禁用路由日志将一些访问日志记录到文件中
禁用路由日志,将访问日志(>=Warn记录到 `access.log` 中:
@@ -82,7 +82,7 @@ LEVEL = Warn
FILE_NAME = access.log
```
### 不同的模式设置不同的日志级别
### 不同的模式设置不同的日志级别
将默认日志(>=Warn记录到 `gitea.log` 中,将错误日志记录到 `file-error.log` 中:
@@ -111,29 +111,29 @@ Gitea 提供以下日志写入器:
某些配置适用于所有日志输出模式:
- `MODE` 是日志输出写入器的模式。它将默认 ini 部分的模式名。因此,`[log.console]` 将默认 `MODE = console`
- `MODE` 是日志输出写入器的模式。它将默认 ini 部分的模式名。因此,`[log.console]` 将默认 `MODE = console`
- `LEVEL` 是此输出将记录的最低日志级别。
- `STACKTRACE_LEVEL` 是此输出将打印堆栈跟踪的最低日志级别。
- `COLORIZE` 对于 `console`,默认 `true`,否则默认 `false`
- `COLORIZE` 對於 `console`,默认 `true`,否则默认 `false`
#### `EXPRESSION`
`EXPRESSION` 表示日志事件必匹配才能被输出写入器记录的正则表达式。
日志消息(去除颜色)或 `longfilename:linenumber:functionname`匹配其中之一。
`EXPRESSION` 表示日志事件必匹配才能被输出写入器记录的正则表达式。
日志消息(去除颜色)或 `longfilename:linenumber:functionname`匹配其中之一。
注意:整个消息或字符串不需要完全匹配。
注意,此表达式将在写入器的 goroutine 中运行,而不是在日志事件的 goroutine 中运行。
注意,此表达式将在写入器的 goroutine 中运行,而不是在日志事件的 goroutine 中运行。
#### `FLAGS`
`FLAGS` 表示在每条消息之前打印的前置日志上下文信息。
它是一个逗号分隔的字符串集。值的顺序关紧要。
它是一个逗号分隔的字符串集。值的顺序关紧要。
默认值 `stdflags`= `date,time,medfile,shortfuncname,levelinitial`)。
默认值 `stdflags`= `date,time,medfile,shortfuncname,levelinitial`)。
可能的值
可能的值
- `none``,` - 标志。
- `none``,` - 标志。
- `date` - 当地时区的日期:`2009/01/23`
- `time` - 当地时区的时间:`01:23:23`
- `microseconds` - 微秒精度:`01:23:23.123123`。假定有时间。
@@ -150,13 +150,13 @@ Gitea 提供以下日志写入器:
### Console 模式
在此模式下,日志记录器将将日志消息转发到 Gitea 程附加的 stdout 和 stderr 流。
在此模式下,日志记录器将将日志消息转发到 Gitea 程附加的 stdout 和 stderr 流。
对于 console 模式的日志记录器,如果不在 Windows 上,或者 Windows 终端可以设置 ANSI 模式,或者是 cygwin 或 Msys 管道,则 `COLORIZE` 默认 `true`
對於 console 模式的日志记录器,如果不在 Windows 上,或者 Windows 终端可以设置 ANSI 模式,或者是 cygwin 或 Msys 管道,则 `COLORIZE` 默认 `true`
设置:
- `STDERR`**false**:日志记录器是否将日志打印到 `stderr` 而不是 `stdout`
- `STDERR`**false**:日志记录器是否将日志打印到 `stderr` 而不是 `stdout`
### File 模式
@@ -164,100 +164,100 @@ Gitea 提供以下日志写入器:
设置:
- `FILE_NAME`:要将日志事件写入的文件,相对于 `ROOT_PATH`,默认 `%(ROOT_PATH)/gitea.log`。异常情况:访问日志默认 `%(ROOT_PATH)/access.log`
- `MAX_SIZE_SHIFT`**28**个文件的最大大小位移。28 表示 256Mb。详细信息见下文。
- `FILE_NAME`:要将日志事件写入的文件,相對於 `ROOT_PATH`,默认 `%(ROOT_PATH)/gitea.log`。异常情况:访问日志默认 `%(ROOT_PATH)/access.log`
- `MAX_SIZE_SHIFT`**28**个文件的最大大小位移。28 表示 256Mb。详细信息见下文。
- `LOG_ROTATE` **true**:是否轮转日志文件。
- `DAILY_ROTATE`**true**:是否每天旋转日志。
- `MAX_DAYS`**7**:在此天数之后删除旋转的日志文件。
- `COMPRESS`**true**:默认情况下是否使用 gzip 压缩旧的日志文件。
- `COMPRESSION_LEVEL`**-1**:压缩级别。详细信息见下文。
`MAX_SIZE_SHIFT`将给定次数左移 1 (`1 << x`) 来定义文件的最大大小。
在 v1.17.3 版本时的确切行可以在[这里](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`MAX_SIZE_SHIFT`将给定次数左移 1 (`1 << x`) 来定义文件的最大大小。
在 v1.17.3 版本时的确切行可以在[这里](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`COMPRESSION_LEVEL` 的有用值范围从 1 到包括9其中较高的数字表示更好的压缩。
注意,更好的压缩可能会带来更高的资源使用。
在前面加上 `-` 符号。
注意,更好的压缩可能会带来更高的资源使用。
在前面加上 `-` 符号。
### Conn 模式
在此模式下,日志记录器将通网络套接字发送日志消息。
在此模式下,日志记录器将通网络套接字发送日志消息。
设置:
- `ADDR`**:7020**:设置要连接的地址。
- `PROTOCOL`**tcp**:设置协议,可以是 "tcp"、"unix" 或 "udp"。
- `RECONNECT`**false**:在连接丢失时尝试重新连接。
- `RECONNECT_ON_MSG`**false**每条消息重新连接主机。
- `RECONNECT_ON_MSG`**false**每条消息重新连接主机。
### "Router" 日志记录器
当 Gitea 的路由处理程序工作时Router 日志记录器记录以下消息型:
当 Gitea 的路由处理程序工作时Router 日志记录器记录以下消息型:
- `started` 消息将以 TRACE 级别记录
- `polling`/`completed` 路由将以 INFO 级别记录。异常情况:"/assets" 静态资源求也会以 TRACE 级别记录。
- `polling`/`completed` 路由将以 INFO 级别记录。异常情况:"/assets" 静态资源求也会以 TRACE 级别记录。
- `slow` 路由将以 WARN 级别记录
- `failed` 路由将以 WARN 级别记录
### "XORM" 日志记录器
了使 XORM 输出 SQL 日志,还应`[database]` 部分中的 `LOG_SQL` 设置 `true`
了使 XORM 输出 SQL 日志,還應`[database]` 部分中的 `LOG_SQL` 设置 `true`
### "Access" 日志记录器
"Access" 日志记录器是自 Gitea 1.9 版本以来的新日志记录器。它提供了符合 NCSA Common Log 标准的日志格式。虽然它具有高度可配置性,但在更改其模板时谨慎。此日志记录器的主要好处是Gitea 在可以使用标准日志格式记录访问日志,因此可以使用标准工具行分析。
"Access" 日志记录器是自 Gitea 1.9 版本以来的新日志记录器。它提供了符合 NCSA Common Log 标准的日志格式。虽然它具有高度可配置性,但在更改其模板时谨慎。此日志记录器的主要好处是Gitea 在可以使用标准日志格式记录访问日志,因此可以使用标准工具行分析。
您可以通使用 `logger.access.MODE = ...` 来启用此日志记录器。
您可以通使用 `logger.access.MODE = ...` 来启用此日志记录器。
如果需要,可以通更改 `ACCESS_LOG_TEMPLATE` 的值来更改 "Access" 日志记录器的格式。
如果需要,可以通更改 `ACCESS_LOG_TEMPLATE` 的值来更改 "Access" 日志记录器的格式。
注意,访问日志记录器将以 `INFO` 级别记录,将此日志记录器的 `LEVEL` 设置 `WARN` 或更高级别将导致不记录访问日志。
注意,访问日志记录器将以 `INFO` 级别记录,将此日志记录器的 `LEVEL` 设置 `WARN` 或更高级别将导致不记录访问日志。
#### ACCESS_LOG_TEMPLATE
此值表示一个 Go 模板。其默认值
此值表示一个 Go 模板。其默认值
```tmpl
{{.Ctx.RemoteHost}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.URL.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}" "{{.Ctx.Req.UserAgent}}"`
```
模板接收以下项:
模板接收以下项:
- `Ctx``context.Context`
- `Identity``SignedUserName`,如果用户未登,则 "-"
- `Start`求的开始时间
- `Identity``SignedUserName`,如果使用者未登,则 "-"
- `Start`求的开始时间
- `ResponseWriter``http.ResponseWriter`
更改此模板时必小心,因它在标准的 panic 恢复陷阱之外运行。此模板应该尽可能简,因它会每个求运行一次。
更改此模板时必小心,因它在标准的 panic 恢复陷阱之外运行。此模板應該尽可能简,因它会每个求运行一次。
## 释放和重新打开、暂停和恢复日志记录
如果您在 Unix 上运行,您可能希望释放和重新打开日志以使用 `logrotate` 或其他工具。
可以通向运行中的程发送 `SIGUSR1` 信号或运行 `gitea manager logging release-and-reopen` 命令来强制 Gitea 释放重新打开其日志文件和连接。
可以通向运行中的程发送 `SIGUSR1` 信号或运行 `gitea manager logging release-and-reopen` 命令来强制 Gitea 释放重新打开其日志文件和连接。
或者,您可能希望暂停和恢复日志记录 - 可以通使用 `gitea manager logging pause``gitea manager logging resume` 命令来实现。请注意,当日志记录暂停时,低于 INFO 级别的日志事件将不会存储,并且只会存有限数量的事件。在暂停时,日志记录可能会阻塞,尽管是暂时性的,但会大大减慢 Gitea 的运行速度,因此建议暂停很短的时间。
或者,您可能希望暂停和恢复日志记录 - 可以通使用 `gitea manager logging pause``gitea manager logging resume` 命令来实現。請注意,当日志记录暂停时,低于 INFO 级别的日志事件将不会存儲,並且只会存有限数量的事件。在暂停时,日志记录可能会阻塞,尽管是暂时性的,但会大大减慢 Gitea 的运行速度,因此建议暂停很短的时间。
### 在 Gitea 运行时添加和删除日志记录
可以使用 `gitea manager logging add``remove` 子命令在 Gitea 运行时添加和删除日志记录。
此功能只能调整正在运行的日志系统,不能用于启动未初始化的访问或路由日志记录器。如果您希望启动这些系统,建议调整 app.ini (优雅地)重新启动 Gitea 服务。
此功能只能调整正在运行的日志系统,不能用于启动未初始化的访问或路由日志记录器。如果您希望启动这些系统,建议调整 app.ini (优雅地)重新启动 Gitea 服务。
这些命令的主要目的是在运行中的系统上轻松添加临时日志记录器,以便调查问题,因重新启动可能会导致问题消失。
这些命令的主要目的是在运行中的系统上轻松添加临时日志记录器,以便调查问题,因重新启动可能会导致问题消失。
## 使用 `logrotate` 而不是内置的日志轮转
Gitea 包含内置的日志轮转功能,对于大多数部署来说应该已经足够了。但是,如果您想使用 `logrotate` 工具:
Gitea 包含内置的日志轮转功能,對於大多数部署来说應該已经足够了。但是,如果您想使用 `logrotate` 工具:
-`app.ini` 中将 `LOG_ROTATE` 设置 `false`,禁用内置的日志轮转。
- `logrotate`
- 根据部署要求配置 `logrotate`,有关配置语法细节,参阅 `man 8 logrotate`
`postrotate/endscript` 块中通 `kill -USR1``kill -10``gitea` 程本身发送 `USR1` 信号,
-`app.ini` 中将 `LOG_ROTATE` 设置 `false`,禁用内置的日志轮转。
- `logrotate`
- 根据部署要求配置 `logrotate`,有关配置语法细节,参阅 `man 8 logrotate`
`postrotate/endscript` 块中通 `kill -USR1``kill -10``gitea` 程本身发送 `USR1` 信号,
或者运行 `gitea manager logging release-and-reopen`(使用适当的环境设置)。
确保配置适用于由 Gitea 日志记录器生成的所有文件,如上述部分所述。
- 始终使用 `logrotate /etc/logrotate.conf --debug` 来测试您的配置。
- 如果您正在使用 Docker 从容器外部运行,您可以使用
- 如果您正在使用 Docker 从容器外部运行,您可以使用
`docker exec -u $OS_USER $CONTAINER_NAME sh -c 'gitea manager logging release-and-reopen'`
`docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 程本身发送 `USR1` 信号。
`docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 程本身发送 `USR1` 信号。
下一个 `logrotate` 作业将包括您的配置,因此不需要重新启动。
可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加载 `logrotate`
可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加载 `logrotate`

View File

@@ -8,8 +8,8 @@ aliases:
# 邮件模板
了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案Gitea 将使用内部模板作默认模板。
了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案Gitea 将使用内部模板作默认模板。
自定义模板在 Gitea 启动时加载。对它们的更改在 Gitea 重新启动之前不会被识别。
@@ -17,42 +17,42 @@ aliases:
目前,以下通知事件使用模板:
| 操作名 | 用途 |
| 操作名 | 用途 |
| ---------- | ---------------------------------------------------------------------- |
| `new` | 建了新的工或合并请求。 |
| `comment` | 在有工或合并请求中创建了新的评论。 |
| `close` | 关闭了工或合并请求。 |
| `reopen` | 重新打开了工或合并请求。 |
| `review` | 在合并请求中行审查的首要评论。 |
| `approve` | 对合并请求进行批准的首要评论。 |
| `reject` | 对合并请求提出更改求的审查的首要评论。 |
| `code` | 关于合并请求的代码的个评论。 |
| `assigned` | 用户被分配到工或合并请求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对类别的模板不存在时使用的模板。 |
| `new` | 建了新的工或合並請求。 |
| `comment` | 在有工或合並請求中建立了新的评论。 |
| `close` | 关闭了工或合並請求。 |
| `reopen` | 重新打开了工或合並請求。 |
| `review` | 在合並請求中行审查的首要评论。 |
| `approve` | 对合並請求進行批准的首要评论。 |
| `reject` | 对合並請求提出更改求的审查的首要评论。 |
| `code` | 关于合並請求的代码的个评论。 |
| `assigned` | 使用者被分配到工或合並請求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对类别的模板不存在时使用的模板。 |
特定消息型的模板路径
特定消息型的模板路径
```sh
custom/templates/mail/{操作}/{操作名}.tmpl
custom/templates/mail/{操作}/{操作名}.tmpl
```
其中 `{操作型}``issue``pull`(针对合并请求),`{操作名}` 是上述列出的操作名之一。
其中 `{操作型}``issue``pull`(针对合並請求),`{操作名}` 是上述列出的操作名之一。
例如,有关合并请求中的评论的电子邮件的特定模板是:
例如,有关合並請求中的评论的电子邮件的特定模板是:
```sh
custom/templates/mail/pull/comment.tmpl
```
然而,不需要每个操作型/名组合建模板。
使用回退系统来择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
然而,不需要每个操作型/名组合建模板。
使用回退系统来择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
- 所需**操作型**和**操作名**的特定模板。
- 操作类型为 `issue` 和所需**操作名**的模板。
- 所需**操作型**和操作名称为 `default` 的模板。
- 操作类型为` issue` 和操作名称为 `default` 的模板。
- 所需**操作型**和**操作名**的特定模板。
- 操作類型為 `issue` 和所需**操作名**的模板。
- 所需**操作型**和操作名稱為 `default` 的模板。
- 操作類型為` issue` 和操作名稱為 `default` 的模板。
唯一必需的模板是操作类型为 `issue` 操作名称为 `default` 的模板,除非用户`custom`中覆盖了它。
唯一必需的模板是操作類型為 `issue` 操作名稱為 `default` 的模板,除非使用者`custom`中覆盖了它。
## 模板语法
@@ -70,44 +70,44 @@ custom/templates/mail/pull/comment.tmpl
用于邮件正文的文本和宏
```
指定 _主题_ 部分是可因此也是虚线分隔符。在使用时_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
指定 _主题_ 部分是可因此也是虚线分隔符。在使用时_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
_主题__邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,提供了每个通知组装的 _元数据上下文_。上下文包含以下元素:
_主题__邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,提供了每个通知组装的 _元数据上下文_。上下文包含以下元素:
| 名 | 型 | 可用性 | 用途 |
| 名 | 型 | 可用性 | 用途 |
| ------------------ | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.FallbackSubject` | string | 始终可用 | 默认主题行。参见下文。 |
| `.Subject` | string | 在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工、合并请求或评论的消息,从 Markdown 解析 HTML 并进行了清理。勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工、合并请求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工(或合并请求)。要获取特定于合并请求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工 _不是_并请求,则字段将 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工或合并请求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合并请求关联(即 `.Issue.PullRequest` `nil` ),则 `true`。 |
| `.Repo` | string | 始终可用 | 仓库的名,包括所有者名(例如 `mike/stuff` |
| `.User` | models.User | 始终可用 | 事件来源仓库的所有者。要获取用户名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 行触发通知事件的操作的用户。要获取用户名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知是因在评论中提到了用户而生成的,且收件人未订阅源,则 `true`。如果收件人已订阅工单或仓库,则 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工或合并请求创建之外的其他内容,则 `Re`;否则空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"``"pull"`。它将与实际的 _操作_,与择的模板关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作型之一(`new` `comment` 等),并与选择的模板对。 |
| `.Subject` | string | 在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工、合並請求或评论的消息,从 Markdown 解析 HTML 並進行了清理。勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工、合並請求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工(或合並請求)。要获取特定于合並請求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工 _不是_並請求,则字段将 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工或合並請求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合並請求关联(即 `.Issue.PullRequest` `nil` ),则 `true`。 |
| `.Repo` | string | 始终可用 | 存放庫的名,包括所有者名(例如 `mike/stuff` |
| `.User` | models.User | 始终可用 | 事件来源存放庫的所有者。要获取使用者名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 行触发通知事件的操作的使用者。要获取使用者名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知是因在评论中提到了使用者而生成的,且收件人未订阅源,则 `true`。如果收件人已订阅工單或存放庫,则 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工或合並請求建立之外的其他内容,则 `Re`;否则空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"``"pull"`。它将与实际的 _操作_,与择的模板关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作型之一(`new` `comment` 等),並与選择的模板对。 |
| `.ReviewComments` | []models.Comment | 始终可用 | 审查中的代码评论列表。评论文本将在 `.RenderedContent` 中,引用的代码将在 `.Patch` 中。 |
所有名区分大小写。
所有名区分大小写。
### 模板中的主题部分
用于邮件主题的模板引擎是 Golang 的 [`text/template`](https://go.dev/pkg/text/template/)。
有关语法的详细信息,参阅链接的文
有关语法的详细信息,参阅链接的文
主题构建的步骤如下:
- 根据通知型和可用的模板择一个模板。
- 解析解析模板(例如,将 `{{.Issue.Index}}` 转换为工单或合并请求的编号)。
- 将所有空格字符(例如 `TAB``LF` 等)转换普通空格。
- 根据通知型和可用的模板择一个模板。
- 解析解析模板(例如,将 `{{.Issue.Index}}` 转换為工單或合並請求的编号)。
- 将所有空格字符(例如 `TAB``LF` 等)转换普通空格。
- 删除所有前导、尾随和多余的空格。
- 将字符串截断前 256 个字母(字符)。
- 将字符串截断前 256 个字母(字符)。
如果最终结果空字符串,**或者**没有可用的主题模板(即所模板不包含主题部分),将使用 Gitea 的**内部默认值**。
如果最终结果空字符串,**或者**没有可用的主题模板(即所模板不包含主题部分),将使用 Gitea 的**内部默认值**。
内部默认(回退)主题相当于:
@@ -117,29 +117,29 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
例如:`Re: [mike/stuff] New color palette (#38)`
即使存在有效的主题模板Gitea 的默认主题也可以在模板的元数据中作 `.FallbackSubject` 找到。
即使存在有效的主题模板Gitea 的默认主题也可以在模板的元数据中作 `.FallbackSubject` 找到。
### 模板中的邮件正文部分
用于邮件正文的模板引擎是 Golang 的 [`html/template`](https://go.dev/pkg/html/template/)。
有关语法的详细信息,参阅链接的文
有关语法的详细信息,参阅链接的文
邮件正文在邮件主题之后行解析,因此有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈的主题。
邮件正文在邮件主题之后行解析,因此有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈的主题。
期望的结果是 HTML包括结构元素`<html>``<body>`等)。可以通 `<style>` 块、`class``style` 属性行样式设置。但是,`html/template`行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
期望的结果是 HTML包括结构元素`<html>``<body>`等)。可以通 `<style>` 块、`class``style` 属性行样式设置。但是,`html/template`行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必放置在 `custom/mail` 下,并相对于该目录引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必放置在 `custom/mail` 下,並相對於該目錄引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通剥离 HTML 标记来获取文本版本。
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通剥离 HTML 标记来获取文本版本。
## 故障排除
邮件的呈方式直接取决于邮件用程序的功能。许多邮件客户端甚至不支持 HTML因此显示生成邮件中包含的文本版本。
邮件的呈方式直接取决于邮件用程序的功能。许多邮件客户端甚至不支持 HTML因此显示生成邮件中包含的文本版本。
如果模板法呈,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈了任何内容,则将使用内容,忽略其他内容。
如果模板法呈,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈了任何内容,则将使用内容,忽略其他内容。
如果遇到问题,检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
如果遇到问题,检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
## 示例
@@ -148,7 +148,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
```html
[{{.Repo}}] @{{.Doer.Name}}
{{if eq .ActionName "new"}}
建了
{{else if eq .ActionName "comment"}}
评论了
{{else if eq .ActionName "close"}}
@@ -159,9 +159,9 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
更新了
{{end}}
{{if eq .ActionType "issue"}}
{{else}}
并请
並請
{{end}}
#{{.Issue.Index}}: {{.Issue.Title}}
------------
@@ -175,7 +175,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
<body>
{{if .IsMention}}
<p>
您收到此邮件是因 @{{.Doer.Name}} 提到了您。
您收到此邮件是因 @{{.Doer.Name}} 提到了您。
</p>
{{end}}
<p>
@@ -185,7 +185,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
({{.Doer.FullName}})
{{end}}
{{if eq .ActionName "new"}}
建了
{{else if eq .ActionName "close"}}
关闭了
{{else if eq .ActionName "reopen"}}
@@ -209,11 +209,11 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
</html>
```
模板将生成以下内容:
模板将生成以下内容:
### 主题
> [mike/stuff] @rhonda 在合并请求 #38 上行了评论New color palette
> [mike/stuff] @rhonda 在合並請求 #38 上行了评论New color palette
### 邮件正文
@@ -231,18 +231,18 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
## 高级用法
模板系统包含一些函数,可用于一步处理和格式化消息。以下是其中一些函数的列表:
模板系统包含一些函数,可用于一步处理和格式化消息。以下是其中一些函数的列表:
| 函数名 | 参数 | 可用于 | 用法 |
| 函数名 | 參數 | 可用于 | 用法 |
| ---------------- | ----------- | ---------- | ------------------------------------------------ |
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常 "Gitea" |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常 "Gitea" |
| `AppDomain` | - | 任何地方 | Gitea 的主机名 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 正文部分 | 通删除其中的危险 HTML 标签对文本行清理 |
| `SafeHTML` | string | 正文部分 | 将输入作 HTML 处理;可用于输出原始的 HTML 内容 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 正文部分 | 通删除其中的危险 HTML 標籤对文本行清理 |
| `SafeHTML` | string | 正文部分 | 将输入作 HTML 处理;可用于输出原始的 HTML 内容 |
这些都是 _函数_,而不是元数据,因此必按以下方式使用:
这些都是 _函数_,而不是元数据,因此必按以下方式使用:
```html
像这样使用: {{SanitizeHTML "Escape<my

View File

@@ -6,11 +6,11 @@ aliases:
- /zh-tw/repo-indexer
---
# 仓库索引器
# 存放庫索引器
## 设置仓库索引器
## 设置存放庫索引器
在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中启用此功能Gitea 可以通过仓库的文件行搜索:
在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中启用此功能Gitea 可以通過存放庫的文件行搜索:
```ini
[indexer]
@@ -22,29 +22,29 @@ REPO_INDEXER_INCLUDE =
REPO_INDEXER_EXCLUDE = resources/bin/**
```
记住,索引内容可能会消耗大量系统资源,特别是在首次建索引或全局更新索引时(例如升级 Gitea 之后)。
记住,索引内容可能会消耗大量系统资源,特别是在首次建索引或全局更新索引时(例如升级 Gitea 之后)。
### 按大小择要索引的文件
### 按大小择要索引的文件
`MAX_FILE_SIZE` 项将使索引器跳所有大于指定值的文件。
`MAX_FILE_SIZE` 项将使索引器跳所有大于指定值的文件。
### 按路径择要索引的文件
### 按路径择要索引的文件
Gitea 使用 [`gobwas/glob` 库](https://github.com/gobwas/glob) 中的 glob 模式匹配来择要包含在索引中的文件。
Gitea 使用 [`gobwas/glob` 库](https://github.com/gobwas/glob) 中的 glob 模式匹配来择要包含在索引中的文件。
限制文件列表可以防止索引被派生或关的文件(例如 lss、sym、map 等)污染,从而使搜索结果更相关。这有助于减小索引的大小。
限制文件列表可以防止索引被派生或关的文件(例如 lss、sym、map 等)污染,从而使搜索结果更相关。这有助于减小索引的大小。
`REPO_INDEXER_EXCLUDE_VENDORED`(默认值 true将排除供商文件不包含在索引中。
`REPO_INDEXER_EXCLUDE_VENDORED`(默认值 true将排除供商文件不包含在索引中。
`REPO_INDEXER_INCLUDE`(默认值空)是一个逗号分隔的 glob 模式列表,用于在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`(默认值空)是一个逗号分隔的 glob 模式列表,用于从索引中**排除**的文件。与列表匹配的文件将不会被索引。`REPO_INDEXER_EXCLUDE` 优先于 `REPO_INDEXER_INCLUDE`
`REPO_INDEXER_INCLUDE`(默认值空)是一个逗号分隔的 glob 模式列表,用于在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`(默认值空)是一个逗号分隔的 glob 模式列表,用于从索引中**排除**的文件。与列表匹配的文件将不会被索引。`REPO_INDEXER_EXCLUDE` 优先于 `REPO_INDEXER_INCLUDE`
模式匹配工作方式如下:
- 要匹配所有带有 `.txt` 扩展名的文件,论在哪个目中,使用 `**.txt`
- 要匹配仅在仓库的根级别中具有 `.txt` 扩展名的所有文件,使用 `*.txt`
- 要匹配 `resources/bin`及其子目中的所有文件,使用 `resources/bin/**`
- 要匹配位于 `resources/bin`下的所有文件,使用 `resources/bin/*`
- 要匹配所有名 `Makefile` 的文件,使用 `**Makefile`
- 匹配目没有效果;模式 `resources/bin` 不会包含/排除该目录中的文件;`resources/bin/**` 会。
- 所有文件和模式都规范化小写,因此 `**Makefile``**makefile``**MAKEFILE` 是等效的。
- 要匹配所有带有 `.txt` 扩展名的文件,论在哪个目中,使用 `**.txt`
- 要匹配僅在存放庫的根级别中具有 `.txt` 扩展名的所有文件,使用 `*.txt`
- 要匹配 `resources/bin`及其子目中的所有文件,使用 `resources/bin/**`
- 要匹配位于 `resources/bin`下的所有文件,使用 `resources/bin/*`
- 要匹配所有名 `Makefile` 的文件,使用 `**Makefile`
- 匹配目没有效果;模式 `resources/bin` 不会包含/排除該目錄中的文件;`resources/bin/**` 会。
- 所有文件和模式都规范化小写,因此 `**Makefile``**makefile``**MAKEFILE` 是等效的。

View File

@@ -12,26 +12,26 @@ aliases:
1. 在您的 `app.ini` 文件中添加配置 `[server] ROOT_URL = https://git.example.com/`
2.`https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo`
3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`请求应该被传递给 `http://gitea:3000/a%2Fb`
3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`請求應該被传递给 `http://gitea:3000/a%2Fb`
4. 确保 `Host``X-Forwarded-Proto` 头被正确的传递给 Gitea使 Gitea 可以看到正在访问的真实 URL。
## 使用子路径
通常,**不推荐**将 Gitea 放到子路径。人们很少使用此配置,且在极少数情况下可能会出一些问题。
通常,**不推荐**将 Gitea 放到子路径。人们很少使用此配置,且在极少数情况下可能会出一些问题。
了让 Gitea 在子路径工作(例如:`https://common.example.com/gitea/`),需要在上面的通用配置之外行一些额外的配置:
了让 Gitea 在子路径工作(例如:`https://common.example.com/gitea/`),需要在上面的通用配置之外行一些额外的配置:
1.`app.ini` 文件中使用配置 `[server] ROOT_URL = https://common.example.com/gitea/`
2.`https://common.example.com/gitea/foo` 反向代理到 `http://gitea:3000/foo`
3. 容器映像注册表需要在根目级别有一个固定的子路径 `v2`,您必做下列配置:
3. 容器映像註冊表需要在根目级别有一个固定的子路径 `v2`,您必做下列配置:
-`https://common.example.com/v2` 反向代理到 `http://gitea:3000/v2`
- 确保 URI 和标头也被正确的传递(见上面的通用配置)
## 使用 Nginx 作反向代理服务
## 使用 Nginx 作反向代理服务
如果您想使用 Nginx 作 Gitea 的反向代理服务,您可以参照以下 `nginx.conf` 配置中 `server``http` 部分。
如果您想使用 Nginx 作 Gitea 的反向代理服务,您可以参照以下 `nginx.conf` 配置中 `server``http` 部分。
确保 `client_max_body_size` 足够大,否则在上传大文件时会出 "client_max_body_size" 错误。
确保 `client_max_body_size` 足够大,否则在上传大文件时会出 "client_max_body_size" 错误。
```nginx
server {
@@ -49,9 +49,9 @@ server {
}
```
## 使用 Nginx 作反向代理服务将 Gitea 路由至一个子路径
## 使用 Nginx 作反向代理服务将 Gitea 路由至一个子路径
如果您已经有一个域名且想与 Gitea 共享域名,您可以增加以下 `nginx.conf` 配置中 `server``http` 部分, Gitea 添加路由规则
如果您已经有一个域名且想与 Gitea 共享域名,您可以增加以下 `nginx.conf` 配置中 `server``http` 部分, Gitea 添加路由規則
```nginx
server {
@@ -64,7 +64,7 @@ server {
rewrite ^(/gitea)?(/.*) $2 break;
proxy_pass http://127.0.0.1:3000$uri;
# 其他的常规 HTTP 表头,见上面“使用 Nginx 作反向代理服务”小节的配置
# 其他的常规 HTTP 表头,见上面“使用 Nginx 作反向代理服务”小节的配置
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
@@ -75,27 +75,27 @@ server {
}
```
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
## 使用 Nginx 直接提供静态资源
我们可以通将资源分静态和动态两种型来调节性能。
我们可以通将资源分静态和动态两种型来调节性能。
CSS 文件、JavaScript 文件、图片和字是静态内容。首页、仓库视图和工列表是动态内容。
CSS 文件、JavaScript 文件、图片和字是静态内容。首页、存放庫视图和工列表是动态内容。
Nginx 可以直接提供静态资源,且只代理动态资源求给 Gitea。
Nginx 提供静态内容行了优化,而代理大响应可能与这一优化行相反。
Nginx 可以直接提供静态资源,且只代理动态资源求给 Gitea。
Nginx 提供静态内容行了优化,而代理大響應可能与这一优化行相反。
(见[https://serverfault.com/q/587386](https://serverfault.com/q/587386)
将 Gitea 源代码仓库的一个快照下载到 `/path/to/gitea`
在此之后,在本地仓库目录运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/`感兴趣,您可以删除剩下的其他目
了生成静态资源,您需要安一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`
将 Gitea 源代码存放庫的一个快照下载到 `/path/to/gitea`
在此之后,在本地存放庫目錄运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/`感兴趣,您可以删除剩下的其他目
了生成静态资源,您需要安一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`
取决于您的用户量的大小,您可以将流量分离到两个不同的服务器,或者静态资源配置一个 cdn。
取决于您的使用者量的大小,您可以将流量分离到两个不同的服务器,或者静态资源配置一个 cdn。
### 服务器节点,域名
### 服务器节点,域名
`[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件,配置 nginx
`[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件,配置 nginx
```nginx
server {
@@ -114,7 +114,7 @@ server {
### 双服务器节点,双域名
`[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 写入您的 Gitea 配置文件,配置 nginx
`[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 写入您的 Gitea 配置文件,配置 nginx
```nginx
# 运行 Gitea 的服务器
@@ -144,9 +144,9 @@ server {
}
```
## 使用 Apache HTTPD 作反向代理服务
## 使用 Apache HTTPD 作反向代理服务
如果您想使用 Apache HTTPD 作 Gitea 的反向代理服务,您可以您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf`下):
如果您想使用 Apache HTTPD 作 Gitea 的反向代理服务,您可以您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf`下):
```apacheconf
<VirtualHost *:80>
@@ -159,11 +159,11 @@ server {
</VirtualHost>
```
注:必启用以下 Apache HTTPD 组件:`proxy` `proxy_http`
注:必启用以下 Apache HTTPD 组件:`proxy` `proxy_http`
## 使用 Apache HTTPD 作反向代理服务将 Gitea 路由至一个子路径
## 使用 Apache HTTPD 作反向代理服务将 Gitea 路由至一个子路径
如果您已经有一个域名且想与 Gitea 共享域名,您可以增加以下配置 Gitea 添加路由规则(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf`下):
如果您已经有一个域名且想与 Gitea 共享域名,您可以增加以下配置 Gitea 添加路由規則(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf`下):
```
<VirtualHost *:80>
@@ -193,13 +193,13 @@ server {
</VirtualHost>
```
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
注:必启用以下 Apache HTTPD 组件:`proxy` `proxy_http`
注:必启用以下 Apache HTTPD 组件:`proxy` `proxy_http`
## 使用 Caddy 作反向代理服务
## 使用 Caddy 作反向代理服务
如果您想使用 Caddy 作 Gitea 的反向代理服务,您可以在 `Caddyfile` 中添加如下配置:
如果您想使用 Caddy 作 Gitea 的反向代理服务,您可以在 `Caddyfile` 中添加如下配置:
```
git.example.com {
@@ -207,9 +207,9 @@ git.example.com {
}
```
## 使用 Caddy 作反向代理服务将 Gitea 路由至一个子路径
## 使用 Caddy 作反向代理服务将 Gitea 路由至一个子路径
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 `Caddyfile` 文件中增加以下配置, Gitea 添加路由规则
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 `Caddyfile` 文件中增加以下配置, Gitea 添加路由規則
```
git.example.com {
@@ -220,23 +220,23 @@ git.example.com {
}
```
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。
## 使用 IIS 作反向代理服务
## 使用 IIS 作反向代理服务
如果您想使用 IIS 作 Gitea 的反向代理服务,你需要 IIS 设置 URL 重写来作反向代理。
如果您想使用 IIS 作 Gitea 的反向代理服务,你需要 IIS 设置 URL 重写来作反向代理。
1. 在 IIS 中设置一个空网页,比如命名 `Gitea Proxy`
2. 根据[微软社区中 IIS 设置 URL 重写的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前两步行配置,也就是:
1. 在 IIS 中设置一个空网页,比如命名 `Gitea Proxy`
2. 根据[微软社区中 IIS 设置 URL 重写的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前两步行配置,也就是:
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安 Application Request Routing ARR或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件。
- 一但这个模被安到 IIS 上,你将会在 IIS 管理控制台看到一个叫做 URL Rewrite 的新图标。
- 打开 IIS 管理控制台,在左边的列表中点击 `Gitea Proxy` 网页。在中间选中并且双 URL Rewrite 的图标来加载 URL 重写的面板。
- 在管理控制台的右边`Add Rule` 操作,且在 `Inbound and Outbound Rules` 分类中`Reverse Proxy Rule`
- 在 Inbound Rules 中, 将 server name 设置 Gitea 正在运行的主机以及对端口。例如,如果你在 localhost 的 3000 端口上运行 Gitea则设置 `127.0.0.1:3000`
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安 Application Request Routing ARR或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件。
- 一但这个模被安到 IIS 上,你将会在 IIS 管理控制台看到一个叫做 URL Rewrite 的新图标。
- 打开 IIS 管理控制台,在左边的列表中點擊 `Gitea Proxy` 网页。在中间選中並且双 URL Rewrite 的图标来加载 URL 重写的面板。
- 在管理控制台的右边`Add Rule` 操作,且在 `Inbound and Outbound Rules` 分类中`Reverse Proxy Rule`
- 在 Inbound Rules 中, 将 server name 设置 Gitea 正在运行的主机以及对端口。例如,如果你在 localhost 的 3000 端口上运行 Gitea则设置 `127.0.0.1:3000`
- 启用 SSL Offloading
- 在 Outbound Rules 中,确保设置了 `Rewrite the domain names of the links in HTTP response`且将 `From:` 设置上面的 server name`To:` 设置你的外部访问名,例如:`git.example.com`
- 在,根据下面的内容您的网页编辑 `web.config`(将 `127.0.0.1:3000``git.example.com`适当的值)
- 在 Outbound Rules 中,确保设置了 `Rewrite the domain names of the links in HTTP response`且将 `From:` 设置上面的 server name`To:` 设置你的外部访问名,例如:`git.example.com`
- 在,根据下面的内容您的网页编辑 `web.config`(将 `127.0.0.1:3000``git.example.com`适当的值)
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -305,11 +305,11 @@ git.example.com {
</configuration>
```
## 使用 HAProxy 作反向代理服务
## 使用 HAProxy 作反向代理服务
如果您想使用 HAProxy 作 Gitea 的反向代理服务,您可以将下面的内容加入您的 HAProxy 配置。
如果您想使用 HAProxy 作 Gitea 的反向代理服务,您可以将下面的内容加入您的 HAProxy 配置。
在 frontend 部分加入一个 acl 来将对 gitea.example.com 的求重定向到正确的后端。
在 frontend 部分加入一个 acl 来将对 gitea.example.com 的求重定向到正确的后端。
```
frontend http-in
@@ -328,9 +328,9 @@ backend gitea
如果您将 http 内容重定向到 https上面的配置文件也能够使用。只需要记住在 HAProxy 和 Gitea 之间的连接将由 http 完成,所以你不需要在 Gitea 的配置文件中启用 https。
## 使用 HAProxy 作反向代理服务将 Gitea 路由至一个子路径
## 使用 HAProxy 作反向代理服务将 Gitea 路由至一个子路径
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 HAProxy 中加入如下配置, Gitea 添加路由规则
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 HAProxy 中加入如下配置, Gitea 添加路由規則
```
frontend http-in
@@ -342,7 +342,7 @@ frontend http-in
在这个配置下http://example.com/gitea/ 将被重定向到您的 Gitea 实例。
接下来,对于 backend 部分:
接下来,對於 backend 部分:
```
backend gitea
@@ -350,13 +350,13 @@ backend gitea
server localhost:3000 check
```
添加的 http-request 在需要的时候会自动加入反斜杠/且通将 http://example.com/gitea 正确设置根来在内部路径中删除 /gitea使其能够正常工作。
添加的 http-request 在需要的时候会自动加入反斜杠/且通将 http://example.com/gitea 正确设置根来在内部路径中删除 /gitea使其能够正常工作。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
## 使用 Traefik 作反向代理服务
## 使用 Traefik 作反向代理服务
如果您想使用 traefik 作 Gitea 的反向代理服务,您可以在 `docker-compose.yaml` 中添加 label 部分(假设使用 docker 作 traefik 的 provider
如果您想使用 traefik 作 Gitea 的反向代理服务,您可以在 `docker-compose.yaml` 中添加 label 部分(假设使用 docker 作 traefik 的 provider
```yaml
gitea:
@@ -368,11 +368,11 @@ gitea:
- "traefik.http.services.gitea-websecure.loadbalancer.server.port=3000"
```
这份配置假设您使用 traefik 来处理 HTTPS 服务,在其和 Gitea 之间使用 HTTP 行通信。
这份配置假设您使用 traefik 来处理 HTTPS 服务,在其和 Gitea 之间使用 HTTP 行通信。
## 使用 Traefik 作反向代理服务将 Gitea 路由至一个子路径
## 使用 Traefik 作反向代理服务将 Gitea 路由至一个子路径
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 `docker-compose.yaml` 文件中增加以下配置, Gitea 添加路由规则(假设使用 docker 作 traefik 的 provider
如果您已经有一个域名且想与 Gitea 共享域名,您可以在您的 `docker-compose.yaml` 文件中增加以下配置, Gitea 添加路由規則(假设使用 docker 作 traefik 的 provider
```yaml
gitea:
@@ -386,6 +386,6 @@ gitea:
- "traefik.http.routers.gitea.middlewares=gitea-stripprefix"
```
这份配置假设您使用 traefik 来处理 HTTPS 服务,在其和 Gitea 之间使用 HTTP 行通信。
这份配置假设您使用 traefik 来处理 HTTPS 服务,在其和 Gitea 之间使用 HTTP 行通信。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。
然后您**必**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://example.com/gitea/` 的配置项。

View File

@@ -8,21 +8,21 @@ aliases:
# 搜索引擎索引
默认情况下,您的 Gitea 安将被搜索引擎索引。
如果您不希望您的仓库对搜索引擎可见,请进一步阅读。
默认情况下,您的 Gitea 安将被搜索引擎索引。
如果您不希望您的存放庫对搜索引擎可见,請進一步阅读。
## 使用 robots.txt 阻止搜索引擎索引
了使 Gitea 顶级安提供自定义的`robots.txt`(默认空的 404在 [`custom`文件夹或`CustomPath`]administration/customizing-gitea.md建一个名 `public/robots.txt` 的文件。
了使 Gitea 顶级安提供自定义的`robots.txt`(默认空的 404在 [`custom`文件夹或`CustomPath`]administration/customizing-gitea.md中建一个名 `public/robots.txt` 的文件。
有关如何配置 `robots.txt` 的示例,参考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
有关如何配置 `robots.txt` 的示例,参考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
```txt
User-agent: *
Disallow: /
```
如果您将 Gitea 安在子目中,则需要在顶级目录中创建或编辑 `robots.txt`
如果您将 Gitea 安在子目中,则需要在顶级目錄中建立或编辑 `robots.txt`
```txt
User-agent: *

View File

@@ -8,30 +8,30 @@ aliases:
# GPG 提交签名
Gitea 将通检查提交是否由 Gitea 数据库中的密钥签名,或者提交是否与 Git 的默认密钥匹配,来验证提供的树中的 GPG 提交签名。
Gitea 将通检查提交是否由 Gitea 数据库中的密钥签名,或者提交是否与 Git 的默认密钥匹配,来驗證提供的树中的 GPG 提交签名。
密钥不会被检查以确定它们是否已期或撤销。密钥也不会与密钥服务器行检查。
密钥不会被检查以确定它们是否已期或撤销。密钥也不会与密钥服务器行检查。
如果找不到用于验证提交的密钥,提交将被标记灰色的未锁定图标。如果提交被标记红色的未锁定图标,则表示它使用带有 ID 的密钥签名。
如果找不到用于驗證提交的密钥,提交将被标记灰色的未锁定图标。如果提交被标记红色的未锁定图标,则表示它使用带有 ID 的密钥签名。
注意:提交的签署者不必是提交的作者或提交者。
注意:提交的签署者不必是提交的作者或提交者。
此功能要求 Git >= 1.7.9,但要实全部功能,需要 Git >= 2.0.0。
此功能要求 Git >= 1.7.9,但要实全部功能,需要 Git >= 2.0.0。
## 自动签名
有许多地方 Gitea 会生成提交:
- 仓库初始化
- 存放庫初始化
- Wiki 更改
- 使用编辑器或 API 行的 CRUD 操作
- 从合并请求进行合
- 使用编辑器或 API 行的 CRUD 操作
- 从合並請求進行合
根据配置和服务器信任,您可能希望 Gitea 对这些提交行签名。
根据配置和服务器信任,您可能希望 Gitea 对这些提交行签名。
## 安和生成 Gitea 的 GPG 密钥
## 安和生成 Gitea 的 GPG 密钥
如何安签名密钥由服务器管理员决定。Gitea 目前使用服务器的 `git` 命令生成所有提交,因此将使用服务器的 `gpg` 行签名(如果配置了)。管理员应该审查 GPG 的最佳实践 - 特别是可能建议仅安装签名的子密钥,而不是主签名和认证的密钥。
如何安签名密钥由服务器管理员决定。Gitea 目前使用服务器的 `git` 命令生成所有提交,因此将使用服务器的 `gpg` 行签名(如果配置了)。管理员應該审查 GPG 的最佳实践 - 特别是可能建议僅安裝签名的子密钥,而不是主签名和認證的密钥。
## 通用配置
@@ -53,84 +53,84 @@ MERGES = pubkey, twofa, basesigned, commitssigned
### `SIGNING_KEY`
首先讨论的项是 `SIGNING_KEY`。有三个主要项:
首先讨论的项是 `SIGNING_KEY`。有三个主要项:
- `none` - 这将阻止 Gitea 对任何提交行签名
- `none` - 这将阻止 Gitea 对任何提交行签名
- `default` - Gitea 将使用 `git config` 中配置的默认密钥
- `KEYID` - Gitea 将使用具有 ID `KEYID` 的 GPG 密钥对提交行签名。在这种情况下,您应该提供 `SIGNING_NAME``SIGNING_EMAIL`,以便显示此密钥的信息。
- `KEYID` - Gitea 将使用具有 ID `KEYID` 的 GPG 密钥对提交行签名。在这种情况下,您應該提供 `SIGNING_NAME``SIGNING_EMAIL`,以便显示此密钥的信息。
`default` 项将读取 `git config` 中的 `commit.gpgsign` 项 - 如果设置了该选项,它将使用 `user.signingkey``user.name``user.email` 的结果。
`default` 项将读取 `git config` 中的 `commit.gpgsign` 项 - 如果设置了該選项,它将使用 `user.signingkey``user.name``user.email` 的结果。
在 Gitea 的仓库中调整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 每个仓库提供不同的签名密钥。然而,这显然不是一个理想的用户界面,因此可能会发生更改。
在 Gitea 的存放庫中调整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 每个存放庫提供不同的签名密钥。然而,这显然不是一个理想的使用者界面,因此可能会发生更改。
:::warning
**自 1.17 起**Gitea 在自己的主目 `[git].HOME_PATH`(默认 `%(APP_DATA_PATH)/home`)中运行 git使用自己的配置文件 `{[git].HOME_PATH}/.gitconfig`
**自 1.17 起**Gitea 在自己的主目 `[git].HOME_PATH`(默认 `%(APP_DATA_PATH)/home`)中运行 git使用自己的配置文件 `{[git].HOME_PATH}/.gitconfig`
如果您有自己定制的 Gitea git 配置,您应该将这些配置设置在系统 git 配置文件中(例如 `/etc/gitconfig`)或者 Gitea 的内部 git 配置文件 `{[git].HOME_PATH}/.gitconfig` 中。
如果您有自己定制的 Gitea git 配置,您應該将这些配置设置在系统 git 配置文件中(例如 `/etc/gitconfig`)或者 Gitea 的内部 git 配置文件 `{[git].HOME_PATH}/.gitconfig` 中。
与 git 命令相关的主目文件(如 `.gnupg`)也应该放在 Gitea 的 git 主目 `[git].HOME_PATH` 中。
如果您希望将 `.gnupg`放在 `{[git].HOME_PATH}/` 之外的位置,考虑设置 `$GNUPGHOME` 环境变量您首的位置,否则 Gitea 将会从 `{[git].HOME_PATH}/.gnupg` 查找私钥。
与 git 命令相关的主目文件(如 `.gnupg`)也應該放在 Gitea 的 git 主目 `[git].HOME_PATH` 中。
如果您希望将 `.gnupg`放在 `{[git].HOME_PATH}/` 之外的位置,考虑设置 `$GNUPGHOME` 环境变量您首的位置,否则 Gitea 将会从 `{[git].HOME_PATH}/.gnupg` 查找私钥。
:::
### `INITIAL_COMMIT`
项确定在创建仓库Gitea 是否应该对初始提交行签名。可能的取值有:
项确定在建立存放庫Gitea 是否應該对初始提交行签名。可能的取值有:
- `never`:从不签名
- `pubkey`仅在用户拥有公钥时行签名
- `twofa`仅在用户使用 2FA 登录时进行签名
- `pubkey`僅在使用者拥有公钥时行签名
- `twofa`僅在使用者使用 2FA 登入时進行签名
- `always`:始终签名
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则提交将被签名。
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则提交将被签名。
### `WIKI`
项确定 Gitea 是否应该对 Wiki 的提交行签名。可能的取值有:
项确定 Gitea 是否應該对 Wiki 的提交行签名。可能的取值有:
- `never`:从不签名
- `pubkey`仅在用户拥有公钥时行签名
- `twofa`仅在用户使用 2FA 登录时进行签名
- `parentsigned`在父提交已签名时行签名。
- `pubkey`僅在使用者拥有公钥时行签名
- `twofa`僅在使用者使用 2FA 登入时進行签名
- `parentsigned`在父提交已签名时行签名。
- `always`:始终签名
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则提交将被签名。
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则提交将被签名。
### `CRUD_ACTIONS`
项确定 Gitea 是否应该对 Web 编辑器或 API CRUD 操作的提交行签名。可能的取值有:
项确定 Gitea 是否應該对 Web 编辑器或 API CRUD 操作的提交行签名。可能的取值有:
- `never`:从不签名
- `pubkey`仅在用户拥有公钥时行签名
- `twofa`仅在用户使用 2FA 登录时进行签名
- `parentsigned`在父提交已签名时行签名。
- `pubkey`僅在使用者拥有公钥时行签名
- `twofa`僅在使用者使用 2FA 登入时進行签名
- `parentsigned`在父提交已签名时行签名。
- `always`:始终签名
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则更改将被签名。
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则更改将被签名。
### `MERGES`
项确定 Gitea 是否应该对 PR 的合提交行签名。可能的项有:
项确定 Gitea 是否應該对 PR 的合提交行签名。可能的项有:
- `never`:从不签名
- `pubkey`仅在用户拥有公钥时行签名
- `twofa`仅在用户使用 2FA 登录时进行签名
- `basesigned`在基础仓库中的父提交已签名时行签名。
- `headsigned`在头分支中的头提交已签名时行签名。
- `commitssigned`在头分支中的所有提交到合点的提交都已签名时行签名。
- `approved`对已批准的合到受保护分支的提交行签名。
- `pubkey`僅在使用者拥有公钥时行签名
- `twofa`僅在使用者使用 2FA 登入时進行签名
- `basesigned`在基础存放庫中的父提交已签名时行签名。
- `headsigned`在头分支中的头提交已签名时行签名。
- `commitssigned`在头分支中的所有提交到合点的提交都已签名时行签名。
- `approved`对已批准的合到受保护分支的提交行签名。
- `always`:始终签名
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则合将被签名。
除了 `never``always` 之外的项可以组合逗号分隔的列表。如果所有择的项都 true则合将被签名。
## 获取签名密钥的公钥
用于签署 Gitea 提交的公钥可以通 API 获取:
用于签署 Gitea 提交的公钥可以通 API 获取:
```sh
/api/v1/signing-key.gpg
```
在存在特定于仓库的密钥的情况下,可以通以下方式获取:
在存在特定于存放庫的密钥的情况下,可以通以下方式获取:
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg

View File

@@ -10,50 +10,50 @@ aliases:
## 背景
Gitea 使用 Golang 作后端编程语言。它使用了许多第三方包,且自己也编写了一些包。
例如Gitea 使用[Chi](https://github.com/go-chi/chi)作基本的 Web 框架。[Xorm](https://xorm.io)是一个用于与数据库交互的 ORM 框架。
因此,管理这些包非常重要。在开始编写后端代码之前,参考以下准则。
Gitea 使用 Golang 作后端编程语言。它使用了许多第三方包,且自己也编写了一些包。
例如Gitea 使用[Chi](https://github.com/go-chi/chi)作基本的 Web 框架。[Xorm](https://xorm.io)是一个用于与数据库交互的 ORM 框架。
因此,管理这些包非常重要。在开始编写后端代码之前,参考以下准则。
## 包设计准则
### 包列表
了保持易于理解的代码避免循环依赖拥有良好的代码结构是很重要的。Gitea 后端分以下几个部分:
了保持易于理解的代码避免循环依赖拥有良好的代码结构是很重要的。Gitea 后端分以下几个部分:
- `build`:帮助构建 Gitea 的脚本。
- `cmd`:包含所有 Gitea 的实际子命令,包括 web、doctor、serv、hooks、admin 等。`web`将启动 Web 服务。`serv``hooks`将被 Git 或 OpenSSH 调用。其他子命令可以帮助维护 Gitea。
- `tests`:常用的测试函数
- `tests/integration`:集成测试,用于测试后端回归。
- `tests/e2e`:端到端测试,用于测试前端和后端的兼容性和视觉回归。
- `models`:包含由 xorm 用于构建数据库表的数据结构。它包含查询和更新数据库的函数。避免与其他 Gitea 代码的依赖关系。在某些情况下,比如日志记录时可以例外。
- `models/db`:基本的数据库操作。所有其他`models/xxx`包都依赖于此包。`GetEngine`函数只能从 models/中调用。
- `models/fixtures`元测试和集成测试中使用的示例数据。一个`yml`文件表示一个将在测试开始时加载到数据库中的表。
- `models/migrations`:存不同版本之间的数据库迁移。修改数据库结构的 PR**必**包含一个迁移步骤。
- `modules`:在 Gitea 中处理特定功能的不同模。工作正在行中:其中一些模块应该移到`services`中,特别是那些依赖于 models 的模,因它们依赖于数据库。
- `modules/setting`:存从 ini 文件中读取的所有系统配置,在各处引用。但是在可能的情况下,将其作函数参数使用。
- `models`:包含由 xorm 用于构建数据库表的数据结构。它包含查询和更新数据库的函数。避免与其他 Gitea 代码的依赖关系。在某些情况下,比如日志记录时可以例外。
- `models/db`:基本的数据库操作。所有其他`models/xxx`包都依赖于此包。`GetEngine`函数只能从 models/中调用。
- `models/fixtures`元测试和集成测试中使用的示例数据。一个`yml`文件表示一个将在测试开始时加载到数据库中的表。
- `models/migrations`:存不同版本之间的数据库迁移。修改数据库结构的 PR**必**包含一个迁移步骤。
- `modules`:在 Gitea 中处理特定功能的不同模。工作正在行中:其中一些模組應該移到`services`中,特别是那些依赖于 models 的模,因它们依赖于数据库。
- `modules/setting`:存从 ini 文件中读取的所有系统配置,在各处引用。但是在可能的情况下,将其作函数參數使用。
- `modules/git`:用于与`Git`命令行或 Gogit 包交互的包。
- `public`编译后的前端文件JavaScript、图像、CSS 等)
- `routers`:处理服务器求。由于它使用其他 Gitea 包来处理因此其他包models、modules 或 services不能依赖于 routers。
- `routers/api`:包含`/api/v1`相关路由,用于处理 RESTful API 求。
- `routers/install`:只能在系统处于安模式INSTALL_LOCK=false响应
- `routers/private`由内部子命令调用,特别是`serv``hooks`
- `routers/web`:处理来自 Web 浏览器或 Git SMART HTTP 协议的 HTTP 求。
- `services`:用于常见路由操作或命令行的支持函数。使用`models``modules`来处理求。
- `routers`:处理服务器求。由于它使用其他 Gitea 包来处理因此其他包models、modules 或 services不能依赖于 routers。
- `routers/api`:包含`/api/v1`相关路由,用于处理 RESTful API 求。
- `routers/install`:只能在系统处于安模式INSTALL_LOCK=false響應
- `routers/private`由内部子命令调用,特别是`serv``hooks`
- `routers/web`:处理来自 Web 浏览器或 Git SMART HTTP 协议的 HTTP 求。
- `services`:用于常见路由操作或命令行的支持函数。使用`models``modules`来处理求。
- `templates`:用于生成 HTML 输出的 Golang 模板。
### 包依赖关系
由于 Golang 不支持导入循环,我们必仔细决定包之间的依赖关系。这些包之间有一些级别。以下是理想的包依赖关系方向。
由于 Golang 不支持导入循环,我们必仔细决定包之间的依赖关系。这些包之间有一些级别。以下是理想的包依赖关系方向。
`cmd` -> `routers` -> `services` -> `models` -> `modules`
从左到右,左侧的包可以依赖于右侧的包,但右侧的包不能依赖于左侧的包。在同一级别的子包中,可以根据级别的规则进行依赖。
从左到右,左侧的包可以依赖于右侧的包,但右侧的包不能依赖于左侧的包。在同一级别的子包中,可以根据级别的規則進行依赖。
**注意事项**
什么我们需要在`models`之外使用数据库事务?以及如何使用?
某些操作在数据库记录插入/更新/删除失败时应该允许回滚。
因此,服务必能够建数据库事务。以下是一些示例:
什么我们需要在`models`之外使用数据库事务?以及如何使用?
某些操作在数据库记录插入/更新/删除失败时應該允许回滚。
因此,服务必能够建数据库事务。以下是一些示例:
```go
// services/repository/repository.go
@@ -70,8 +70,8 @@ func CreateXXXX() error {
}
```
`services`中**不应该**直接使用`db.GetEngine(ctx)`,而是应该`models/`下编写一个函数。
如果函数将在事务中使用,`context.Context`函数的第一个参数
`services`中**不應該**直接使用`db.GetEngine(ctx)`,而是應該`models/`下编写一个函数。
如果函数将在事务中使用,`context.Context`函数的第一个參數
```go
// models/issues/issue.go
@@ -82,29 +82,29 @@ func UpdateIssue(ctx context.Context, repoID int64) error {
}
```
### 包名
### 包名
对于顶层包,使用复数作包名,例如`services``models`对于子包,使用数,例如`services/user``models/repository`
對於顶层包,使用复数作包名,例如`services``models`對於子包,使用数,例如`services/user``models/repository`
### 导入别名
由于有一些使用相同包名的包,例如`modules/user``models/user``services/user`,当这些包在一个 Go 文件中被导入时,很难知道我们使用的是哪个包以及它是变量名是导入名。因此,我们始终建议使用导入别名。了与常见的驼峰命名法的包变量区分开,建议使用**snake_case**作导入别名的命名规则
由于有一些使用相同包名的包,例如`modules/user``models/user``services/user`,当这些包在一个 Go 文件中被导入时,很难知道我们使用的是哪个包以及它是变量名是导入名。因此,我们始终建议使用导入别名。了与常见的驼峰命名法的包变量区分开,建议使用**snake_case**作导入别名的命名規則
例如:`import user_service "code.gitea.io/gitea/services/user"`
### 重要注意事项
- 永远不要写成`x.Update(exemplar)`,而没有明确的`WHERE`子句:
- 这将导致表中的所有行都被使用 exemplar 的非零值行更新,包括 ID。
- 通常应该写成`x.ID(id).Update(exemplar)`
- 如果在迁移程中使用`x.Insert(exemplar)`向表中插入记录,而 ID 是预设的:
- 对于 MSSQL 变,你将需要行`` SET IDENTITY_INSERT `table` ON ``(否则迁移将失败)
- 对于 PostgreSQL需要更新 ID 序列,否则迁移将悄声息地通,但后续的插入将失败:
- 这将导致表中的所有行都被使用 exemplar 的非零值行更新,包括 ID。
- 通常應該写成`x.ID(id).Update(exemplar)`
- 如果在迁移程中使用`x.Insert(exemplar)`向表中插入记录,而 ID 是预设的:
- 對於 MSSQL 变,你将需要行`` SET IDENTITY_INSERT `table` ON ``(否则迁移将失败)
- 對於 PostgreSQL需要更新 ID 序列,否则迁移将悄声息地通,但后续的插入将失败:
`` SELECT setval('table_name_id_seq', COALESCE((SELECT MAX(id)+1 FROM `table_name`), 1), false) ``
### 未来的任务
目前,我们正在行一些重构,以完成以下任务:
目前,我们正在行一些重构,以完成以下任务:
- 纠正不符合规则的代码。
- 纠正不符合規則的代码。
- `models`中的文件太多了,所以我们正在将其中的一些移动到子包`models/xxx`中。
- 由于它们依赖于`models`,因此将某些`modules`子包移动到`services`中。
- 由于它们依赖于`models`,因此将某些`modules`子包移动到`services`中。

View File

@@ -14,7 +14,7 @@ Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/ge
HTML 页面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
源文件可以在以下目中找到:
源文件可以在以下目中找到:
- **CSS 样式** `web_src/css/`
- **JavaScript 文件** `web_src/js/`
@@ -27,19 +27,19 @@ HTML 页面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
## Gitea 特定准则
1. 每个功能Fomantic-UI/jQuery 模块)应放在独的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 个与功能相关的关键
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整个项目中是唯一的,并且应包含 2-3 个与功能相关的关键。建议在在 JavaScript 中使用的 class 中使用 `js-` 前缀。
4.覆盖框架提供的 class 的 CSS 样式。始终使用具有 2-3 个与功能相关的关键的新 class 名来覆盖框架样式。Gitea 中的帮助 CSS 类在 `helpers.less` 中。
5. 后端可以通使用`ctx.PageData["myModuleData"] = map[]{}`将复杂数据传递给前端,但不要将整个模型暴露给前端,以避免泄露敏感数据。
6.页面和与 SEO 相关的页面使用 Go HTML 模板渲染生成静态的 Fomantic-UI HTML 输出。复杂页面可以使用 Vue3。
7. 明确变量型,优先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`,优先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
1. 每个功能Fomantic-UI/jQuery 模組)應放在独的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 个与功能相关的关键
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整个项目中是唯一的,並且應包含 2-3 个与功能相关的关键。建议在在 JavaScript 中使用的 class 中使用 `js-` 前缀。
4.覆盖框架提供的 class 的 CSS 样式。始终使用具有 2-3 个与功能相关的关键的新 class 名来覆盖框架样式。Gitea 中的帮助 CSS 类在 `helpers.less` 中。
5. 后端可以通使用`ctx.PageData["myModuleData"] = map[]{}`将复杂数据传递给前端,但不要将整个模型暴露给前端,以避免泄露敏感数据。
6.页面和与 SEO 相关的页面使用 Go HTML 模板渲染生成静态的 Fomantic-UI HTML 输出。复杂页面可以使用 Vue3。
7. 明确变量型,优先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`,优先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用语义化元素,优先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加注释解释什么需要它。
10. 避免在一个事件监听器中混合不同的事件,优先每个事件使用独立的事件监听器。
11. 推荐使用自定义事件名前缀`ce-`
12. 建议使用 Tailwind CSS它可以通 `tw-` 前缀获得,例如 `tw-relative`. Gitea 自身的助手类 CSS 使用 `gt-` 前缀(`gt-ellipsis`Gitea 自身的私有框架级 CSS 类使用 `g-` 前缀(`g-modal-confirm`)。
13. 尽量避免内联脚本和样式,建议将 JS 代码放入 JS 文件中使用 CSS 类。如果内联脚本和样式不可避免,解释法避免的原因。
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加注释解释什么需要它。
10. 避免在一个事件监听器中混合不同的事件,优先每个事件使用独立的事件监听器。
11. 推荐使用自定义事件名前缀`ce-`
12. 建议使用 Tailwind CSS它可以通 `tw-` 前缀获得,例如 `tw-relative`. Gitea 自身的助手类 CSS 使用 `gt-` 前缀(`gt-ellipsis`Gitea 自身的私有框架级 CSS 类使用 `g-` 前缀(`g-modal-confirm`)。
13. 尽量避免内联脚本和样式,建议将 JS 代码放入 JS 文件中使用 CSS 类。如果内联脚本和样式不可避免,解释法避免的原因。
### 可访问性 / ARIA
@@ -50,66 +50,66 @@ Gitea 使用一些补丁使 Fomantic UI 更具可访问性(参见 `aria.md`
### 框架使用
不建议混合使用不同的框架,这会使代码难以维护。
一个 JavaScript 模块应遵循一个主要框架,遵循框架的最佳实践。
一个 JavaScript 模組應遵循一个主要框架,遵循框架的最佳实践。
推荐的实方式:
推荐的实方式:
- Vue + Vanilla JS
- Fomantic-UIjQuery
- htmx (部分页面重新加载其他静态组件)
- Vanilla JS
不推荐的实方式:
不推荐的实方式:
- Vue + Fomantic-UIjQuery
- jQuery + Vanilla JS
- htmx + 任何其他需要大量 JavaScript 代码或不必要的功能,如 htmx 脚本 (`hx-on`)
了保持界面一致Vue 组件可以使用 Fomantic-UI 的 CSS 类。
了保持界面一致Vue 组件可以使用 Fomantic-UI 的 CSS 类。
尽管不建议混合使用不同的框架,
我们使用 htmx 行简的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一个简交互的示例,其中使用 htmx。如果您需要更高级的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,且代码设计良好且易于维护,也可以工作。
我们使用 htmx 行简的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一个简交互的示例,其中使用 htmx。如果您需要更高级的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,且代码设计良好且易于维护,也可以工作。
### `async` 函数
只有当函数内部存在`await`调用或返回`Promise`时,才将函数标记`async`
只有当函数内部存在`await`调用或返回`Promise`时,才将函数标记`async`
不建议使用`async`事件监听器,这可能会导致问题。
原因是`await`后的代码在事件分发之外行。
原因是`await`后的代码在事件分发之外行。
参考https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
如果一个事件监听器必`async`在任何`await`之前使用`e.preventDefault()`
建议将其放在函数的开头
如果一个事件监听器必`async`在任何`await`之前使用`e.preventDefault()`
建议将其放在函数的開頭
如果我们想在非异步上下文中调用`async`函数,
建议使用`const _promise = asyncFoo()`来告诉读者
这是有意之的,我们想调用异步函数忽略 Promise。
一些 lint 规则和 IDE 也会在未处理返回的 Promise 时发出警告。
这是有意之的,我们想调用异步函数忽略 Promise。
一些 lint 規則和 IDE 也会在未处理返回的 Promise 时发出警告。
### 获取数据
要获取数据,使用`modules/fetch.js`中的包装函数`GET``POST`等。他们
接受内容的`data`项,将自动设置 CSRF 令牌返回
要获取数据,使用`modules/fetch.js`中的包装函数`GET``POST`等。他们
接受内容的`data`项,将自动设置 CSRF 令牌返回
[Response](https://developer.mozilla.org/en-US/docs/Web/API/Response)。
### HTML 属性和 dataset
禁止使用`dataset`,它的驼峰命名行使得搜索属性变得困难。
禁止使用`dataset`,它的驼峰命名行使得搜索属性变得困难。
然而,仍然存在一些特殊情况,因此当前的准则是:
- 对于旧代码:
- 對於旧代码:
- `$.data()`重构`$.attr()`
- `$.data()`重构`$.attr()`
- 在极少数情况下,可以使用`$.data()`将一些非字符串数据绑定到元素上,但强烈不推荐使用。
- 对于新代码:
-使用`node.dataset`,而使用`node.getAttribute`
- 不要将任何用户数据绑定到 DOM 节点上,使用合适的设计模式描述节点和数据之间的关系。
- 對於新代码:
-使用`node.dataset`,而使用`node.getAttribute`
- 不要将任何使用者数据绑定到 DOM 节点上,使用合适的设计模式描述节点和数据之间的关系。
### 显示/隐藏元素
- 推荐在 Vue 组件中使用`v-if``v-show`来显示/隐藏元素。
- Go 模板代码使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 来显示/隐藏元素,参阅`.tw-hidden`的注释以获取更多详细信息。
- Go 模板代码使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 来显示/隐藏元素,参阅`.tw-hidden`的注释以获取更多详细信息。
### Go HTML 模板中的样式和属性
@@ -142,8 +142,8 @@ Gitea 使用一些补丁使 Fomantic UI 更具可访问性(参见 `aria.md`
### Vue3 和 JSX
Gitea 在正在使用 Vue3。我们决定不引入 JSX以保持 HTML 代码和 JavaScript 代码分离。
Gitea 在正在使用 Vue3。我们决定不引入 JSX以保持 HTML 代码和 JavaScript 代码分离。
### UI 示例
Gitea 使用一些自制的 UI 元素自定义其他元素,以将它们更好地集成到通用 UI 方法中。当在开发模式(`RUN_MODE=dev`)下运行 Gitea 时,在 `http(s)://your-gitea-url:port/devtest` 下会提供一个包含一些标准化 UI 示例的页面。
Gitea 使用一些自制的 UI 元素自定义其他元素,以将它们更好地集成到通用 UI 方法中。当在开发模式(`RUN_MODE=dev`)下运行 Gitea 时,在 `http(s)://your-gitea-url:port/devtest` 下会提供一个包含一些标准化 UI 示例的页面。

View File

@@ -10,31 +10,31 @@ aliases:
## 背景
自 2014 年 2 月 12 日编写了第一行代码以来Gitea 已经发展成一个庞大的项目。
自 2014 年 2 月 12 日编写了第一行代码以来Gitea 已经发展成一个庞大的项目。
因此,代码库变得越来越大。代码库越大,维护就越困难。
存在许多时的制,许多框架混合在一起,一些遗留代码可能会导致错误阻碍新功能的开发。
了使代码库更易于维护,使 Gitea 变得更好,开发人员牢记使用现代机制来重构旧代码。
存在许多时的制,许多框架混合在一起,一些遗留代码可能会导致错误阻碍新功能的开发。
了使代码库更易于维护,使 Gitea 变得更好,开发人员牢记使用現代機制来重构旧代码。
本文是关于重构代码库的指南集合。
本文是关于重构代码库的指南集合。
## 重构建议
- 设计更多关于未来的内容,而不仅仅解决当前问题。
- 设计更多关于未来的内容,而不僅僅解决当前问题。
- 减少模糊性,减少冲突,提高可维护性。
- 描述重构,例如:
- 什么需要重构。
- 什么需要重构。
- 如何解决旧问题。
- 重构的优点/缺点是什么。
- 只做必要的更改,尽量保留旧逻辑。
- 引入一些中间步骤,使重构更容易审查,完整的重构计划可以在几个 PR 中完成。
- 如果存在分歧,应该请 TOC技术监督委员会参与决策。
- 如果存在分歧,應該請 TOC技术监督委员会参与决策。
- 添加必要的测试以确保重构的正确性。
- 非错误重构优先在里程碑的开始时行,这样可以更容易地在发布之前发问题。
- 非错误重构优先在里程碑的开始时行,这样可以更容易地在發佈之前发问题。
## 审查和合建议
## 审查和合建议
- 重构的 PR 不应该长时间保持打开状态(通常 7 天),尽快行审查。
- 重构的 PR 尽快合,不被其他 PR 阻塞。
- 如果 TOC 没有异议,重构的 PR 可以在 7 天后由一名核心成员(非作者)批准后合
- 重构的 PR 不應該长时间保持打开状态(通常 7 天),尽快行审查。
- 重构的 PR 尽快合,不被其他 PR 阻塞。
- 如果 TOC 没有异议,重构的 PR 可以在 7 天后由一名核心成员(非作者)批准后合
- 如果最终结果良好,容忍一些不完美/临时的步骤。
- 如果重构是必要的,容忍一些回归错误,尽快修复错误。
- 如果重构是必要的,容忍一些回归错误,尽快修复错误。

View File

@@ -8,18 +8,18 @@ aliases:
# 本地化
Gitea 的本地化是通我们的[Crowdin 项目](https://crowdin.com/project/gitea)行的。
Gitea 的本地化是通我们的[Crowdin 项目](https://crowdin.com/project/gitea)行的。
对于对**英语翻译**的更改,可以发出 pull-request来更改[英语语言环境](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合适的关键字。
對於对**英语翻译**的更改,可以发出 pull-request来更改[英语语言环境](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合适的关键字。
有关对**非英语**翻译的更改,参阅上面的 Crowdin 项目。
有关对**非英语**翻译的更改,参阅上面的 Crowdin 项目。
## 支持的语言
上述 Crowdin 项目中列出的任何语言一旦翻译了 25% 或更多都将得到支持。
翻译被接受后,它将在下一次 Crowdin 同步后反映在主存库中,这通常是在任何 PR 合之后。
翻译被接受后,它将在下一次 Crowdin 同步后反映在主存库中,这通常是在任何 PR 合之后。
在撰写本文时,这意味着更改后的翻译可能要到 Gitea 的下一个版本才会出
在撰写本文时,这意味着更改后的翻译可能要到 Gitea 的下一个版本才会出
如果使用开发版本,则在同步更改内容后,它应该会在更新后立即显示。
如果使用开发版本,则在同步更改内容后,它應該会在更新后立即显示。

View File

@@ -10,21 +10,21 @@ aliases:
## 开启/配置 API 访问
通常情况下, `ENABLE_SWAGGER` 默认开启并且参数 `MAX_RESPONSE_ITEMS` 默认 50。您可以从 [Config Cheat Sheet](../administration/config-cheat-sheet.md) 中获取更多配置相关信息。
通常情况下, `ENABLE_SWAGGER` 默认开启並且參數 `MAX_RESPONSE_ITEMS` 默认 50。您可以从 [Config Cheat Sheet](../administration/config-cheat-sheet.md) 中获取更多配置相关信息。
## 通 API 认证
## 通 API 認證
Gitea 支持以下几种 API 认证方式:
Gitea 支持以下几种 API 認證方式:
- HTTP basic authentication 方式
-指定 `token=...` URL 查询参数方式
-指定 `access_token=...` URL 查询参数方式
-指定 `Authorization: token ...` HTTP header 方式
-指定 `token=...` URL 查询參數方式
-指定 `access_token=...` URL 查询參數方式
-指定 `Authorization: token ...` HTTP header 方式
以上提及的认证方法接受相同的 apiKey token 型,您可以在编码时通查阅代码更好地理解这一点。
Gitea 调用解析查询参数以及头部信息来获取 token 的代码可以在 [modules/auth/auth.go](https://github.com/go-gitea/gitea/blob/6efdcaed86565c91a3dc77631372a9cc45a58e89/modules/auth/auth.go#L47) 中找到。
以上提及的認證方法接受相同的 apiKey token 型,您可以在编码时通查阅代码更好地理解这一点。
Gitea 调用解析查询參數以及头部信息来获取 token 的代码可以在 [modules/auth/auth.go](https://github.com/go-gitea/gitea/blob/6efdcaed86565c91a3dc77631372a9cc45a58e89/modules/auth/auth.go#L47) 中找到。
您可以通您的 gitea web 界面来建 apiKey token
您可以通您的 gitea web 界面来建 apiKey token
`Settings | Applications | Generate New Token`.
### 关于 `Authorization:` header
@@ -35,7 +35,7 @@ Gitea 调用解析查询参数以及头部信息来获取 token 的代码可以
Authorization: token 65eaa9c8ef52460d22a93307fe0aee76289dc675
```
`curl` 命令例,它会以如下形式携带在求中:
`curl` 命令例,它会以如下形式携带在求中:
```
curl "http://localhost:4000/api/v1/repos/test1/test1/issues" \
@@ -44,20 +44,20 @@ curl "http://localhost:4000/api/v1/repos/test1/test1/issues" \
-H "Content-Type: application/json" -d "{ \"body\": \"testing\", \"title\": \"test 20\"}" -i
```
正如上例所示,您也可以在 GET 求中使用同一个 token `token=` 的查询参数形式携带 token 来进行认证
正如上例所示,您也可以在 GET 求中使用同一个 token `token=` 的查询參數形式携带 token 来進行認證
## 通 API 列出您发布的令牌
## 通 API 列出您發佈的令牌
`/users/:name/tokens` 是一个特殊的接口,需要您使用 basic authentication 进行认证,具原因在 issue 中
`/users/:name/tokens` 是一个特殊的接口,需要您使用 basic authentication 進行認證,具原因在 issue 中
[#3842](https://github.com/go-gitea/gitea/issues/3842#issuecomment-397743346) 有所提及,使用方法如下所示:
### 使用 Basic authentication 认证
### 使用 Basic authentication 認證
```
$ curl --url https://yourusername:yourpassword@gitea.your.host/api/v1/users/yourusername/tokens
[{"name":"test","sha1":"..."},{"name":"dev","sha1":"..."}]
```
## 使用 Sudo 方式求 API
## 使用 Sudo 方式求 API
此 API 允许管理员借用其他用户身份行 API 求。只需在求中指定查询参数 `sudo=` 或是指定 header 中的 `Sudo:` 需要使用的用户 username 即可。
此 API 允许管理员借用其他使用者身份行 API 求。只需在求中指定查询參數 `sudo=` 或是指定 header 中的 `Sudo:` 需要使用的使用者 username 即可。

View File

@@ -14,30 +14,30 @@ aliases:
[![在 Gitpod 中打开](/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/go-gitea/gitea)
## 安 Golang
## 安 Golang
您需要 [ go](https://go.dev/doc/install) 设置您的 go 环境。
您需要 [ go](https://go.dev/doc/install) 设置您的 go 环境。
接下来,[使用 npm 安 Node.js](https://nodejs.org/en/download/) ,这是构建
接下来,[使用 npm 安 Node.js](https://nodejs.org/en/download/) ,这是构建
JavaScript 和 CSS 文件的必要工具。最低支持的 Node.js 版本是 @minNodeVersion@
且推荐使用最新的 LTS 版本。
且推荐使用最新的 LTS 版本。
**注意** :当行需要外部工具的 make 任务时,比如
`make watch-backend`Gitea 会自动下载构建这些必要的组件。了能够使用这些,你必
`"$GOPATH"/bin`加入到可行路径上。如果你不把 go bin 目添加到可行路径你必手动
指定可行程序路径。
**注意** :当行需要外部工具的 make 任务时,比如
`make watch-backend`Gitea 会自动下载构建这些必要的组件。了能够使用这些,你必
`"$GOPATH"/bin`加入到可行路径上。如果你不把 go bin 目添加到可行路径你必手动
指定可行程序路径。
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源代码。然而,`gofmt` 的结果可能因 `go` 的版本而有差异。因此推荐安我们持续集成使用
的 Go 版本。截至上次更新Go 版本应该@goVersion@。
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源代码。然而,`gofmt` 的结果可能因 `go` 的版本而有差异。因此推荐安我们持续集成使用
的 Go 版本。截至上次更新Go 版本應該@goVersion@。
## 安 Make
## 安 Make
Gitea 大量使用 `Make` 来自动化任务和改开发。本指南涵盖了如何安 Make。
Gitea 大量使用 `Make` 来自动化任务和改开发。本指南涵盖了如何安 Make。
### 在 Linux 上
使用包管理器安
使用包管理器安
在 Ubuntu/Debian 上:
@@ -55,19 +55,19 @@ sudo yum install make
Make 的这三个发行版都可以在 Windows 上运行:
- [个二制构建](http://www.equation.com/servlet/equation.cmd?fa=make)。复制到某处添加到 `PATH`
- [个二制构建](http://www.equation.com/servlet/equation.cmd?fa=make)。复制到某处添加到 `PATH`
- [32 位版本](http://www.equation.com/ftpdir/make/32/make.exe)
- [64 位版本](http://www.equation.com/ftpdir/make/64/make.exe)
- [MinGW-w64](https://www.mingw-w64.org) / [MSYS2](https://www.msys2.org/)。
- MSYS2 是一个工具和库的集合,您提供一个易于使用的环境来构建、安和运行本机 Windows 软件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件称为 `mingw32-make.exe` 而不是 `make.exe`。将 `bin` 文件夹添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`参阅 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3编译 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 标头缺少一些 Windows -只有 CRT 函数像 \_beginthread 一样。
- MSYS2 是一个工具和库的集合,您提供一个易于使用的环境来构建、安和运行本机 Windows 软件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件稱為 `mingw32-make.exe` 而不是 `make.exe`。将 `bin` 文件夹添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`参阅 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3编译 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 标头缺少一些 Windows -只有 CRT 函数像 \_beginthread 一样。
- [Chocolatey 包管理器](https://chocolatey.org/packages/make)。运行`choco install make`
**注意** :如果您尝试在 Windows 命令提示符下使用 make 行构建您可能会遇到问题。建议使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell则可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
**注意** :如果您尝试在 Windows 命令提示符下使用 make 行构建您可能会遇到问题。建议使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell则可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
## 下载克隆 Gitea 源代码
## 下载克隆 Gitea 源代码
获取源代码的推荐方法是使用 `git clone`
@@ -75,15 +75,15 @@ Make 的这三个发行版都可以在 Windows 上运行:
git clone https://github.com/go-gitea/gitea
```
(自从 go modules 出后,不再需要构建 go 项目从 `$GOPATH` 中获取,因此不再推荐使用 `go get` 方法。)
(自从 go modules 出后,不再需要构建 go 项目从 `$GOPATH` 中获取,因此不再推荐使用 `go get` 方法。)
## 派生 Gitea
如上所述下载主要的 Gitea 源代码。然后,派生 [Gitea 仓库](https://github.com/go-gitea/gitea)
并为您的本地仓库切换 git 远程源,或添加另一个远程源:
如上所述下载主要的 Gitea 源代码。然后,派生 [Gitea 存放庫](https://github.com/go-gitea/gitea)
並為您的本地存放庫切换 git 远程源,或添加另一个远程源:
```bash
# 将原来的 Gitea origin 重命名 upstream
# 将原来的 Gitea origin 重命名 upstream
git remote rename origin upstream
git remote add origin "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
@@ -92,12 +92,12 @@ git fetch --all --prune
或者:
```bash
# 我们的 fork 添加新的远程
# 我们的 fork 添加新的远程
git remote add "$FORK_NAME" "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
```
了能够创建合并请求,将分叉存库添加 Gitea 本地仓库的远程,否则法推送更改。
了能够建立合並請求,将分叉存库添加 Gitea 本地存放庫的远程,否则法推送更改。
## 构建 Gitea基本
@@ -105,22 +105,22 @@ git fetch --all --prune
[说明](installation/from-source.md)
关于如何[从源代码构建](installation/from-source.md) 。
从源代码构建的最简推荐方法是:
从源代码构建的最简推荐方法是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build` 目标将同时`frontend``backend` 子目标。如果存在 `bindata` 标签,资源文件将被编译成二制文件。建议在行前端开发时省略 `bindata` 标签,以便实时反映更改。
`build` 目标将同时`frontend``backend` 子目标。如果存在 `bindata` 標籤,资源文件将被编译成二制文件。建议在行前端开发时省略 `bindata` 標籤,以便实时反映更改。
有关所有可用的 `make` 目标,参阅 `make help`。另参阅 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以了解我们的持续集成是如何工作的。
有关所有可用的 `make` 目标,参阅 `make help`。另参阅 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以了解我们的持续集成是如何工作的。
## 持续构建
要在源文件更改时运行持续构建:
要在源文件更改时运行持续构建:
```bash
# 对于前端和后端
# 對於前端和后端
make watch
# 或者只看前端文件html/js/css
@@ -130,40 +130,40 @@ make watch-frontend
make watch-backend
```
在 macOS 上,监视所有后端源文件可能会达到默认的打开文件限制,这可以通当前 shell 的 `ulimit -n 12288` 或所有未来 shell 的 shell 启动文件来增加。
在 macOS 上,监视所有后端源文件可能会达到默认的打开文件限制,这可以通当前 shell 的 `ulimit -n 12288` 或所有未来 shell 的 shell 启动文件来增加。
### 格式化、代码分析和拼写检查
我们的持续集成将拒绝未通代码检查(包括格式检查、代码分析和拼写检查)的 PR。
我们的持续集成将拒绝未通代码检查(包括格式检查、代码分析和拼写检查)的 PR。
应该格式化你的代码:
應該格式化你的代码:
```bash
make fmt
```
检查源代码:
检查源代码:
```bash
# lint 前端和后端代码
make lint
# lint 后端代码
# lint 后端代码
make lint-backend
```
**注意** `gofmt` 的结果取决于 `go` 的版本。您应该运行与持续集成相同的 go 版本。
**注意** `gofmt` 的结果取决于 `go` 的版本。您應該运行与持续集成相同的 go 版本。
### 处理 JS 和 CSS
前端开发遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
前端开发遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
要使用前端资源构建,使用上面提到的“watch-frontend”目标或只构建一次
要使用前端资源构建,使用上面提到的“watch-frontend”目标或只构建一次
```bash
make build && ./gitea
```
在提交之前,确保 linters 通
在提交之前,确保 linters 通
```bash
make lint-frontend
@@ -192,81 +192,81 @@ REPO_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200
### 构建和添加 SVGs
SVG 图标是使用 `make svg` 命令构建的,命令将图标资源编译到输出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自定义图标。
SVG 图标是使用 `make svg` 命令构建的,命令将图标资源编译到输出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自定义图标。
### 构建 Logo
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images` 目标从个 SVG 源文件 assets/logo.svg 构建的。要运行它Node.js 和 npm 必可用。
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images` 目标从个 SVG 源文件 assets/logo.svg 构建的。要运行它Node.js 和 npm 必可用。
更新 `assets/logo.svg` 运行 `make generate-images`,同样的程也可用于从 SVG 源文件生成自定义 Logo PNG。忽略 gitea 编译项将更新用户指定的 LOGO 文件。
更新 `assets/logo.svg` 运行 `make generate-images`,同样的程也可用于从 SVG 源文件生成自定义 Logo PNG。忽略 gitea 编译项将更新使用者指定的 LOGO 文件。
### 更新 API
建新的 API 路由或修改有的 API 路由时,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
这些使用 [go-swagger](https://goswagger.io/) 评论的文
新的 API 路由或修改有的 API 路由时,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
这些使用 [go-swagger](https://goswagger.io/) 评论的文
[规范](https://goswagger.io/use/spec.html#annotation-syntax)中描述了这些注释的结构。
如果您想了解更多有关 Swagger 结构的信息,可以查看
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
或与添加新 API 端点的先前 PR 行比较,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
或与添加新 API 端点的先前 PR 行比较,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
应该注意不要破坏下游用户依赖的 API。在稳定的 API 上,一般来说添加是可以接受的,但删除
或对 API 行根本性更改将会被拒绝。
應該注意不要破坏下游使用者依赖的 API。在稳定的 API 上,一般来说添加是可以接受的,但删除
或对 API 行根本性更改将会被拒绝。
建或更改 API 端点后,用以下命令重新生成 Swagger 文
或更改 API 端点后,用以下命令重新生成 Swagger 文
```bash
make generate-swagger
```
应该验证生成的 Swagger 文件:
應該驗證生成的 Swagger 文件:
```bash
make swagger-validate
```
应该提交更改后的 swagger JSON 文件。持续集成服务器将使用以下方法检查是否已完成:
應該提交更改后的 swagger JSON 文件。持续集成服务器将使用以下方法检查是否已完成:
```bash
make swagger-check
```
**注意** 注意,您应该使用 Swagger 2.0 文,而不是 OpenAPI 3 文
**注意** 注意,您應該使用 Swagger 2.0 文,而不是 OpenAPI 3 文
### 建新的配置
### 建新的配置
建新的配置项时,将它们添加到 `modules/setting` 的对文件。您应该将信息添加到 `custom/conf/app.ini`
到[配置备忘](../administration/config-cheat-sheet.md)
新的配置项时,将它们添加到 `modules/setting` 的对文件。您應該将信息添加到 `custom/conf/app.ini`
到[配置备忘](../administration/config-cheat-sheet.md)
`docs/content/doc/advanced/config-cheat-sheet.zh-tw.md` 中找到
### 更改 Logo
更改 Gitea Logo SVG 时,您将需要运行提交结果的:
更改 Gitea Logo SVG 时,您将需要运行提交结果的:
```bash
make generate-images
```
这将建必要的 Gitea 图标和其他图标。
这将建必要的 Gitea 图标和其他图标。
### 数据库迁移
如果您对数据库中的任何数据库持久结构行重大更改
`models/`,您将需要行新的迁移。可以找到这些
如果您对数据库中的任何数据库持久结构行重大更改
`models/`,您将需要行新的迁移。可以找到这些
`models/migrations/` 中。您可以确保您的迁移适用于主要
数据库型使用:
数据库型使用:
```bash
make test-sqlite-migration # 将 SQLite 切换适当的数据库
make test-sqlite-migration # 将 SQLite 切换适当的数据库
```
## 测试
Gitea 运行两种型的测试:元测试和集成测试。
Gitea 运行两种型的测试:元测试和集成测试。
### 元测试
### 元测试
`go test` 系统中的`*_test.go` 涵盖了元测试。
`go test` 系统中的`*_test.go` 涵盖了元测试。
您可以设置环境变量 `GITEA_UNIT_TESTS_LOG_SQL=1` 以在详细模式下运行测试时显示所有 SQL 语句(即设置`GOTESTFLAGS=-v` 时)。
```bash
@@ -275,27 +275,27 @@ TAGS="bindata sqlite sqlite_unlock_notify" make test # Runs the unit tests
### 集成测试
元测试不会也不能完全独测试 Gitea。因此我们编写了集成测试但是这些依赖于数据库。
元测试不会也不能完全独测试 Gitea。因此我们编写了集成测试但是这些依赖于数据库。
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build test-sqlite
```
将在 SQLite 环境中运行集成测试。集成测试需要安 `git lfs`。其他数据库测试可用,但
可能需要适当地环境。
将在 SQLite 环境中运行集成测试。集成测试需要安 `git lfs`。其他数据库测试可用,但
可能需要适当地环境。
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有关更多信息以及如何运行个测试。
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有关更多信息以及如何运行个测试。
### 测试 PR
我们的持续集成将测试代码是否通过了单元测试,且所有支持的数据库都将在 Docker 环境中通集成测试。
将测试从几个最新版本的 Gitea 迁移。
我们的持续集成将测试代码是否通過了單元测试,且所有支持的数据库都将在 Docker 环境中通集成测试。
将测试从几个最新版本的 Gitea 迁移。
在 PR 中附带提交适当的元测试和集成测试。
在 PR 中附带提交适当的元测试和集成测试。
## 网站文
## 网站文
网站的文位于 `docs/` 中。如果你改变了文内容,你可以使用以下测试方法行持续集成:
网站的文位于 `docs/` 中。如果你改变了文内容,你可以使用以下测试方法行持续集成:
```bash
make lint-md
@@ -303,32 +303,32 @@ make lint-md
## Visual Studio Code
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
[`contrib/ide/README.md`](https://github.com/go-gitea/gitea/blob/main/contrib/ide/README.md) 了解更多信息。
## Goland
单击 `/main.go` 中函数 `func main()` 上的 `Run Application` 箭头
單擊 `/main.go` 中函数 `func main()` 上的 `Run Application` 箭头
可以快速启动一个可调试的 Gitea 实例。
`Run/Debug Configuration` 中的 `Output Directory`设置
gitea 项目目(包含 `main.go``go.mod`
否则,启动实例的工作目是 GoLand 的临时目
防止 Gitea 在开发环境中加载动态资源(例如:模板)。
`Run/Debug Configuration` 中的 `Output Directory`设置
gitea 项目目(包含 `main.go``go.mod`
否则,启动实例的工作目是 GoLand 的临时目
防止 Gitea 在开发环境中加载动态资源(例如:模板)。
要在 GoLand 中使用 SQLite 运行元测试,设置 `-tags sqlite,sqlite_unlock_notify`
`运行/调试配置``Go 工具参数` 中。
要在 GoLand 中使用 SQLite 运行元测试,设置 `-tags sqlite,sqlite_unlock_notify`
`运行/调试配置``Go 工具參數` 中。
## 提交 PR
对更改感到满意后,将它们推送打开拉取求。它建议您允许 Gitea Managers 和 Owners 修改您的 PR
分支,因我们需要在合之前将其更新 main 和/或可能是能够直接帮助解决问题。
对更改感到满意后,将它们推送打开拉取求。它建议您允许 Gitea Managers 和 Owners 修改您的 PR
分支,因我们需要在合之前将其更新 main 和/或可能是能够直接帮助解决问题。
任何 PR 都需要 Gitea 维护者的两次批准,且需要通持续集成。看看我们的
任何 PR 都需要 Gitea 维护者的两次批准,且需要通持续集成。看看我们的
[CONTRIBUTING.md](https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md)
如果您需要更多帮助,访问 [Discord](https://discord.gg/gitea) #Develop 频道
在那里聊天。
如果您需要更多帮助,访问 [Discord](https://discord.gg/gitea) #Develop 频道
在那里聊天。
在,您已准备好 Hacking Gitea。
在,您已准备好 Hacking Gitea。

View File

@@ -19,8 +19,8 @@ Gitea 拥有一个出色的第三方集成社区,以及在其他各种项目
## 预填新文件名和内容
如果你想打开一个具有给定名和内容的新文件,
你可以使用查询参数来实
如果你想打开一个具有给定名和内容的新文件,
你可以使用查询參數来实
```txt
GET /{{org}}/{{repo}}/_new/{{filepath}}

View File

@@ -8,24 +8,24 @@ aliases:
# 迁移接口
完整迁移功能在 Gitea 1.9.0 版本中引入。它定义了两个接口,用于支持从其他 Git 托管平台迁移存库数据到 Gitea或者在将来将 Gitea 数据迁移到其他 Git 托管平台。
完整迁移功能在 Gitea 1.9.0 版本中引入。它定义了两个接口,用于支持从其他 Git 托管平台迁移存库数据到 Gitea或者在将来将 Gitea 数据迁移到其他 Git 托管平台。
目前已实了从 GitHub、GitLab 和其他 Gitea 实例的迁移。
目前已实了从 GitHub、GitLab 和其他 Gitea 实例的迁移。
首先Gitea 在包[modules/migration](https://github.com/go-gitea/gitea/tree/main/modules/migration)中定义了一些标准对象。它们是`Repository``Milestone``Release``ReleaseAsset``Label``Issue``Comment``PullRequest``Reaction``Review``ReviewComment`
## 下载器接口
要从新的 Git 托管平台迁移,需要行两个步骤的更新。
要从新的 Git 托管平台迁移,需要行两个步骤的更新。
-应该实现一个`Downloader`,用于获取存库信息。
-应该实现一个`DownloaderFactory`,用于检测 URL 是否匹配,并创建上述的`Downloader`
- 您需要在`init()`中通`RegisterDownloaderFactory`注册`DownloaderFactory`
-應該实現一个`Downloader`,用于获取存库信息。
-應該实現一个`DownloaderFactory`,用于检测 URL 是否匹配,並建立上述的`Downloader`
- 您需要在`init()`中通`RegisterDownloaderFactory`注册`DownloaderFactory`
您可以在[downloader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/downloader.go)中找到这些接口。
## 上传器接口
目前,只实`GiteaLocalUploader`,因此我们只能通此 Uploader 将下载的数据保存到本地的 Gitea 实例。目前不支持其他上传器。
目前,只实`GiteaLocalUploader`,因此我们只能通此 Uploader 将下载的数据保存到本地的 Gitea 实例。目前不支持其他上传器。
您可以在[uploader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/uploader.go)中找到这些接口。

View File

@@ -8,7 +8,7 @@ aliases:
# OAuth2 提供者
Gitea 支持作 OAuth2 提供者,允许第三方用程序在用户同意的情况下访问其资源。此功能自 1.8.0 版起可用。
Gitea 支持作 OAuth2 提供者,允许第三方用程序在使用者同意的情况下访问其资源。此功能自 1.8.0 版起可用。
## 端点
@@ -22,40 +22,40 @@ Gitea 支持作为 OAuth2 提供者,允许第三方应用程序在用户同意
## 支持的 OAuth2 授权
目前 Gitea 支持 [**Authorization Code Grant**](https://tools.ietf.org/html/rfc6749#section-1.3.1) 标准,额外支持以下扩展:
目前 Gitea 支持 [**Authorization Code Grant**](https://tools.ietf.org/html/rfc6749#section-1.3.1) 标准,额外支持以下扩展:
- [Proof Key for Code Exchange (PKCE)](https://tools.ietf.org/html/rfc7636)
- [OpenID Connect (OIDC)](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth)
要将 Authorization Code Grant 作第三方用程序,您需要通在设置中添加一个新的 "用程序" (`/user/settings/applications`)。
要将 Authorization Code Grant 作第三方用程序,您需要通在设置中添加一个新的 "用程序" (`/user/settings/applications`)。
## 范围
Gitea 支持以下令牌范围:
| 名 | 介绍 |
| 名 | 介绍 |
| ---------------------------------------- | --------------------------------------------------------------- |
| **(no scope)** | 授予对公共用户配置文件和公共存库的只读访问权限 |
| **repo** | 完全控制所有存库 |
| &nbsp;&nbsp;&nbsp; **repo:status** | 授予对所有存库中提交状态的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **public_repo** | 授予对公共存库的读/写访问权限 |
| **admin:repo_hook** | 授予对所有存库的 Hooks 访问权限,权限已包含在 `repo` 范围中 |
| &nbsp;&nbsp;&nbsp; **write:repo_hook** | 授予对存库 Hooks 的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:repo_hook** | 授予对存库 Hooks 的只读访问权限 |
| **admin:org** | 授予对组织设置的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:org** | 授予对组织设置的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:org** | 授予对组织设置的只读访问权限 |
| **(no scope)** | 授予对公共使用者配置文件和公共存库的只读访问权限 |
| **repo** | 完全控制所有存库 |
| &nbsp;&nbsp;&nbsp; **repo:status** | 授予对所有存库中提交状态的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **public_repo** | 授予对公共存库的读/写访问权限 |
| **admin:repo_hook** | 授予对所有存库的 Hooks 访问权限,权限已包含在 `repo` 范围中 |
| &nbsp;&nbsp;&nbsp; **write:repo_hook** | 授予对存库 Hooks 的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:repo_hook** | 授予对存库 Hooks 的只读访问权限 |
| **admin:org** | 授予对組織设置的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:org** | 授予对組織设置的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:org** | 授予对組織设置的只读访问权限 |
| **admin:public_key** | 授予公钥管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:public_key** | 授予对公钥的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:public_key** | 授予对公钥的只读访问权限 |
| **admin:org_hook** | 授予对组织级别 Hooks 的完全访问权限 |
| **admin:user_hook** | 授予对用户级别 Hooks 的完全访问权限 |
| **admin:org_hook** | 授予对組織级别 Hooks 的完全访问权限 |
| **admin:user_hook** | 授予对使用者级别 Hooks 的完全访问权限 |
| **notification** | 授予对通知的完全访问权限 |
| **user** | 授予对用户个人资料信息的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **read:user** | 授予对用户个人资料的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:email** | 授予对用户电子邮件地址的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:follow** | 授予访问权限以关注/取消关注用户 |
| **delete_repo** | 授予删除存库的权限 |
| **user** | 授予对使用者个人资料信息的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **read:user** | 授予对使用者个人资料的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:email** | 授予对使用者电子邮件地址的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:follow** | 授予访问权限以关注/取消关注使用者 |
| **delete_repo** | 授予删除存库的权限 |
| **package** | 授予对托管包的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:package** | 授予对包的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:package** | 授予对包的读取权限 |
@@ -63,38 +63,38 @@ Gitea 支持以下令牌范围:
| **admin:gpg_key** | 授予 GPG 密钥管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:gpg_key** | 授予对 GPG 密钥的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:gpg_key** | 授予对 GPG 密钥的只读访问权限 |
| **admin:application** | 授予用程序管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:application** | 授予用程序管理的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:application** | 授予用程序管理的读取权限 |
| **sudo** | 允许以站点管理员身份行操作 |
| **admin:application** | 授予用程序管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:application** | 授予用程序管理的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:application** | 授予用程序管理的读取权限 |
| **sudo** | 允许以站点管理员身份行操作 |
## 客户端
## 客户端
Gitea 支持私密和公共客户端型,[参见 RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).
Gitea 支持私密和公共客户端型,[参见 RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).
对于公共客户端, 允许在本地回环地址的重定向 URI 中使用任意端口,例如 `http://127.0.0.1/`。根据 [RFC 8252 的建议](https://datatracker.ietf.org/doc/html/rfc8252#section-8.3)避免使用 `localhost`
對於公共客户端, 允许在本地回环地址的重定向 URI 中使用任意端口,例如 `http://127.0.0.1/`。根据 [RFC 8252 的建议](https://datatracker.ietf.org/doc/html/rfc8252#section-8.3)避免使用 `localhost`
## 示例
**注意:** 示例中尚未使用 PKCE。
**注意:** 示例中尚未使用 PKCE。
1.用户重定向到授权端点,以获得他们的访问资源授权:
1.使用者重定向到授权端点,以获得他们的访问资源授权:
```curl
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE
```
在设置中注册用程序以获得 `CLIENT_ID`。`STATE` 是一个随机字符串,它将在获得用户授权后发送回您的用程序。`state` 参数是可的,但您应该使用它来防止 CSRF 攻
在设置中注册用程序以获得 `CLIENT_ID`。`STATE` 是一个随机字符串,它将在获得使用者授权后发送回您的用程序。`state` 參數是可的,但您應該使用它来防止 CSRF 攻
![Authorization Page](/authorize.png)
用户将会被询问是否授权给您的用程序。如果他们同意了授权,用户将会被重定向到 `REDIRECT_URL`,例如:
使用者将会被询问是否授权给您的用程序。如果他们同意了授权,使用者将会被重定向到 `REDIRECT_URL`,例如:
```curl
https://[REDIRECT_URI]?code=RETURNED_CODE&state=STATE
```
2. 使用重定向提供的 `code`,您可以求一个新的用程序和 Refresh Token。Access Token Endpoint 接受 `application/json` 或 `application/x-www-form-urlencoded` 型的 POST 求,例如:
2. 使用重定向提供的 `code`,您可以求一个新的用程序和 Refresh Token。Access Token Endpoint 接受 `application/json` 或 `application/x-www-form-urlencoded` 型的 POST 求,例如:
```curl
POST https://[YOUR-GITEA-URL]/login/oauth/access_token
@@ -121,8 +121,8 @@ Gitea 支持私密和公共客户端类型,[参见 RFC 6749](https://datatrack
}
```
`CLIENT_SECRET` 是生成给用程序的唯一密钥。注意,密钥只会在您使用 Gitea 建/注册用程序后出一次。如果您丢失了密钥,您必须在应用程序设置中重新生成密钥。
`CLIENT_SECRET` 是生成给用程序的唯一密钥。注意,密钥只会在您使用 Gitea 建/注册用程序后出一次。如果您丢失了密钥,您必須在應用程序设置中重新生成密钥。
`access_token` 求中的 `REDIRECT_URI` 必与 `authorize` 求中的 `REDIRECT_URI` 相符。
`access_token` 求中的 `REDIRECT_URI` 必与 `authorize` 求中的 `REDIRECT_URI` 相符。
3. 使用 `access_token` 来构造 [API ](development/api-usage.md#oauth2-provider) 以读写用户的资源。
3. 使用 `access_token` 来构造 [API ](development/api-usage.md#oauth2-provider) 以读写使用者的资源。

View File

@@ -10,23 +10,23 @@ aliases:
本页面包含一些常见问题和答案。
有关更多帮助资源,查看所有[支持](help/support.md)。
有关更多帮助资源,查看所有[支持](help/support.md)。
## 1.x 和 1.x.x 下载之间的区别
以 1.7.x 版本例。
以 1.7.x 版本例。
**注意:**此示例也适用于 Docker 镜像!
在我们的[下载页面](https://dl.gitea.com/gitea/)上,您会看到一个 1.7 目,以及 1.7.0、1.7.1、1.7.2、1.7.3、1.7.4、1.7.5 和 1.7.6 的目
在我们的[下载页面](https://dl.gitea.com/gitea/)上,您会看到一个 1.7 目,以及 1.7.0、1.7.1、1.7.2、1.7.3、1.7.4、1.7.5 和 1.7.6 的目
1.7 目和 1.7.0 目是**不同**的。1.7 目是在每个合到[`release/v1.7`](https://github.com/go-gitea/gitea/tree/release/v1.7)分支的提交上构建的。
1.7 目和 1.7.0 目是**不同**的。1.7 目是在每个合到[`release/v1.7`](https://github.com/go-gitea/gitea/tree/release/v1.7)分支的提交上构建的。
然而1.7.0 目是在建[`v1.7.0`](https://github.com/go-gitea/gitea/releases/tag/v1.7.0)标签时创建的构建。
然而1.7.0 目是在建[`v1.7.0`](https://github.com/go-gitea/gitea/releases/tag/v1.7.0)標籤时建立的构建。
这意味着 1.x 的下载会随着提交合到各自的分支而改变(将其视每个版本的独的“main”分支
这意味着 1.x 的下载会随着提交合到各自的分支而改变(将其视每个版本的独的“main”分支
另一方面1.x.x 的下载应该永远不会改变。
另一方面1.x.x 的下载應該永远不会改变。
## 如何从 Gogs/GitHub 等迁移到 Gitea
@@ -34,9 +34,9 @@ aliases:
- [Gogs 版本 0.11.46.0418](https://github.com/go-gitea/gitea/issues/4286)
要从 GitHub 迁移到 Gitea您可以使用 Gitea 内置的迁移表
要从 GitHub 迁移到 Gitea您可以使用 Gitea 内置的迁移表
了迁移诸如问题、拉取求等项目,您需要至少输入您的用户名。
了迁移诸如问题、拉取求等项目,您需要至少输入您的使用者名。
[Example (requires login)](https://demo.gitea.com/repo/migrate)
@@ -44,13 +44,13 @@ aliases:
https://github.com/loganinak/MigrateGitlabToGogs
## Gitea 存文件的位置
## Gitea 存文件的位置
- _`AppWorkPath`_
- `--work-path`标志
- 或者环境变量`GITEA_WORK_DIR`
- 或者在构建时设置的内置值
- 或者包含 Gitea 二制文件的目
- 或者包含 Gitea 二制文件的目
- `%(APP_DATA_PATH)`(数据库、索引器等的默认路径)
- `app.ini`中的`APP_DATA_PATH`
- 或者*`AppWorkPath`*`/data`
@@ -65,7 +65,7 @@ https://github.com/loganinak/MigrateGitlabToGogs
- RepoRootPath
- `app.ini`中\[repository]部分的`ROOT`(如果是绝对路径)
- 否则*`AppWorkPath`*`/ROOT`(如果`app.ini`中\[repository]部分的`ROOT`是相对路径)
- 默认值`%(APP_DATA_PATH)/gitea-repositories`
- 默认值`%(APP_DATA_PATH)/gitea-repositories`
- INI配置文件
- `--config`标志
- 或者在构建时设置的可能内置值
@@ -78,63 +78,63 @@ https://github.com/loganinak/MigrateGitlabToGogs
有几个地方可能会导致显示不正确。
1. 如果使用反向代理,确保按照[反向代理指南](../administration/reverse-proxies.md)中的正确说明行设置。
1. 如果使用反向代理,确保按照[反向代理指南](../administration/reverse-proxies.md)中的正确说明行设置。
2. 确保在`app.ini``server`部分中正确设置了`ROOT_URL`
如果某些克隆项未显示HTTP/S 或 SSH可以在`app.ini中`
如果某些克隆项未显示HTTP/S 或 SSH可以在`app.ini中`
- `DISABLE_HTTP_GIT`: 如果设 true, 将会没有 HTTP/HTTPS 链接
- `DISABLE_SSH`: 如果设 true, 将会没有 SSH 链接
- `SSH_EXPOSE_ANONYMOUS`: 如果设 false, SSH 链接将会对匿名用户隐藏
- `DISABLE_HTTP_GIT`: 如果设 true, 将会没有 HTTP/HTTPS 链接
- `DISABLE_SSH`: 如果设 true, 将会没有 SSH 链接
- `SSH_EXPOSE_ANONYMOUS`: 如果设 false, SSH 链接将会对匿名使用者隐藏
## 文件上传失败413 Request Entity Too Large
当反向代理限制文件上传大小时,会出此错误。
当反向代理限制文件上传大小时,会出此错误。
有关使用 nginx 解决此问题,参阅[反向代理指南](../administration/reverse-proxies.md)。
有关使用 nginx 解决此问题,参阅[反向代理指南](../administration/reverse-proxies.md)。
## 自定义模板法加载或运行错误
## 自定义模板法加载或运行错误
Gitea 的自定义模板必将其添加到正确的位置,否则 Gitea 将法找到使用自定义模板。
Gitea 的自定义模板必将其添加到正确的位置,否则 Gitea 将法找到使用自定义模板。
模板的正确路径应该相对于`CustomPath`
模板的正确路径應該相對於`CustomPath`
1. 要找到`CustomPath`在站点管理 -> 配置 中查找自定义文件根路径。
1. 要找到`CustomPath`在站点管理 -> 配置 中查找自定义文件根路径。
如果找不到,尝试`echo $GITEA_CUSTOM`
如果找不到,尝试`echo $GITEA_CUSTOM`
2. 如果仍然找不到,默认值可以被[计算](faq.md#Gitea存文件的位置)
2. 如果仍然找不到,默认值可以被[计算](faq.md#Gitea存文件的位置)
3. 如果仍然找不到路径,则可以参考[自定义 Gitea](../administration/customizing-gitea.md)页面,将模板添加到正确的位置。
## Gitea 是否有"GitHub/GitLab Pages"功能?
Gitea 不提供内置的 Pages 服务器。您需要一个专用的域名来提供静态页面,以避免 CSRF 安全风险。
对于简单的用法,您可以使用反向代理来重写和提供 Gitea 的原始文件 URL 中的静态内容。
對於简單的用法,您可以使用反向代理来重写和提供 Gitea 的原始文件 URL 中的静态内容。
有一些已经可用的第三方服务,比如独立[pages server](https://codeberg.org/Codeberg/pages-server)的或[caddy plugin](https://github.com/42wim/caddy-gitea),可以提供所需的功能。
有一些已经可用的第三方服务,比如独立[pages server](https://codeberg.org/Codeberg/pages-server)的或[caddy plugin](https://github.com/42wim/caddy-gitea),可以提供所需的功能。
## 活跃用户与禁止登录用户
## 活跃使用者与禁止登入使用者
在 Gitea 中,"活跃用户"是指通电子邮件激活其帐户的用户
在 Gitea 中,"活跃使用者"是指通电子邮件激活其帳戶的使用者
"禁止登录用户"是指不允许再登到 Gitea 的用户
"禁止登入使用者"是指不允许再登到 Gitea 的使用者
## 设置日志记录
- [官方文](../administration/logging-config.md)
- [官方文](../administration/logging-config.md)
## 什么是 Swagger
[Swagger](https://swagger.io/) 是 Gitea 用于其 API 文的工具。
[Swagger](https://swagger.io/) 是 Gitea 用于其 API 文的工具。
所有 Gitea 实例都有内置的 API法完全禁用它。
但是,您可以在 app.ini 的 api 部分将 ENABLE_SWAGGER 设置 false以禁用其文显示。
有关更多信息,参阅 Gitea 的[API 文](development/api-usage.md)。
所有 Gitea 实例都有内置的 API法完全禁用它。
但是,您可以在 app.ini 的 api 部分将 ENABLE_SWAGGER 设置 false以禁用其文显示。
有关更多信息,参阅 Gitea 的[API 文](development/api-usage.md)。
您可以在上查看最新的 API例如https://gitea.com/api/swagger
可以在上查看`swagger.json`文件的示例 https://gitea.com/swagger.v1.json
可以在上查看`swagger.json`文件的示例 https://gitea.com/swagger.v1.json
## 调整服务器用于公共/私有使用
@@ -142,88 +142,88 @@ Gitea 不提供内置的 Pages 服务器。您需要一个专用的域名来提
有多种方法可以组合使用来防止垃圾邮件发送者:
1.设置电子邮件域名的白名或黑名
2.设置一些域名或者 OpenID 白名(见下文)。
3. 在您的`app.ini`中将`ENABLE_CAPTCHA`设置`true`正确配置`RECAPTCHA_SECRET``RECAPTCHA_SITEKEY`
4.`DISABLE_REGISTRATION`设置`true`并通过 [CLI](../administration/command-line.md)、[API](development/api-usage.md) 或 Gitea 的管理界面创建新用户
1.设置电子邮件域名的白名或黑名
2.设置一些域名或者 OpenID 白名(见下文)。
3. 在您的`app.ini`中将`ENABLE_CAPTCHA`设置`true`正确配置`RECAPTCHA_SECRET``RECAPTCHA_SITEKEY`
4.`DISABLE_REGISTRATION`设置`true`並通過 [CLI](../administration/command-line.md)、[API](development/api-usage.md) 或 Gitea 的管理界面建立新使用者
### 允许/阻止特定的电子邮件域名
### 允许/阻止特定的电子邮件域名
您可以在`app.ini`中的`[service]`下的配置`EMAIL_DOMAIN_WHITELIST``EMAIL_DOMAIN_BLOCKLIST`
### 允许/阻止特定的 OpenID 提供商
### 允许/阻止特定的 OpenID 提供商
您可以在`app.ini``[openid]`下配置`WHITELISTED_URI``BLACKLISTED_URIS`
**注意** 白名优先,如果白名非空,则忽略黑名
**注意** 白名优先,如果白名非空,则忽略黑名
### 允许发布问题的用户
### 允许發佈问题的使用者
目前实这一点的方法是建/修改一个具有最大仓库创建限制 0 的用户
目前实这一点的方法是建/修改一个具有最大存放庫建立限制 0 的使用者
### 受限制的用户
### 受限制的使用者
受限制的用户仅能访问其组织/团队成员和协作所在的内容的子集,而忽略组织/仓库等的公共标志。
受限制的使用者僅能访问其組織/团队成员和协作所在的内容的子集,而忽略組織/存放庫等的公共标志。
示例用例:一个公司运行一个需要登的 Gitea 实例。大多数仓库是公开的(所有同事都可以访问/浏览)。
示例用例:一个公司运行一个需要登的 Gitea 实例。大多数存放庫是公开的(所有同事都可以访问/浏览)。
在某些情况下,某个客户或第三方需要访问特定的仓库,并且只能访问该仓库。通将此类客户帐户设置受限制帐户,并使用团队成员身份和/或协作来授予所需的任何访问权限,可以简地实这一点,而需使所有内容都变私有。
在某些情况下,某个客户或第三方需要访问特定的存放庫,並且只能访问該存放庫。通将此类客户帳戶设置受限制帳戶,並使用团队成员身份和/或协作来授予所需的任何访问权限,可以简地实这一点,而需使所有内容都变私有。
### 启用 Fail2ban
使用 [Fail2Ban](../administration/fail2ban-setup.md) 监视阻止基于日志模式的自动登尝试或其他恶意行
使用 [Fail2Ban](../administration/fail2ban-setup.md) 监视阻止基于日志模式的自动登尝试或其他恶意行
## SSHD vs 内建 SSH
SSHD 是大多数 Unix 系统上内建的 SSH 服务器。
Gitea 提供了自己的 SSH 服务器,用于在 SSHD 不可用时使用。
Gitea 提供了自己的 SSH 服务器,用于在 SSHD 不可用时使用。
## Gitea 运行缓慢
导致此问题的最常见原因是加载联合头像。
您可以通`app.ini`中将`ENABLE_FEDERATED_AVATAR`设置`false`来关闭此功能。
您可以通`app.ini`中将`ENABLE_FEDERATED_AVATAR`设置`false`来关闭此功能。
有一个可能需要更改的项是在`app.ini`中将`DISABLE_GRAVATAR`设置`true`
有一个可能需要更改的项是在`app.ini`中将`DISABLE_GRAVATAR`设置`true`
## 无法创建仓库/文件
## 無法建立存放庫/文件
确保 Gitea 具有足够的权限来写入其主目和数据目
确保 Gitea 具有足够的权限来写入其主目和数据目
参见[AppDataPath 和 RepoRootPath](faq.md#Gitea存文件的位置)
参见[AppDataPath 和 RepoRootPath](faq.md#Gitea存文件的位置)
**适用于 Arch 用户的注意事项:**在撰写本文时Arch 软件包的 systemd 文件包含了以下行:
**适用于 Arch 使用者的注意事项:**在撰写本文时Arch 軟體包的 systemd 文件包含了以下行:
`ReadWritePaths=/etc/gitea/app.ini`
这将使得 Gitea 法写入其他路径。
这将使得 Gitea 法写入其他路径。
## 翻译不正确/如何添加更多翻译
我们当前的翻译是在我们的[Crowdin 项目](https://crowdin.com/project/gitea)上众包行的
我们当前的翻译是在我们的[Crowdin 项目](https://crowdin.com/project/gitea)上众包行的
论您想要更改翻译是添加新的翻译,都需要在 Crowdin 集成中行,因所有翻译都会被 CI 覆盖。
论您想要更改翻译是添加新的翻译,都需要在 Crowdin 集成中行,因所有翻译都会被 CI 覆盖。
## 推送钩子/ Webhook / Actions 未运行
如果您可以推送但法在主页仪表板上看到推送活动,或者推送不触发 Webhook 和 Actions可能是 git 钩子不工作而导致的。
如果您可以推送但法在主页仪表板上看到推送活动,或者推送不触发 Webhook 和 Actions可能是 git 钩子不工作而导致的。
这可能是由于以下原因:
1. Git 钩子不同步:在站点管理面板上运行“重新同步所有仓库的 pre-receive、update 和 post-receive 钩子”
2. Git 仓库(和钩子)存在一些不支持脚本行的文件系统上(例如由 NAS 挂载),确保文件系统支持`chmod a+x any-script`
3. 如果您使用的是 Docker确保 Docker Server而不是客户端的版本 >= 20.10.6
1. Git 钩子不同步:在站点管理面板上运行“重新同步所有存放庫的 pre-receive、update 和 post-receive 钩子”
2. Git 存放庫(和钩子)存在一些不支持脚本行的文件系统上(例如由 NAS 挂载),确保文件系统支持`chmod a+x any-script`
3. 如果您使用的是 Docker确保 Docker Server而不是客户端的版本 >= 20.10.6
## SSH 问题
如果法通`ssh`访问仓库,但`https`正常工作,考虑以下情况。
如果法通`ssh`访问存放庫,但`https`正常工作,考虑以下情况。
首先,确保您可以通 SSH 访问 Gitea。
首先,确保您可以通 SSH 访问 Gitea。
`ssh git@myremote.example`
如果连接成功,您应该会收到以下错误消息:
如果连接成功,您應該会收到以下错误消息:
```
Hi there, You've successfully authenticated, but Gitea does not provide shell access.
@@ -232,7 +232,7 @@ If this is unexpected, please log in with password and setup Gitea under another
如果您收到以上消息但仍然连接成功,这意味着您的 SSH 密钥**没有**由 Gitea 管理。这意味着钩子不会运行,在其他一些潜在问题中也包括在内。
如果您法连接,可能是因您的 SSH 密钥在本地配置不正确。
如果您法连接,可能是因您的 SSH 密钥在本地配置不正确。
这是针对 SSH 而不是 Gitea 的问题,因此在此不涉及。
### SSH 常见错误
@@ -242,30 +242,30 @@ Permission denied (publickey).
fatal: Could not read from remote repository.
```
此错误表示服务器拒绝登尝试,
检查以下事项:
此错误表示服务器拒绝登尝试,
检查以下事项:
- 在客户端:
- 确保公钥和私钥已添加到正确的 Gitea 用户
- 确保远程 URL 中没有任何问题。特别是,确保 ∂
Git 用户@ 之前的部分)的名拼写正确。
- 确保客户端机器上的公钥和私钥正确误。
- 确保公钥和私钥已添加到正确的 Gitea 使用者
- 确保远程 URL 中没有任何问题。特别是,确保 ∂
Git 使用者@ 之前的部分)的名拼写正确。
- 确保客户端机器上的公钥和私钥正确误。
- 在服务器上:
- 确保存库存在且命名正确。
- 检查系统用户主目中的 `.ssh`的权限。
- 验证正确的公钥是否已添加到 `.ssh/authorized_keys` 中。
- 确保存库存在且命名正确。
- 检查系统使用者主目中的 `.ssh`的权限。
- 驗證正确的公钥是否已添加到 `.ssh/authorized_keys` 中。
尝试在 Gitea 管理面板上运行
`Rewrite '.ssh/authorized_keys' file (for Gitea SSH keys)`
- 查看 Gitea 日志。
- 查看 /var/log/auth或类似的文件
- 检查存库的权限。
- 检查存库的权限。
以下是一个示例,其中缺少公共 SSH 密钥,
认证成功,但是其他设置导致 SSH 法访问正确的
库。
認證成功,但是其他设置导致 SSH 法访问正确的
库。
```
fatal: Could not read from remote repository.
@@ -274,26 +274,26 @@ Please make sure you have the correct access rights
and the repository exists.
```
在这种情况下,检查以下设置:
在这种情况下,检查以下设置:
- 在服务器上:
- 确保`git`系统用户设置了可用的 shell
- 使用`getent passwd git | cut -d: -f7`进行验证
- 可以使用`usermod``chsh`行修改。
- 确保`git`系统使用者设置了可用的 shell
- 使用`getent passwd git | cut -d: -f7`進行驗證
- 可以使用`usermod``chsh`行修改。
- 确保`.ssh/authorized_keys`中的`gitea serv`命令使用
正确的配置文件。
## 迁移带有标签的存库后缺失发布版本
## 迁移带有標籤的存库后缺失發佈版本
要迁移带有所有标签的存库,您需要行两个操作:
要迁移带有所有標籤的存库,您需要行两个操作:
- 推送标签到存库:
- 推送標籤到存库:
```
git push --tags
```
- 在 Gitea 中重新同步所有存库的标签
- 在 Gitea 中重新同步所有存库的標籤
```
gitea admin repo-sync-releases
@@ -311,59 +311,59 @@ error: failed to push some refs to '<GIT_REPO_URL>'
检查`app.ini`文件中的`LFS_HTTP_AUTH_EXPIRY`值。
默认情况下LFS 令牌在 20 分钟后期。如果您的连接速度较慢或文件较大(或两者都是),可能法在时间限制内完成上传。
默认情况下LFS 令牌在 20 分钟后期。如果您的连接速度较慢或文件较大(或两者都是),可能法在时间限制内完成上传。
您可以将此值设置`60m``120m`
您可以将此值设置`60m``120m`
## 如何在启动 Gitea 之前创建用户
## 如何在启动 Gitea 之前建立使用者
Gitea 提供了一个子命令`gitea migrate`来初始化数据库,然后您可以使用[管理 CLI 命令](../administration/command-line.md#admin)像正常情况下添加用户
Gitea 提供了一个子命令`gitea migrate`来初始化数据库,然后您可以使用[管理 CLI 命令](../administration/command-line.md#admin)像正常情况下添加使用者
## 如何启用密重置
## 如何启用密重置
没有密重置的设置。当配置了[邮件服务](../administration/email-setup.md)时,密重置将自动启用;否则将被禁用。
没有密重置的设置。当配置了[邮件服务](../administration/email-setup.md)时,密重置将自动启用;否则将被禁用。
## 如何更改用户的密
## 如何更改使用者的密
-管理员,您可以更改任何用户的密码(并可选择强制其在下次登时更改密...
- 转到您的`站点管理 -> 用户账户`页面编辑用户
-管理员,您可以更改任何使用者的密碼(並可選择强制其在下次登时更改密...
- 转到您的`站点管理 -> 使用者账户`页面编辑使用者
- 使用[管理 CLI 命令](../administration/command-line.md#admin)。
注意,大多数命令需要一个[全局标志](../administration/command-line.md#全局)来指向正确的配置。
注意,大多数命令需要一个[全局标志](../administration/command-line.md#全局)来指向正确的配置。
-**用户**,您可以更改密...
-**使用者**,您可以更改密...
- 在您的账户的`设置 -> 账户`页面(此方法**需要**您知道当前密)。
- 使用`忘记密`链接。
- 在您的账户的`设置 -> 账户`页面(此方法**需要**您知道当前密)。
- 使用`忘记密`链接。
如果`忘记密/账户恢复`页面被禁用,联系管理员配置[邮件服务](../administration/email-setup.md)。
如果`忘记密/账户恢复`页面被禁用,联系管理员配置[邮件服务](../administration/email-setup.md)。
## 什么我的 Markdown 显示错误
## 什么我的 Markdown 显示错误
在 Gitea 版本 `1.11` 中,我们转换使用[goldmark](https://github.com/yuin/goldmark)行 Markdown 渲染,它符合[CommonMark](https://commonmark.org/)标准。
在 Gitea 版本 `1.11` 中,我们转换使用[goldmark](https://github.com/yuin/goldmark)行 Markdown 渲染,它符合[CommonMark](https://commonmark.org/)标准。
如果您在版本`1.11`之前的 Markdown 正常工作,但在升级后法正常工作,仔细阅读 CommonMark 规范,看看问题是由错误是非兼容的语法引起的。
如果您在版本`1.11`之前的 Markdown 正常工作,但在升级后法正常工作,仔细阅读 CommonMark 规范,看看问题是由错误是非兼容的语法引起的。
如果是后者,通常规范中会列出一种符合标准的替代方法。
## 使用 MySQL 行升级时出的错误
## 使用 MySQL 行升级时出的错误
如果在使用 MySQL 升级 Gitea 时收到以下错误:
> `ORM engine initialization failed: migrate: do migrate: Error: 1118: Row size too large...`
运行 `gitea doctor convert` 或对数据库中的每个表运行 `ALTER TABLE table_name ROW_FORMAT=dynamic;`
运行 `gitea doctor convert` 或对数据库中的每个表运行 `ALTER TABLE table_name ROW_FORMAT=dynamic;`
潜在问题是默认行格式分配给每个表的索引空间
太小。Gitea 要求其表的`ROWFORMAT``DYNAMIC`
太小。Gitea 要求其表的`ROWFORMAT``DYNAMIC`
如果收到包含`Error 1071: Specified key was too long; max key length is 1000 bytes...`
的错误行,则表示您正在尝试在使用 ISAM 引擎的表上运行 Gitea。尽管在先前版本的 Gitea 中可能是凑巧能够工作的,但它从未得到官方支持,
您必使用 InnoDB。您应该对数据库中的每个表运行`ALTER TABLE table_name ENGINE=InnoDB;`
您必使用 InnoDB。您應該对数据库中的每个表运行`ALTER TABLE table_name ENGINE=InnoDB;`
## 什么 Emoji 只显示占位符或色图像
## 什么 Emoji 只显示占位符或色图像
Gitea 需要系统或浏览器安其中一个受支持的 Emoji 字,例如 Apple Color Emoji、Segoe UI Emoji、Segoe UI Symbol、Noto Color Emoji 和 Twemoji Mozilla。通常操作系统应该已经提供了其中一个字,但特别是在 Linux 上,可能需要手动安它们。
Gitea 需要系统或浏览器安其中一个受支持的 Emoji 字,例如 Apple Color Emoji、Segoe UI Emoji、Segoe UI Symbol、Noto Color Emoji 和 Twemoji Mozilla。通常操作系统應該已经提供了其中一个字,但特别是在 Linux 上,可能需要手动安它们。
## SystemD 和 Docker 上的标准输出日志
@@ -371,43 +371,43 @@ SystemD 上的标准输出默认会写入日志记录中。您可以尝试使用
类似地Docker 上的标准输出可以使用`docker logs <container>`来查看。
要收集日志以行帮助和问题报告,参阅[支持](help/support.md)。
要收集日志以行帮助和问题报告,参阅[支持](help/support.md)。
## 初始日志记录
在 Gitea 读取配置文件设置其日志记录之前,它会将一些内容记录到标准输出,以帮助调试日志记录法工作的情况。
在 Gitea 读取配置文件设置其日志记录之前,它会将一些内容记录到标准输出,以帮助调试日志记录法工作的情况。
您可以通设置`--quiet``-q`项来停止此日志记录。注意,这只会在 Gitea 设置自己的日志记录之前停止日志记录。
您可以通设置`--quiet``-q`项来停止此日志记录。注意,这只会在 Gitea 设置自己的日志记录之前停止日志记录。
如果您报告了错误或问题,必提供这些信息以恢复初始日志记录。
如果您报告了错误或问题,必提供这些信息以恢复初始日志记录。
只有在完全配置了所有内容之后,您才应该设置此项。
只有在完全配置了所有内容之后,您才應該设置此项。
## 在数据库启动期间出有关结构默认值的警告
## 在数据库启动期间出有关结构默认值的警告
有时,在迁移程中,旧列和默认值可能在数据库架构中保持不变。
有时,在迁移程中,旧列和默认值可能在数据库架构中保持不变。
这可能会导致警告,例如:
```
2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0
```
可以安全地忽略这些警告,但您可以通让 Gitea 重新建这些表来停止这些警告,使用以下命令:
可以安全地忽略这些警告,但您可以通让 Gitea 重新建这些表来停止这些警告,使用以下命令:
```
gitea doctor recreate-table user
```
这将导致 Gitea 重新创建用户表并将旧数据复制到新表中,
正确设置默认值。
这将导致 Gitea 重新建立使用者表並将旧数据复制到新表中,
正确设置默认值。
您可以使用以下命令要求 Gitea 重新建多个表:
您可以使用以下命令要求 Gitea 重新建多个表:
```
gitea doctor recreate-table table1 table2 ...
```
如果您希望 Gitea 重新建所有表,使用以下命令:
如果您希望 Gitea 重新建所有表,使用以下命令:
```
gitea doctor recreate-table
@@ -415,19 +415,19 @@ gitea doctor recreate-table
在运行这些命令之前,强烈建议您备份数据库。
## 什么查看文件时制表符/缩显示错误
## 什么查看文件时制表符/缩显示错误
如果您正在使用 Cloudflare在仪表板中关闭自动缩小项。
如果您正在使用 Cloudflare在仪表板中关闭自动缩小项。
`Speed` -> `Optimization` -> 在 `Auto-Minify` 设置中取消`HTML`
`Speed` -> `Optimization` -> 在 `Auto-Minify` 设置中取消`HTML`
## 如何从磁盘采用存
## 如何从硬碟采用存
- 将您的(裸)存库添加到正确的位置,即您的配置所在的地方(`repository.ROOT`),确保它们位于正确的布局`<REPO_ROOT>/[user]/[repo].git`
- **注意:**目名必须为小写。
-可以在`<ROOT_URL>/admin/config`中检查存库根路径。
- 确保存在要采用存库的用户/组织
-管理员,转到`<ROOT_URL>/admin/repos/unadopted`搜索。
- 用户也可以通配置[`ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`](../administration/config-cheat-sheet.md#仓库) 获得类似的权限。
- 如果上述步骤都正确行,您应该能够择要采用的存库。
- 如果没有找到存库,启用[调试日志记录](../administration/config-cheat-sheet.md#仓库)以检查是否有特定错误。
- 将您的(裸)存库添加到正确的位置,即您的配置所在的地方(`repository.ROOT`),确保它们位于正确的布局`<REPO_ROOT>/[user]/[repo].git`
- **注意:**目名必須為小写。
-可以在`<ROOT_URL>/admin/config`中检查存库根路径。
- 确保存在要采用存库的使用者/組織
-管理员,转到`<ROOT_URL>/admin/repos/unadopted`搜索。
- 使用者也可以通配置[`ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`](../administration/config-cheat-sheet.md#存放庫) 获得类似的权限。
- 如果上述步骤都正确行,您應該能够择要采用的存库。
- 如果没有找到存库,启用[调试日志记录](../administration/config-cheat-sheet.md#存放庫)以检查是否有特定错误。

View File

@@ -6,45 +6,45 @@ aliases:
- /zh-tw/seek-help
---
# 支持
# 支持
- [付费商业支持](https://about.gitea.com/)
- [Discord](https://discord.gg/Gitea)
- [论坛](https://forum.gitea.com/)
- [Matrix](https://matrix.to/#/#gitea-space:matrix.org)
- 注意:大多数 Matrix 频道都与 Discord 中的对频道桥接,可能在桥接程中会出一定程度的不稳定性。
- 注意:大多数 Matrix 频道都与 Discord 中的对频道桥接,可能在桥接程中会出一定程度的不稳定性。
- 中文支持
- [Discourse 中文分类](https://forum.gitea.com/c/5-category/5)
- QQ 群 328432459
# Bug 报告
如果您发了 Bug在 GitHub 上 [建一个问题](https://github.com/go-gitea/gitea/issues)。
如果您发了 Bug在 GitHub 上 [一个问题](https://github.com/go-gitea/gitea/issues)。
**注意:**求支持时,可能需要准备以下信息,以便帮助者获得所需的所有信息:
**注意:**求支持时,可能需要准备以下信息,以便帮助者获得所需的所有信息:
1. 您的 `app.ini`(将任何敏感数据行必要的清除)。
1. 您的 `app.ini`(将任何敏感数据行必要的清除)。
2. 您看到的任何错误消息。
3. Gitea 日志以及与情况相关的所有其他日志。
- 收集 `trace` / `debug` 级别的日志更有用(参见下一节)。
- 在使用 systemd 时,使用 `journalctl --lines 1000 --unit gitea` 收集日志。
- 在使用 Docker 时,使用 `docker logs --tail 1000 <gitea-container>` 收集日志。
4. 可重的步骤,以便他人能够更快速、更容易地重和理解问题。
- [demo.gitea.com](https://demo.gitea.com) 可用于重问题。
5. 如果遇到慢速/挂起/死锁等问题,在出问题时报告堆栈跟踪。
4. 可重的步骤,以便他人能够更快速、更容易地重和理解问题。
- [demo.gitea.com](https://demo.gitea.com) 可用于重问题。
5. 如果遇到慢速/挂起/死锁等问题,在出问题时报告堆栈跟踪。
转到 "Site Admin" -> "Monitoring" -> "Stacktrace" -> "Download diagnosis report"。
# 高级 Bug 报告提示
## 更多日志的配置
## 更多日志的配置
默认情况下,日志以 `info` 级别输出到控制台。
如果您需要设置日志级别和/或从文件中收集日志,
您只需将以下配置复制到您的 `app.ini` 中(删除所有其他 `[log]` 部分),
然后您将在 Gitea 的日志目中找到 `*.log` 文件(默认 `%(GITEA_WORK_DIR)/log`)。
然后您将在 Gitea 的日志目中找到 `*.log` 文件(默认 `%(GITEA_WORK_DIR)/log`)。
```ini
; 要显示所有 SQL 日志,您可以在 [database] 部分中设置 LOG_SQL=true
; 要显示所有 SQL 日志,您可以在 [database] 部分中设置 LOG_SQL=true
[log]
LEVEL=debug
MODE=console,file
@@ -54,7 +54,7 @@ MODE=console,file
Gitea 可以使用 Golang 的 pprof 处理程序和工具链来收集堆栈跟踪和其他运行时信息。
如果 Web UI 停止工作,您可以尝试通命令行收集堆栈跟踪:
如果 Web UI 停止工作,您可以尝试通命令行收集堆栈跟踪:
1. 设置 app.ini
@@ -65,5 +65,5 @@ Gitea 可以使用 Golang 的 pprof 处理程序和工具链来收集堆栈跟
2. 重新启动 Gitea
3. 尝试触发 bug求卡住一段时间,使用或浏览器访问:获取堆栈跟踪。
3. 尝试触发 bug求卡住一段时间,使用或浏览器访问:获取堆栈跟踪。
`curl http://127.0.0.1:6060/debug/pprof/goroutine?debug=1`

View File

@@ -10,7 +10,7 @@ aliases:
这里列出了 Gitea 与其它一些 Git 托管工具之间的异同,以便确认 Gitea 是否能够满足您的需求。
注意,此列表中的某些表项可能已经时,因我们没有定期检查其它产品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 来帮助我们更新时的内容,感谢!
注意,此列表中的某些表项可能已经时,因我们没有定期检查其它产品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 来帮助我们更新时的内容,感谢!
_表格中的符号含义:_
@@ -35,9 +35,9 @@ _表格中的符号含义:_
| 支持第三方渲染工具 | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | ? |
| WebAuthn (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
| 扩展 API | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 内置软件包/容器注册中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 同步提交到外部仓库 (push mirror) | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 同步外部仓库的提交 (pull mirror) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ? |
| 内置軟體包/容器注册中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 同步提交到外部存放庫 (push mirror) | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 同步外部存放庫的提交 (pull mirror) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ? |
| 浅色和深色主题 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ? |
| 自定义主题支持 | ✓ | ✓ | ✘ | ✘ | ✘ | ✓ | ✘ |
| 支持 Markdown | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@@ -45,10 +45,10 @@ _表格中的符号含义:_
| Git 驱动的静态 pages | [⚙️][gitea-pages-server], [⚙️][gitea-caddy-plugin] | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Git 驱动的集成化 wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 部署令牌 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 仓库写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| RSS Feeds | ✓ | ✘ | ✓ | ✘ | ✘ | ✘ | ✘ |
| 内置 CI/CD | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 子组织:组织内的组织 | [](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 子組織:組織内的組織 | [](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 多实例交互 | [/](https://github.com/go-gitea/gitea/issues/18240) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| Markdown 绘图 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Markdown 数学公式 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
@@ -57,47 +57,47 @@ _表格中的符号含义:_
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------- | --------------------------------------------------- | ---- | --------- | --------- | --------- | --------- | ------------ |
| 仓库主题描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 仓库内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫主题描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 存放庫内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 全局代码搜索 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ |
| Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 组织里程碑 | [](https://github.com/go-gitea/gitea/issues/14622) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 细粒度用户角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 提交人的身份验证 | | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
| 組織里程碑 | [](https://github.com/go-gitea/gitea/issues/14622) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 细粒度使用者角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 提交人的身份驗證 | | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
| GPG 签名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SSH 签名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ? |
| 拒绝未通过验证的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部仓库迁移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 仓库活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 拒绝未通過驗證的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部存放庫迁移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 分支管理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 建立新分支 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 在线代码编辑 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 提交的统计图表 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 模板仓库 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
| 模板存放庫 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
| Git Blame | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 可视化镜像变化 | ✓ | ✘ | ✓ | ? | ? | ? | ? |
#### 工管理
#### 工管理
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | ----------------------------------------------------------------------- | --------- | -------------- | ------------ |
| 工跟踪 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 标签 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工跟踪 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 標籤 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 时间跟踪 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 支持多个负责人 | ✓ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
| 关联的工 | ✘ | ✘ | | [](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 私密工 | [](https://github.com/go-gitea/gitea/issues/3217) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 关联的工 | ✘ | ✘ | | [](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 私密工 | [](https://github.com/go-gitea/gitea/issues/3217) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 评论反馈 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 锁定讨论 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工批处理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工看板 | [](https://github.com/go-gitea/gitea/pull/8346) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从工单创建分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从评论创建工单 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工全局搜索 | [](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 通 Email 创建工单 | [](https://github.com/go-gitea/gitea/issues/6226) | [](https://github.com/gogs/gogs/issues/2602) | ✘ | ✓ | ✓ | ✓ | ✘ |
| 工批处理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工看板 | [](https://github.com/go-gitea/gitea/pull/8346) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从工單建立分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从评论建立工單 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工全局搜索 | [](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 通 Email 建立工單 | [](https://github.com/go-gitea/gitea/issues/6226) | [](https://github.com/gogs/gogs/issues/2602) | ✘ | ✓ | ✓ | ✓ | ✘ |
| 服务台 | [](https://github.com/go-gitea/gitea/issues/6219) | ✘ | ✘ | [](https://gitlab.com/groups/gitlab-org/-/epics/3103) | ✓ | ✘ | ✘ |
#### Pull/Merge requests
@@ -110,7 +110,7 @@ _表格中的符号含义:_
| 评论 Pull/Merge request 中的某行代码 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 指定 Pull/Merge request 的审核人 | ✓ | ✘ | | ✓ | ✓ | ✓ | ✓ |
| 解决 Merge 冲突 | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 限制某些用户的 push 和 merge 权限 | ✓ | ✘ | ✓ | | ✓ | ✓ | ✓ |
| 限制某些使用者的 push 和 merge 权限 | ✓ | ✘ | ✓ | | ✓ | ✓ | ✓ |
| 回退某些 commits 或 merge request | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| Pull/Merge requests 模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 查看 Cherry-picking 的更改 | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
@@ -125,12 +125,12 @@ _表格中的符号含义:_
| 自定义 Git 钩子 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 集成 AD / LDAP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支持多个 LDAP / AD 服务 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
| LDAP 用户同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| LDAP 使用者同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SAML 2.0 service provider | [](https://github.com/go-gitea/gitea/issues/5512) | [](https://github.com/gogs/gogs/issues/1221) | ✓ | ✓ | ✓ | ✓ | ✘ |
| 支持 OpenId 连接 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ |
| 集成 OAuth 2.0(外部授权) | ✓ | ✘ | | ✓ | ✓ | ? | ✓ |
| 作 OAuth 2.0 provider | [](https://github.com/go-gitea/gitea/pull/5378) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 二次验证 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 作 OAuth 2.0 provider | [](https://github.com/go-gitea/gitea/pull/5378) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 二次驗證 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 集成 Mattermost/Slack | ✓ | ✓ | | ✓ | ✓ | | ✓ |
| 集成 Discord | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 集成 Microsoft Teams | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |

View File

@@ -8,40 +8,40 @@ aliases:
# 数据库准备
在使用 Gitea 前您需要准备一个数据库。Gitea 支持 PostgreSQL>= 12、MySQL>= 8.0、MariaDB>= 10.4、SQLite内置 和 MSSQL>= 2012 SP4这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文档将仅涵盖这两种数据库。如果您计划使用 SQLite则可以忽略本章内容。
在使用 Gitea 前您需要准备一个数据库。Gitea 支持 PostgreSQL>= 12、MySQL>= 8.0、MariaDB>= 10.4、SQLite内置 和 MSSQL>= 2012 SP4这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文檔将僅涵盖这两种数据库。如果您计划使用 SQLite则可以忽略本章内容。
如果您使用不受支持的数据库版本,请通过 [联系我们](/help/support) 以获取有关我们的扩展支持的信息。我们可以旧数据库提供测试和支持,将这些修复集成到 Gitea 代码库中。
如果您使用不受支持的数据库版本,請通過 [联系我们](/help/support) 以获取有关我们的扩展支持的信息。我们可以旧数据库提供测试和支持,将这些修复集成到 Gitea 代码库中。
数据库实例可以与 Gitea 实例在相同机器上(本地数据库),也可以与 Gitea 实例在不同机器上(远程数据库)。
注意:以下所有步骤要求您的择的数据库引擎已安在您的系统上。对于远程数据库设置,在数据库实例上安服务器用程序,在 Gitea 服务器上安客户端程序。客户端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任务。此外,确保服务器和客户端使用相同的引擎版本,以使某些引擎功能正常工作。出于安全原因,使用安全密保护 `root`MySQL`postgres`PostgreSQL数据库超级用户。以下步骤假设您在数据库和 Gitea 服务器上都使用 Linux。
注意:以下所有步骤要求您的择的数据库引擎已安在您的系统上。對於远程数据库设置,在数据库实例上安服务器用程序,在 Gitea 服务器上安客户端程序。客户端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任务。此外,确保服务器和客户端使用相同的引擎版本,以使某些引擎功能正常工作。出于安全原因,使用安全密保护 `root`MySQL`postgres`PostgreSQL数据库超级使用者。以下步骤假设您在数据库和 Gitea 服务器上都使用 Linux。
## MySQL/MariaDB
1. 对于远程数据库设置,您需要让 MySQL 监听您的 IP 地址。编辑数据库实例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address` 选项为
1. 對於远程数据库设置,您需要让 MySQL 监听您的 IP 地址。编辑数据库实例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address` 選项為
```ini
bind-address = 203.0.113.3
```
2. 在数据库实例上,使用 `root` 用户登录到数据库控制台:
2. 在数据库实例上,使用 `root` 使用者登入到数据库控制台:
```
mysql -u root -p
```
按提示输入密
按提示输入密
3. 建一个将被 Gitea 使用的数据库用户,并使用密码进行身份验证。以下示例中使用了 `'gitea'` 作为密码。请为您的实例使用一个安全密
3. 建一个将被 Gitea 使用的数据库使用者,並使用密碼進行身份驗證。以下示例中使用了 `'gitea'` 作為密碼。請為您的实例使用一个安全密
对于本地数据库:
對於本地数据库:
```sql
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
```
对于远程数据库:
對於远程数据库:
```sql
SET old_passwords=0;
@@ -50,37 +50,37 @@ aliases:
其中 `192.0.2.10` 是您的 Gitea 实例的 IP 地址。
根据需要替换上述用户名和密
根据需要替换上述使用者名和密
4. 使用 UTF-8 字符集和大小写敏感的排序规则创建数据库。
4. 使用 UTF-8 字符集和大小写敏感的排序規則建立数据库。
`utf8mb4_bin` 是 MySQL/MariaDB 的通用排序规则
Gitea 启动后会尝试把数据库修改更合适的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 在可能的情况下更改数据库。
如果你想指定自己的字符集规则,可以在 `app.ini` 中设置 `[database].CHARSET_COLLATION`。
`utf8mb4_bin` 是 MySQL/MariaDB 的通用排序規則
Gitea 启动后会尝试把数据库修改更合适的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 在可能的情况下更改数据库。
如果你想指定自己的字符集規則,可以在 `app.ini` 中设置 `[database].CHARSET_COLLATION`。
```sql
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
```
根据需要替换数据库名
根据需要替换数据库名
5. 将数据库上的所有权限授予上述建的数据库用户
5. 将数据库上的所有权限授予上述建的数据库使用者
对于本地数据库:
對於本地数据库:
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
```
对于远程数据库:
對於远程数据库:
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'192.0.2.10';
FLUSH PRIVILEGES;
```
6. 通 `exit` 退出数据库控制台。
6. 通 `exit` 退出数据库控制台。
7. 在您的 Gitea 服务器上,测试与数据库的连接:
@@ -88,108 +88,108 @@ aliases:
mysql -u gitea -h 203.0.113.3 -p giteadb
```
其中 `gitea` 是数据库用户名,`giteadb` 是数据库名`203.0.113.3` 是数据库实例的 IP 地址。对于本地数据库,省略 `-h` 项。
其中 `gitea` 是数据库使用者名,`giteadb` 是数据库名`203.0.113.3` 是数据库实例的 IP 地址。對於本地数据库,省略 `-h` 项。
到此您应该能够连接到数据库了。
到此您應該能够连接到数据库了。
## PostgreSQL
1. 对于远程数据库设置,通编辑数据库实例上的 postgresql.conf 文件中的 `listen_addresses` 将 `PostgreSQL` 配置监听您的 IP 地址:
1. 對於远程数据库设置,通编辑数据库实例上的 postgresql.conf 文件中的 `listen_addresses` 将 `PostgreSQL` 配置监听您的 IP 地址:
```ini
listen_addresses = 'localhost, 203.0.113.3'
```
2. PostgreSQL 默认使用 `md5` 质询-响应加密方案行密身份验证。现在这个方案不再被认是安全的。改用 SCRAM-SHA-256 方案,通编辑数据库服务器上的` postgresql.conf` 配置文件:
2. PostgreSQL 默认使用 `md5` 质询-響應加密方案行密身份驗證。現在这个方案不再被认是安全的。改用 SCRAM-SHA-256 方案,通编辑数据库服务器上的` postgresql.conf` 配置文件:
```ini
password_encryption = scram-sha-256
```
重启 PostgreSQL 以应用该设置。
重启 PostgreSQL 以應用該设置。
3. 在数据库服务器上,以超级用户身份登到数据库控制台:
3. 在数据库服务器上,以超级使用者身份登到数据库控制台:
```
su -c "psql" - postgres
```
4. 建具有登权限和密的数据库用户(在 PostgreSQL 术语中称为角色)。使用安全的、强密,而不是下面的 `'gitea'`
4. 建具有登权限和密的数据库使用者(在 PostgreSQL 术语中稱為角色)。使用安全的、强密,而不是下面的 `'gitea'`
```sql
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
```
根据需要替换用户名和密
根据需要替换使用者名和密
5. 使用 UTF-8 字符集建数据库,由之前建的数据库用户拥有。可以根据预期内容使用任何 `libc` 排序规则,使用 `LC_COLLATE` 和 `LC_CTYPE` 参数指定:
5. 使用 UTF-8 字符集建数据库,由之前建的数据库使用者拥有。可以根据预期内容使用任何 `libc` 排序規則,使用 `LC_COLLATE` 和 `LC_CTYPE` 參數指定:
```sql
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
```
根据需要替换数据库名
根据需要替换数据库名
6. 通将以下身份验证规则添加到 `pg_hba.conf`,允许数据库用户访问上面建的数据库。
6. 通将以下身份驗證規則添加到 `pg_hba.conf`,允许数据库使用者访问上面建的数据库。
对于本地数据库:
對於本地数据库:
```ini
local giteadb gitea scram-sha-256
```
对于远程数据库:
對於远程数据库:
```ini
host giteadb gitea 192.0.2.10/32 scram-sha-256
```
根据您自己的数据库名称、用户和 Gitea 实例的 IP 地址行替换。
根据您自己的数据库名稱、使用者和 Gitea 实例的 IP 地址行替换。
注意:`pg_hba.conf` 上的规则按顺序评估,也就是第一个匹配的规则将用于身份验证。您的 PostgreSQL 安可能附带了适用于所有用户和数据库的通用身份验证规则。如果是这种情况,您可能需要将此处提供的规则放置在此类通用规则之上。
注意:`pg_hba.conf` 上的規則按顺序评估,也就是第一个匹配的規則将用于身份驗證。您的 PostgreSQL 安可能附带了适用于所有使用者和数据库的通用身份驗證規則。如果是这种情况,您可能需要将此处提供的規則放置在此类通用規則之上。
重启 PostgreSQL 以用新的身份验证规则
重启 PostgreSQL 以用新的身份驗證規則
7. 在您的 Gitea 服务器上,测试与数据库的连接。
对于本地数据库:
對於本地数据库:
```
psql -U gitea -d giteadb
```
对于远程数据库:
對於远程数据库:
```
psql "postgres://gitea@203.0.113.3/giteadb"
```
其中 `gitea` 是数据库用户`giteadb` 是数据库名`203.0.113.3` 是您的数据库实例的 IP 地址。
其中 `gitea` 是数据库使用者`giteadb` 是数据库名`203.0.113.3` 是您的数据库实例的 IP 地址。
应该会被提示输入数据库用户的密码,并连接到数据库。
應該会被提示输入数据库使用者的密碼,並连接到数据库。
## 使用 TLS 行数据库连接
## 使用 TLS 行数据库连接
如果 Gitea 和您的数据库实例之间的通信是通私有网络行的,或者如果 Gitea 和数据库运行在同一台服务器上,那么可以省略本节,因 Gitea 和数据库实例之间的安全性不会受到严重威胁。但是,如果数据库实例位于公共网络上,使用 TLS 对数据库连接行加密,以防止第三方拦截流量数据。
如果 Gitea 和您的数据库实例之间的通信是通私有网络行的,或者如果 Gitea 和数据库运行在同一台服务器上,那么可以省略本节,因 Gitea 和数据库实例之间的安全性不会受到严重威胁。但是,如果数据库实例位于公共网络上,使用 TLS 对数据库连接行加密,以防止第三方拦截流量数据。
### 先决条件
- 您需要两个有效的 TLS 证书,一个用于数据库实例(数据库服务器),一个用于 Gitea 实例(数据库客户端)。两个证书都必由受信任的 CA 签名。
- 数据库证书必在 `X509v3 Extended Key Usage` 扩展属性中包含 `TLS Web Server Authentication`,而客户端证书则需要在相的属性中包含 `TLS Web Client Authentication`。
- 在数据库服务器证书中,`Subject Alternative Name` 或 `Common Name` 条目之一必是数据库实例的完全限定域名FQDN例如 `db.example.com`)。在数据库客户端证书中,上述提到的条目之一必包含 Gitea 将用于连接的数据库用户名。
- 您需要将 Gitea 和数据库服务器的域名映射到它们各自的 IP 地址。可以它们设置 DNS 记录,也可以在每个系统上的 `/etc/hosts`Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。这样可以通域名而不是 IP 地址行数据库连接。有关详细信息,参阅您系统的文
- 您需要两个有效的 TLS 证书,一个用于数据库实例(数据库服务器),一个用于 Gitea 实例(数据库客户端)。两个证书都必由受信任的 CA 签名。
- 数据库证书必在 `X509v3 Extended Key Usage` 扩展属性中包含 `TLS Web Server Authentication`,而客户端证书则需要在相的属性中包含 `TLS Web Client Authentication`。
- 在数据库服务器证书中,`Subject Alternative Name` 或 `Common Name` 条目之一必是数据库实例的完全限定域名FQDN例如 `db.example.com`)。在数据库客户端证书中,上述提到的条目之一必包含 Gitea 将用于连接的数据库使用者名。
- 您需要将 Gitea 和数据库服务器的域名映射到它们各自的 IP 地址。可以它们设置 DNS 记录,也可以在每个系统上的 `/etc/hosts`Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。这样可以通域名而不是 IP 地址行数据库连接。有关详细信息,参阅您系统的文
### PostgreSQL TLS
Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,数据库客户端和服务器通将各自的证书发送给对方进行验证来相互认证。换句话说,服务器验证客户端证书,客户端验证服务器证书。
Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,数据库客户端和服务器通将各自的证书发送给对方進行驗證来相互認證。换句话说,服务器驗證客户端证书,客户端驗證服务器证书。
1. 在数据库实例所在的服务器上,放置以下凭据:
- `/path/to/postgresql.crt`: 数据库实例证书
- `/path/to/postgresql.key`: 数据库实例私钥
- `/path/to/root.crt`: 用于验证客户端证书的 CA 证书链
- `/path/to/root.crt`: 用于驗證客户端证书的 CA 证书链
2. 在 `postgresql.conf` 中添加以下项:
2. 在 `postgresql.conf` 中添加以下项:
```ini
ssl = on
@@ -206,31 +206,31 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
chmod 0600 /path/to/root.crt /path/to/postgresql.crt /path/to/postgresql.key
```
4. 编辑 `pg_hba.conf` 规则,仅允许 Gitea 数据库用户通过 SSL 连接,要求客户端证书验证
4. 编辑 `pg_hba.conf` 規則,僅允许 Gitea 数据库使用者通過 SSL 连接,要求客户端证书驗證
对于 PostgreSQL 12
對於 PostgreSQL 12
```ini
hostssl giteadb gitea 192.0.2.10/32 scram-sha-256 clientcert=verify-full
```
对于 PostgreSQL 11 及更早版本:
對於 PostgreSQL 11 及更早版本:
```ini
hostssl giteadb gitea 192.0.2.10/32 scram-sha-256 clientcert=1
```
根据需要替换数据库名称、用户和 Gitea 实例的 IP 地址。
根据需要替换数据库名稱、使用者和 Gitea 实例的 IP 地址。
5. 重新启动 PostgreSQL 以用上述配置。
5. 重新启动 PostgreSQL 以用上述配置。
6. 在运行 Gitea 实例的服务器上,将以下凭据放置在运行 Gitea 的用户的主目下(例如 `git`
6. 在运行 Gitea 实例的服务器上,将以下凭据放置在运行 Gitea 的使用者的主目下(例如 `git`
- `~/.postgresql/postgresql.crt`: 数据库客户端证书
- `~/.postgresql/postgresql.key`: 数据库客户端私钥
- `~/.postgresql/root.crt`: 用于验证服务器证书的 CA 证书链
- `~/.postgresql/root.crt`: 用于驗證服务器证书的 CA 证书链
注意:上述文件名在 PostgreSQL 中是硬编码的,法更改。
注意:上述文件名在 PostgreSQL 中是硬编码的,法更改。
7. 根据需要调整凭据、所有权和权限:
@@ -245,21 +245,21 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
psql "postgres://gitea@example.db/giteadb?sslmode=verify-full"
```
您将被提示输入数据库用户的密,然后连接到数据库。
您将被提示输入数据库使用者的密,然后连接到数据库。
### MySQL/MariaDB TLS
虽然 Gitea 使用的 MySQL 驱动程序也支持双向 TLS但目前 Gitea 支持向 TLS。有关详细信息参见工10828。
虽然 Gitea 使用的 MySQL 驱动程序也支持双向 TLS但目前 Gitea 支持向 TLS。有关详细信息参见工10828。
向 TLS 中,数据库客户端在连接握手期间验证服务器发送的证书,而服务器则假定连接的客户端是合法的,因为不进行客户端证书验证
向 TLS 中,数据库客户端在连接握手期间驗證服务器发送的证书,而服务器则假定连接的客户端是合法的,因為不進行客户端证书驗證
1. 在数据库实例上放置以下凭据:
- `/path/to/mysql.crt`: 数据库实例证书
- `/path/to/mysql.key`: 数据库实例密钥
- `/path/to/ca.crt`: CA 证书链。在向 TLS 中不使用此文件,但用于验证双向 TLS 中的客户端证书。
- `/path/to/ca.crt`: CA 证书链。在向 TLS 中不使用此文件,但用于驗證双向 TLS 中的客户端证书。
2. 将以下项添加到 `my.cnf`
2. 将以下项添加到 `my.cnf`
```ini
[mysqld]
@@ -276,9 +276,9 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
chmod 0600 /path/to/ca.crt /path/to/mysql.crt /path/to/mysql.key
```
4. 重新启动 MySQL 以用设置。
4. 重新启动 MySQL 以用设置。
5. Gitea 的数据库用户可能已经创建过,但只会对运行 Gitea 的服务器的 IP 地址行身份验证。要对其域名行身份验证,请重新创建用户,并设置其需要通 TLS 连接到数据库:
5. Gitea 的数据库使用者可能已经建立過,但只会对运行 Gitea 的服务器的 IP 地址行身份驗證。要对其域名行身份驗證,請重新建立使用者,並设置其需要通 TLS 连接到数据库:
```sql
DROP USER 'gitea'@'192.0.2.10';
@@ -287,9 +287,9 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
FLUSH PRIVILEGES;
```
根据需要替换数据库用户名、密和 Gitea 实例域名。
根据需要替换数据库使用者名、密和 Gitea 实例域名。
6. 确保用于验证数据库服务器证书的 CA 证书链位于数据库和 Gitea 服务器的系统证书存中。参考系统文中有关将 CA 证书添加到证书存的说明。
6. 确保用于驗證数据库服务器证书的 CA 证书链位于数据库和 Gitea 服务器的系统证书存中。参考系统文中有关将 CA 证书添加到证书存的说明。
7. 在运行 Gitea 的服务器上,测试与数据库的连接:
@@ -297,4 +297,4 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
mysql -u gitea -h example.db -p --ssl
```
至此应该成功连接到数据库了。
至此應該成功连接到数据库了。

View File

@@ -6,59 +6,59 @@ aliases:
- /zh-tw/install-from-binary
---
# 使用二制文件安
# 使用二制文件安
所有打包的二制程序均包含 SQLiteMySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可行程序中,这一点和曾经的 Gogs 有所不同。
所有打包的二制程序均包含 SQLiteMySQL 和 PostgreSQL 的数据库连接支持,同时网站的静态资源均已嵌入到可行程序中,这一点和曾经的 Gogs 有所不同。
## 下载
你可以从 [下载页面](https://dl.gitea.com/gitea/) 择对平台的二制文件。
你可以从 [下载页面](https://dl.gitea.com/gitea/) 择对平台的二制文件。
### 择架构
### 择架构
- **对于 Linux**`linux-amd64` 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 `arm64` (Raspberry PI 4)`386` (32-bit)`arm-5` 以及 `arm-6`
- **對於 Linux**`linux-amd64` 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 `arm64` (Raspberry PI 4)`386` (32-bit)`arm-5` 以及 `arm-6`
- **对于 Windows**`windows-4.0-amd64` 适用于 64-bit 的 Intel/AMD 平台,`386` 适用于 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本内建了 gogit 可能缓解在旧的 Windows 平台上 Go 程序调用 git 子程序时面临的 [性能问题](https://github.com/go-gitea/gitea/pull/15482)
- **對於 Windows**`windows-4.0-amd64` 适用于 64-bit 的 Intel/AMD 平台,`386` 适用于 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本内建了 gogit 可能缓解在旧的 Windows 平台上 Go 程序调用 git 子程序时面临的 [性能问题](https://github.com/go-gitea/gitea/pull/15482)
- **对于 macOS**`darwin-arm64` 适用于 Apple Silicon 架构,`darwin-amd64` 适用于 Intel 架构.
- **對於 macOS**`darwin-arm64` 适用于 Apple Silicon 架构,`darwin-amd64` 适用于 Intel 架构.
- **对于 FreeBSD**`freebsd12-amd64` 适用于 64-bit 的 Intel/AMD 平台。
- **對於 FreeBSD**`freebsd12-amd64` 适用于 64-bit 的 Intel/AMD 平台。
### 使用 wget 下载
使用以下命令下载适用于 64-bit Linux 平台的二制文件。
使用以下命令下载适用于 64-bit Linux 平台的二制文件。
```sh
wget -O gitea https://dl.gitea.com/gitea/@version@/gitea-@version@-linux-amd64
chmod +x gitea
```
## 验证 GPG 签名
## 驗證 GPG 签名
Gitea 对打包的二制文件使用 [GPG 密钥](https://keys.openpgp.org/search?q=teabot%40gitea.io) 签名以防止篡改。
根据对文件名 `.asc` 中包含的校验码检验文件的一致性。
Gitea 对打包的二制文件使用 [GPG 密钥](https://keys.openpgp.org/search?q=teabot%40gitea.io) 签名以防止篡改。
根据对文件名 `.asc` 中包含的校验码检验文件的一致性。
```sh
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@version@-linux-amd64.asc gitea-@version@-linux-amd64
```
校验正确时的信息 `Good signature from "Teabot <teabot@gitea.io>"`
校验错误时的信息 `This key is not certified with a trusted signature!`
校验正确时的信息 `Good signature from "Teabot <teabot@gitea.io>"`
校验错误时的信息 `This key is not certified with a trusted signature!`
## 服务器设置
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路径。以下路径可以通 [环境变量](../administration/environment-variables.md) 初始化。
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路径。以下路径可以通 [环境变量](../administration/environment-variables.md) 初始化。
### 准备环境
检查是否安 Git。要求 Git 版本 >= 2.0。
检查是否安 Git。要求 Git 版本 >= 2.0。
```sh
git --version
```
创建用户(推荐使用名 `git`
建立使用者(推荐使用名 `git`
```sh
# On Ubuntu/Debian:
@@ -83,7 +83,7 @@ adduser \
git
```
### 建工作路径
### 建工作路径
```sh
mkdir -p /var/lib/gitea/{custom,data,log}
@@ -94,31 +94,31 @@ chown root:git /etc/gitea
chmod 770 /etc/gitea
```
> **注意:** 了让 Web 安程序可以写入配置文件,我们临时 `/etc/gitea` 路径授予了组外用户 `git` 写入权限。建议在安结束后将配置文件的权限设置只读。
> **注意:** 了让 Web 安程序可以写入配置文件,我们临时 `/etc/gitea` 路径授予了组外使用者 `git` 写入权限。建议在安结束后将配置文件的权限设置只读。
>
> ```sh
> chmod 750 /etc/gitea
> chmod 640 /etc/gitea/app.ini
> ```
如果您不希望通 Web 安程序建配置文件,可以将配置文件设置为仅供 Gitea 用户只读owner/group `root:git`, mode `0640`手工建配置文件:
如果您不希望通 Web 安程序建配置文件,可以将配置文件设置為僅供 Gitea 使用者只读owner/group `root:git`, mode `0640`手工建配置文件:
- 设置 `INSTALL_LOCK=true` 关闭安界面
- 手动配置数据库连接参数
- 使用 `gitea generate secret` `SECRET_KEY``INTERNAL_TOKEN`
- 设置 `INSTALL_LOCK=true` 关闭安界面
- 手动配置数据库连接參數
- 使用 `gitea generate secret` `SECRET_KEY``INTERNAL_TOKEN`
- 提供所有必要的密钥
详情参考 [命令行文](../administration/command-line.md) 中有关 `gitea generate secret` 的内容。
详情参考 [命令行文](../administration/command-line.md) 中有关 `gitea generate secret` 的内容。
### 配置 Gitea 工作路径
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服务,你可以采用 `WorkingDirectory` 参数来配置工作路径。 否则,使用环境变量 `GITEA_WORK_DIR` 来明确指出程序工作和数据存放路径。
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服务,你可以采用 `WorkingDirectory` 參數来配置工作路径。 否则,使用环境变量 `GITEA_WORK_DIR` 来明确指出程序工作和数据存放路径。
```sh
export GITEA_WORK_DIR=/var/lib/gitea/
```
### 复制二制文件到全局位置
### 复制二制文件到全局位置
```sh
cp gitea /usr/local/bin/gitea
@@ -130,17 +130,17 @@ cp gitea /usr/local/bin/gitea
同样地zsh 自动补全的脚本可以在 [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete) 找到。您可以将其复制到 `/usr/share/zsh/_gitea`,或在您的 `.zshrc` 中引用。
情况可能会有所不同,这些脚本可能需要一步的改
情况可能会有所不同,这些脚本可能需要一步的改
## 运行 Gitea
完成以上步骤后,可以通两种方式运行 Gitea
完成以上步骤后,可以通两种方式运行 Gitea
### 1. 建服务自动启动 Gitea推荐
### 1. 建服务自动启动 Gitea推荐
学习建 [Linux 服务](installation/run-as-service-in-ubuntu.md)
学习建 [Linux 服务](installation/run-as-service-in-ubuntu.md)
### 2. 通命令行终端运行
### 2. 通命令行终端运行
```sh
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
@@ -148,15 +148,15 @@ GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
## 升级到最新版本
您可以通停止程序,替换 `/usr/local/bin/gitea` 重启来更新到新版本。直接替换可行程序时不要更改或使用新的文件名,以避免数据出错。
您可以通停止程序,替换 `/usr/local/bin/gitea` 重启来更新到新版本。直接替换可行程序时不要更改或使用新的文件名,以避免数据出错。
建议您在更新之前行[备份](../administration/backup-and-restore.md)。
建议您在更新之前行[备份](../administration/backup-and-restore.md)。
如果您按照上述描述行了安步骤,二制文件的通用名称应为 gitea。勿更改此名,即不要包含版本号。
如果您按照上述描述行了安步骤,二制文件的通用名稱應為 gitea。勿更改此名,即不要包含版本号。
### 1. 使用 systemd 重新启动 Gitea推荐
我们建议使用 systemd 作服务管理器,使用 `systemctl restart gitea` 安全地重启程序。
我们建议使用 systemd 作服务管理器,使用 `systemctl restart gitea` 安全地重启程序。
### 2. 非 systemd 重启方法
@@ -166,40 +166,40 @@ GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
**提示:** 我们不建议使用 SIGKILL 信号(`-9`),这会强制停止 Gitea 程序,但不会正确关闭队列、索引器等任务。
参阅下面的疑难解答说明,以在 Gitea 版本更新后修复损坏的仓库
参阅下面的疑难解答说明,以在 Gitea 版本更新后修复损坏的存放庫
## 排查故障
### 旧版 glibc
旧版 Linux 发行版(例如 Debian 7 和 CentOS 6可能法加载 Gitea 二制文件,通常会产生类似于 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)` 的错误。这是由于 dl.gitea.com 提供的二制文件中集成了 SQLite 支持。在这种情况下,通常可以择[从源代码安](installation/from-source.md),而不包括 SQLite 支持。
旧版 Linux 发行版(例如 Debian 7 和 CentOS 6可能法加载 Gitea 二制文件,通常会产生类似于 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)` 的错误。这是由于 dl.gitea.com 提供的二制文件中集成了 SQLite 支持。在这种情况下,通常可以择[从源代码安](installation/from-source.md),而不包括 SQLite 支持。
### 在另一个端口上运行 Gitea
对于出现类似于 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use` 的错误,需要将 Gitea 启动在另一个空闲端口上。您可以使用 `./gitea web -p $PORT` 来实。可能已经有另一个 Gitea 实例在运行。
對於出現类似于 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use` 的错误,需要将 Gitea 启动在另一个空闲端口上。您可以使用 `./gitea web -p $PORT` 来实。可能已经有另一个 Gitea 实例在运行。
### 在 Raspbian 上运行 Gitea
从 v1.8 版本开始arm7 版本的 Gitea 存在问题,法在树莓派和类似设备上运行。
从 v1.8 版本开始arm7 版本的 Gitea 存在问题,法在树莓派和类似设备上运行。
建议切换到 arm6 版本,版本经测试已被证明可以在树莓派和类似设备上运行。
建议切换到 arm6 版本,版本经测试已被证明可以在树莓派和类似设备上运行。
### 更新到新版本的 Gitea 后出的 Git 错误
### 更新到新版本的 Gitea 后出的 Git 错误
如果在更新程中,二制文件的名已更改新版本的 Gitea现有仓库中的 Git 钩子将不再起作用。在这种情况下,当推送到仓库时,会显示 Git 错误。
如果在更新程中,二制文件的名已更改新版本的 Gitea現有存放庫中的 Git 钩子将不再起作用。在这种情况下,当推送到存放庫时,会显示 Git 错误。
```
remote: ./hooks/pre-receive.d/gitea: line 2: [...]: No such file or directory
```
错误信息中的 `[...]` 部分将包含您先前 Gitea 二制文件的路径。
错误信息中的 `[...]` 部分将包含您先前 Gitea 二制文件的路径。
要解决此问题,转到管理项,运行任务 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以将所有钩子更新包含新的二制文件路径。注意,这将覆盖所有 Git 钩子,包括自定义的钩子。
要解决此问题,转到管理项,运行任务 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以将所有钩子更新包含新的二制文件路径。注意,这将覆盖所有 Git 钩子,包括自定义的钩子。
如果您没有使用 Gitea 内置的 SSH 服务器,您需要通在管理项中运行任务 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 来重新编写授权密钥文件。
如果您没有使用 Gitea 内置的 SSH 服务器,您需要通在管理项中运行任务 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 来重新编写授权密钥文件。
> 更多经验总结,参考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
> 更多经验总结,参考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
如果从本页中没有找到你需要的内容,访问 [帮助页面](help/support.md)
如果从本页中没有找到你需要的内容,访问 [帮助页面](help/support.md)

View File

@@ -6,13 +6,13 @@ aliases:
- /zh-tw/install-from-package
---
# 包管理器安
# 包管理器安
## 官方包管理器
### macOS
macOS 平台下当前我们支持通 `brew` 来安。如果你没有安 [Homebrew](http://brew.sh/),你也可以查看 [从二制安](installation/from-binary.md)。在你安`brew` 之后, 你可以行以下命令:
macOS 平台下当前我们支持通 `brew` 来安。如果你没有安 [Homebrew](http://brew.sh/),你也可以查看 [从二制安](installation/from-binary.md)。在你安`brew` 之后, 你可以行以下命令:
```
brew install gitea
@@ -22,7 +22,7 @@ brew install gitea
### Alpine Linux
Gitea 已经包含在 Alpine Linux 的[社区存](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本与 Gitea 官方保持同步。
Gitea 已经包含在 Alpine Linux 的[社区存](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本与 Gitea 官方保持同步。
```sh
apk add gitea
@@ -30,7 +30,7 @@ apk add gitea
### Arch Linux
Gitea 已经在滚动发布发行版的官方[社区存](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本与 Gitea 官方保持同步。
Gitea 已经在滚动發佈发行版的官方[社区存](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本与 Gitea 官方保持同步。
```sh
pacman -S gitea
@@ -46,7 +46,7 @@ pacman -S gitea
### Gentoo Linux
滚动发布的发行版在其官方社区软件仓库中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea)且会随着新的 Gitea 发布提供软件包更新。
滚动發佈的发行版在其官方社区软件存放庫中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea)且会随着新的 Gitea 發佈提供軟體包更新。
```sh
emerge gitea -va
@@ -54,7 +54,7 @@ emerge gitea -va
### Canonical Snap
目前 Gitea 已在 Snap Store 中发布,名称为 [gitea](https://snapcraft.io/gitea)。
目前 Gitea 已在 Snap Store 中發佈,名稱為 [gitea](https://snapcraft.io/gitea)。
```sh
snap install gitea
@@ -62,29 +62,29 @@ snap install gitea
### SUSE/openSUSE
OpenSUSE 构建服务 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在开发软件配置管理存库中找到它们。
OpenSUSE 构建服务 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在开发软件配置管理存库中找到它们。
### Windows
目前你可以通 [Chocolatey](https://chocolatey.org/) 来安 [Gitea](https://chocolatey.org/packages/gitea)。
目前你可以通 [Chocolatey](https://chocolatey.org/) 来安 [Gitea](https://chocolatey.org/packages/gitea)。
```sh
choco install gitea
```
你也可以 [从二制安](installation/from-binary.md) 。
你也可以 [从二制安](installation/from-binary.md) 。
### FreeBSD
可以使用 Gitea 的 FreeBSD port `www/gitea`请安装预构建的二制包:
可以使用 Gitea 的 FreeBSD port `www/gitea`請安裝预构建的二制包:
```
pkg install gitea
```
对于最新版本,或使用自定义项构建 port
[从 port 安](https://www.freebsd.org/doc/handbook/ports-using.html)
對於最新版本,或使用自定义项构建 port
[从 port 安](https://www.freebsd.org/doc/handbook/ports-using.html)
```
su -
@@ -92,13 +92,13 @@ cd /usr/ports/www/gitea
make install clean
```
port 使用标准的 FreeBSD 文件系统布局:配置文件在 `/usr/local/etc/gitea`中,
模板、项、插件和主题在 `/usr/local/share/gitea`中,启动脚本在 `/usr/local/etc/rc.d/gitea`中。
port 使用标准的 FreeBSD 文件系统布局:配置文件在 `/usr/local/etc/gitea`中,
模板、项、插件和主题在 `/usr/local/share/gitea`中,启动脚本在 `/usr/local/etc/rc.d/gitea`中。
要使 Gitea 作服务运行,运行 `sysrc gitea_enable=YES` 使用 `service gitea start` 命令启动它。
要使 Gitea 作服务运行,运行 `sysrc gitea_enable=YES` 使用 `service gitea start` 命令启动它。
### 其它
如果这里没有找到你喜欢的包管理器,可以使用 Gitea 第三方软件包。这里有一个完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果这里没有找到你喜欢的包管理器,可以使用 Gitea 第三方軟體包。这里有一个完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果你知道其他 Gitea 第三方软件包,发送 PR 来添加它。
如果你知道其他 Gitea 第三方軟體包,发送 PR 来添加它。

View File

@@ -6,40 +6,40 @@ aliases:
- /zh-tw/install-from-source
---
# 使用源代码安
# 使用源代码安
你需要 [ Go](https://golang.google.cn/doc/install) 正确设置 Go 环境。特别的,建议设置`$GOPATH`环境变量,将 Go 的二制目或目`${GOPATH//://bin:}/bin`添加到`$PATH`中。参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的条。
你需要 [ Go](https://golang.google.cn/doc/install) 正确设置 Go 环境。特别的,建议设置`$GOPATH`环境变量,将 Go 的二制目或目`${GOPATH//://bin:}/bin`添加到`$PATH`中。参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的条。
接下来,[ Node.js 和 npm](https://nodejs.org/zh-tw/download/) 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。
接下来,[ Node.js 和 npm](https://nodejs.org/zh-tw/download/) 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion@,建议使用最新的 LTS 版本。
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不建议获取与我们的持续集成continuous integration, CI相同的版本参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不建议获取与我们的持续集成continuous integration, CI相同的版本参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中给出的建议。
## 下载
首先,我们需要获取源码。由于引入了 Go 模,最简的方法是直接使用 Git我们不再需要在 GOPATH 内构建 Gitea。
首先,我们需要获取源码。由于引入了 Go 模,最简的方法是直接使用 Git我们不再需要在 GOPATH 内构建 Gitea。
```bash
git clone https://github.com/go-gitea/gitea
```
(之前的版本中建议使用 `go get`,但在不再需要。)
(之前的版本中建议使用 `go get`,但在不再需要。)
你可以择编译和安的版本,当前有多个择。`main` 分支代表当前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [构建](#构建) 部分。
你可以择编译和安的版本,当前有多个择。`main` 分支代表当前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [构建](#构建) 部分。
如果你想编译带有标签的发行版本,可以使用以下命令签出:
如果你想编译带有標籤的发行版本,可以使用以下命令签出:
```bash
git branch -a
git checkout @sourceBranch@
```
验证一个拉取Pull Request, PR要先启用新的分支其中 `xyz` 是 PR 的 ID例如对于 [#2663](https://github.com/go-gitea/gitea/pull/2663)ID 是 `2663 `
驗證一个拉取Pull Request, PR要先启用新的分支其中 `xyz` 是 PR 的 ID例如對於 [#2663](https://github.com/go-gitea/gitea/pull/2663)ID 是 `2663 `
```bash
git fetch origin pull/xyz/head:pr-xyz
```
要以指定发行版本(如 @sourceVersion@ )的源代码来构建 Gitea行以下命令列出可用的版本并选择某个版本签出。
要以指定发行版本(如 @sourceVersion@ )的源代码来构建 Gitea行以下命令列出可用的版本並選择某个版本签出。
使用以下命令列出可用的版本:
```bash
@@ -49,41 +49,41 @@ git checkout @sourceVersion@ # or git checkout pr-xyz
## 构建
要从源代码行构建,系统必预先安以下程序:
要从源代码行构建,系统必预先安以下程序:
- `go` @minGoVersion@ 或更高版本,参阅 [这里](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,且安 `npm`, 参阅 [这里](https://nodejs.org/zh-tw/download/)
- `make`, 参阅 [这里](development/hacking-on-gitea.md)
- `go` @minGoVersion@ 或更高版本,参阅 [这里](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,且安 `npm`, 参阅 [这里](https://nodejs.org/zh-tw/download/)
- `make`, 参阅 [这里](development/hacking-on-gitea.md)
了尽可能简化编译程,提供了各种 [make 任务](https://github.com/go-gitea/gitea/blob/main/Makefile)。
了尽可能简化编译程,提供了各种 [make 任务](https://github.com/go-gitea/gitea/blob/main/Makefile)。
根据你的构建需求,以下 tags 可以使用:
- `bindata`: 构建一个一的整体二进制文件,包含所有资源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支持。建议在少数人使用时使用这个模式。
- `pam`: 启用对 PAM Linux 可插拔认证模块)的支持。可用于对本地用户进行身份验证或扩展身份验证到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 变的 Git 命令。
- `bindata`: 构建一个一的整體二進制文件,包含所有资源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支持。建议在少数人使用时使用这个模式。
- `pam`: 启用对 PAM Linux 可插拔認證模組)的支持。可用于对本地使用者進行身份驗證或扩展身份驗證到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 变的 Git 命令。
将所有资源JS/CSS/模板等)打包到二制文件中。在生产环境部署时,使用`bindata`构建标签是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`
将所有资源JS/CSS/模板等)打包到二制文件中。在生产环境部署时,使用`bindata`构建標籤是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`
要包含所有资源,使用 `bindata` 标签
要包含所有资源,使用 `bindata` 標籤
```bash
TAGS="bindata" make build
```
在我们的持续集成系统的默认发行版中,构建标签为`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最简、推荐方式是:
在我们的持续集成系统的默认发行版中,构建標籤為`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最简、推荐方式是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build`目标分两个子目标:
`build`目标分两个子目标:
- `make backend` 需要 [Go @minGoVersion@](https://golang.google.cn/doc/install) 或更高版本。
- `make frontend` 需要 [Node.js @minNodeVersion@](https://nodejs.org/zh-tw/download/) 或更高版本。
如果存在预构建的前端文件,可以构建后端:
如果存在预构建的前端文件,可以构建后端:
```bash
TAGS="bindata" make backend
@@ -91,7 +91,7 @@ TAGS="bindata" make backend
## 测试
按照上述步骤完成后,工作目中将会有一个`gitea`制文件。可以从该目录进行测试,或将其移动到带有测试数据的目中。当手动从命令行启动 Gitea 时,可以通按下`Ctrl + C`来停止程序。
按照上述步骤完成后,工作目中将会有一个`gitea`制文件。可以从該目錄進行测试,或将其移动到带有测试数据的目中。当手动从命令行启动 Gitea 时,可以通按下`Ctrl + C`来停止程序。
```bash
./gitea web
@@ -99,35 +99,35 @@ TAGS="bindata" make backend
## 更改默认路径
Gitea 将从`CustomPath`中查找许多信息。默认的,这会在运行 Gitea 时当前工作目下的`custom/`中(译者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它将在`$(CustomPath)/conf/app.ini`中查找其配置文件`CustomConf`将当前工作目用作一些可配置值的相对基本路径`AppWorkPath`。最后,静态文件将从默认 `AppWorkPath``StaticRootPath`提供。
Gitea 将从`CustomPath`中查找许多信息。默认的,这会在运行 Gitea 时当前工作目下的`custom/`中(译者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它将在`$(CustomPath)/conf/app.ini`中查找其配置文件`CustomConf`将当前工作目用作一些可配置值的相对基本路径`AppWorkPath`。最后,静态文件将从默认 `AppWorkPath``StaticRootPath`提供。
尽管在开发时这些值很有用,但可能与下游用户的偏好冲突。
尽管在开发时这些值很有用,但可能与下游使用者的偏好冲突。
一种择是使用脚本文件来隐藏`gitea`制文件,在运行 Gitea 之前建适当的环境。然而,在构建时,可以使用`make``LDFLAGS`环境变量来更改这些默认值。适当的设置如下:
一种择是使用脚本文件来隐藏`gitea`制文件,在运行 Gitea 之前建适当的环境。然而,在构建时,可以使用`make``LDFLAGS`环境变量来更改这些默认值。适当的设置如下:
- 要设置`CustomPath`使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 对于`CustomConf`应该使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 对于`AppWorkPath`应该使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 对于`StaticRootPath`应该使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的 PID 文件位置,使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
- 要设置`CustomPath`使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 對於`CustomConf`應該使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 對於`AppWorkPath`應該使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 對於`StaticRootPath`應該使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的 PID 文件位置,使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
将这些字符串与其前导的`-X`添加到`LDFLAGS`变量中,像上面那样使用适当的`TAGS`运行`make build`
将这些字符串与其前导的`-X`添加到`LDFLAGS`变量中,像上面那样使用适当的`TAGS`运行`make build`
运行`gitea help`将允许您查看配置的`gitea`设置。
## 交叉编译
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。参考[`GOOS`和`GOARCH`环境变量](https://go.dev/doc/install/source#environment) 以获取支持的目标列表。如果您想性能较弱的系统(如树莓派)构建 Gitea交叉编译非常有用。
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。参考[`GOOS`和`GOARCH`环境变量](https://go.dev/doc/install/source#environment) 以获取支持的目标列表。如果您想性能较弱的系统(如树莓派)构建 Gitea交叉编译非常有用。
要使用构建标签`TAGS`行交叉编译 Gitea需要一个 C 交叉编译器,编译器的目标架构与`GOOS``GOARCH`变量择的架构相同。例如,要 Linux ARM64`GOOS=linux``GOARCH=arm64`行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。这是因 Gitea 构建标签使用了`cgo`的外部函数接口FFI
要使用构建標籤`TAGS`行交叉编译 Gitea需要一个 C 交叉编译器,编译器的目标架构与`GOOS``GOARCH`变量择的架构相同。例如,要 Linux ARM64`GOOS=linux``GOARCH=arm64`行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。这是因 Gitea 构建標籤使用了`cgo`的外部函数接口FFI
在没有任何标签的情况下,交叉编译的 Gitea Linux ARM64 版本:
在没有任何標籤的情况下,交叉编译的 Gitea Linux ARM64 版本:
```
GOOS=linux GOARCH=arm64 make build
```
要交叉编译 Linux ARM64 下的 Gitea这是推荐的构建标签
要交叉编译 Linux ARM64 下的 Gitea这是推荐的构建標籤
```
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sqlite_unlock_notify" make build
@@ -135,7 +135,7 @@ CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sq
根据您的目标架构,适当替换`CC``GOOS``GOARCH`
有时您需要构建一个静态编译的镜像。此,您需要添加以下内容:
有时您需要构建一个静态编译的镜像。此,您需要添加以下内容:
```
LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo $TAGS" make build
@@ -145,15 +145,15 @@ LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo
### 添加 bash/zsh 自动补全(从 1.19 版本起)
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一个启用 bash 自动补全的脚本。您可以根据需要行修改,在您的 `.bashrc` 中使用 `source` 命令加载脚本,或者将其复制到 `/usr/share/bash-completion/completions/gitea`
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一个启用 bash 自动补全的脚本。您可以根据需要行修改,在您的 `.bashrc` 中使用 `source` 命令加载脚本,或者将其复制到 `/usr/share/bash-completion/completions/gitea`
类似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 `/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载脚本。
类似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 `/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载脚本。
可能需要你根据具情况一步改这些脚本。
可能需要你根据具情况一步改这些脚本。
## 在 Linux 上使用 Zig 行编译或交叉编译
## 在 Linux 上使用 Zig 行编译或交叉编译
按照 [Zig 的入门指南](https://ziglang.org/learn/getting-started/#installing-zig) 安 Zig。
按照 [Zig 的入门指南](https://ziglang.org/learn/getting-started/#installing-zig) 安 Zig。
- 编译 (Linux ➝ Linux)
@@ -180,7 +180,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```
## 在 Windows 上使用 Zig 行编译或交叉编译
## 在 Windows 上使用 Zig 行编译或交叉编译
使用`GIT BASH`编译。
@@ -211,7 +211,7 @@ make build
## Source Map
默认情况下gitea 会前端文件生成精简的 Source Map 以节省空间。 这可以通“ENABLE_SOURCEMAP”环境变量行控制:
默认情况下gitea 会前端文件生成精简的 Source Map 以节省空间。 这可以通“ENABLE_SOURCEMAP”环境变量行控制:
- `ENABLE_SOURCEMAP=true` 生成所有 Source Map这是开发版本的默认设置
- `ENABLE_SOURCEMAP=reduced` 生成有限的 Source Map这是生产版本的默认设置

View File

@@ -6,30 +6,30 @@ aliases:
- /zh-tw/install-on-cloud-provider
---
# 在云服务器上安 Gitea
# 在云服务器上安 Gitea
## Cloudron
Gitea 可以在 [Cloudron](https://cloudron.io) 上行一键安
Cloudron 使得在您的服务器上运行 Gitea保持其更新和安全变得简
Gitea 可以在 [Cloudron](https://cloudron.io) 上行一键安
Cloudron 使得在您的服务器上运行 Gitea保持其更新和安全变得简
[![Install](/cloudron.svg)](https://cloudron.io/button.html?app=io.gitea.cloudronapp)
Gitea 软件包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea-app).
Gitea 軟體包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea-app).
这里有一个[demo 实例](https://my.demo.cloudron.io) (用户名: cloudron 密: cloudron) 您可以在其中尝试运行 Gitea。
这里有一个[demo 实例](https://my.demo.cloudron.io) (使用者名: cloudron 密: cloudron) 您可以在其中尝试运行 Gitea。
## Linode
[Linode](https://www.linode.com/) 将 Gitea 作其市场中的一个用程序.
[Linode](https://www.linode.com/) 将 Gitea 作其市场中的一个用程序.
要将 Gitea 部署到 Linode, 参考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
要将 Gitea 部署到 Linode, 参考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
## alwaysdata
[alwaysdata](https://www.alwaysdata.com/) 将 Gitea 作其市场中的一个 droplet.
[alwaysdata](https://www.alwaysdata.com/) 将 Gitea 作其市场中的一个 droplet.
要将 Gitea 部署到 alwaysdata, 参考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
要将 Gitea 部署到 alwaysdata, 参考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
## Exoscale
@@ -37,6 +37,6 @@ Gitea 软件包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea
Exoscale 是一家欧洲的云服务提供商。
该软件包通开源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 行维护和更新。
該軟體包通开源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 行维护和更新。
要在 Exoscale 上部署 Gitea参考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
要在 Exoscale 上部署 Gitea参考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。

View File

@@ -6,11 +6,11 @@ aliases:
- /zh-tw/install-on-kubernetes
---
# 在 Kubernetes 中安 Gitea
# 在 Kubernetes 中安 Gitea
Gitea 已经提供了便于在 Kubernetes 云原生环境中安所需的 Helm Chart
Gitea 已经提供了便于在 Kubernetes 云原生环境中安所需的 Helm Chart
默认安指令
默认安指令
```bash
helm repo add gitea https://dl.gitea.com/charts
@@ -18,9 +18,9 @@ helm repo update
helm install gitea gitea/gitea
```
如果采用默认安指令Helm 会部署实例的 Gitea, PostgreSQL, Memcached。若您想实自定义安(包括配置 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久存等),前往阅读:[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
如果采用默认安指令Helm 会部署实例的 Gitea, PostgreSQL, Memcached。若您想实自定义安(包括配置 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久存等),前往阅读:[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
您也可以通 `helm show` 命令导出 `README.md` 和配置文件 `values.yaml` 行学习和编辑,例如:
您也可以通 `helm show` 命令导出 `README.md` 和配置文件 `values.yaml` 行学习和编辑,例如:
```bash
helm show values gitea/gitea > values.yaml
@@ -46,7 +46,7 @@ livenessProbe:
failureThreshold: 10
```
成功的运行状况检查响应代码 HTTP `200`,下面是示例:
成功的运行状况检查響應代码 HTTP `200`,下面是示例:
```json
HTTP/1.1 200 OK
@@ -71,4 +71,4 @@ HTTP/1.1 200 OK
}
```
有关更多信息,参考 Kubernetes 文 [配置存活、就绪和启动探测器](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
有关更多信息,参考 Kubernetes 文 [配置存活、就绪和启动探测器](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)

View File

@@ -12,17 +12,17 @@ aliases:
### systemd 方式
在 terminal 中行以下命令:
在 terminal 中行以下命令:
```
sudo vim /etc/systemd/system/gitea.service
```
接着拷贝示例代码 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 取消对任何需要运行在主机上的服务部分的注释,譬如 MySQL。
接着拷贝示例代码 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 取消对任何需要运行在主机上的服务部分的注释,譬如 MySQL。
修改 userhome 目以及其他必的初始化参数,如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
修改 userhome 目以及其他必的初始化參數,如果使用自定义端口,则需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记。
激活 gitea 将它作系统自启动服务:
激活 gitea 将它作系统自启动服务:
```
sudo systemctl enable gitea
@@ -31,13 +31,13 @@ sudo systemctl start gitea
### 使用 supervisor
在 terminal 中行以下命令安 supervisor
在 terminal 中行以下命令安 supervisor
```
sudo apt install supervisor
```
supervisor 配置日志路径:
supervisor 配置日志路径:
```
# assuming gitea is installed in /home/git/gitea/
@@ -53,9 +53,9 @@ sudo vim /etc/supervisor/supervisord.conf
增加如下示例配置
[supervisord config](https://github.com/go-gitea/gitea/blob/main/contrib/supervisor/gitea)。
将 user(git) 和 home(/home/git) 设置与上文部署中匹配的值。如果使用自定义端口,则需修改 PORT 参数,反之如果使用默认端口则需删除 -p 标记。
将 user(git) 和 home(/home/git) 设置与上文部署中匹配的值。如果使用自定义端口,则需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记。
最后激活 supervisor 将它作系统自启动服务:
最后激活 supervisor 将它作系统自启动服务:
```
sudo systemctl enable supervisor

View File

@@ -8,17 +8,17 @@ sidebar_position: 100
在升级之前,您需要做如下的准备工作。
## 重大变更检查更新日志
## 重大变更检查更新日志
了让 Gitea 变得更好,行重大变更是不可避免的,尤其是一些里程碑更新的发布
在更新前, [在 Gitea 博客上阅读更新日志](https://blog.gitea.com/)
检查重大变更是否会影你的 Gitea 实例。
了让 Gitea 变得更好,行重大变更是不可避免的,尤其是一些里程碑更新的發佈
在更新前, [在 Gitea 博客上阅读更新日志](https://blog.gitea.com/)
检查重大变更是否会影你的 Gitea 实例。
## 在控制面板中检查期的配置项
## 在控制面板中检查期的配置项
一些配置项可能会在后续版本中期,你需要在控制面板中检查他们。如果不解决期的配置项,
Gitea也许会在升级后法重启。你可以访问 https://docs.gitea.com 获得要升级的版本
的文来修改你的配置文件。
一些配置项可能会在后续版本中期,你需要在控制面板中检查他们。如果不解决期的配置项,
Gitea也许会在升级后法重启。你可以访问 https://docs.gitea.com 获得要升级的版本
的文来修改你的配置文件。
## 降级前的备份
@@ -32,13 +32,13 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
| 当前 | 目标 | 结果 |
| --- | --- | --- |
| 1.4.0 | 1.4.1 | ✅ |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,让它可以正常工作。我们强烈建议降级前行完全的备份。 |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,让它可以正常工作。我们强烈建议降级前行完全的备份。 |
| 1.4.x | 1.5.y | ✅ 数据库会被自动升级。你可以直接从 1.4.x 升级到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且法用于旧版本Gitea使用备份来行降级。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且法用于旧版本Gitea使用备份来行降级。 |
**因你不能基于升级后的数据库运行旧版 Gitea所以你应该在数据库升级前完成数据备份。**
**因你不能基于升级后的数据库运行旧版 Gitea所以你應該在数据库升级前完成数据备份。**
如果你在生产环境下使用 Gitea应该在升级前做好备份,哪怕只是小版本的补丁更新。
如果你在生产环境下使用 Gitea應該在升级前做好备份,哪怕只是小版本的补丁更新。
备份步骤:
@@ -46,18 +46,18 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
* 备份数据库
* 备份 Gitea 配置文件
* 备份 Gitea 在 `APP_DATA_PATH` 中的数据文件
* 备份 Gitea 的外部存 (例如: S3/MinIO 或被使用的其他存)
* 备份 Gitea 的外部存 (例如: S3/MinIO 或被使用的其他存)
如果你在使用云服务或拥有快照功能的文件系统,
最好对 Gitea 的数据盘及相关资料存储进行一次快照。
最好对 Gitea 的数据盘及相关资料存儲進行一次快照。
在所有上述步骤准备妥当之后,要升级 Gitea只需要下载新版停止运行旧版行数据备份,然后运行新版就好。
每次 Gitea 实例启动时,它都会检查是否要行数据库迁移。
如果需要行数据库迁移Gitea 会花一些时间完成升级然后继续服务。
在所有上述步骤准备妥当之后,要升级 Gitea只需要下载新版停止运行旧版行数据备份,然后运行新版就好。
每次 Gitea 实例启动时,它都会检查是否要行数据库迁移。
如果需要行数据库迁移Gitea 会花一些时间完成升级然后继续服务。
## 从 Docker 升级
* `docker pull` 拉取 Gitea 的最新发布版。
* `docker pull` 拉取 Gitea 的最新發佈版。
* 停止运行中的实例,备份数据。
* 使用 `docker``docker-compose` 启动较新的 Gitea Docker 容器.
@@ -67,18 +67,18 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
* 使用你的包管理器更新 Gitea 到最新版本。
* 启动 Gitea 实例。
## 从二制升级
## 从二制升级
* 下载最新的 Gitea 二制文件到临时文件夹中。
* 下载最新的 Gitea 二制文件到临时文件夹中。
* 停止运行中的实例,备份数据。
* 将旧的 Gitea 二制文件覆盖成新的。
* 将旧的 Gitea 二制文件覆盖成新的。
* 启动 Gitea 实例。
在 Linux 系统上自动行以上步骤的脚本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 来获取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
在 Linux 系统上自动行以上步骤的脚本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 来获取](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
## 小心你的自定义模板
Gitea 的模板结构与变量可能会随着各个版本的发布发生变化,如果你使用了自定义模板,
Gitea 的模板结构与变量可能会随着各个版本的發佈发生变化,如果你使用了自定义模板,
你得注意你的模板与你使用的 Gitea 版本的兼容性。
如果自定义模板与 Gitea 版本不兼容,你可能会遇到:

View File

@@ -6,45 +6,45 @@ aliases:
- /zh-tw/windows-service
---
# 注册 Windows 服务
# 注册 Windows 服务
## 准备工作
在 C:\gitea\custom\conf\app.ini 中行了以下更改:
在 C:\gitea\custom\conf\app.ini 中行了以下更改:
```ini title="app.ini"
RUN_USER = COMPUTERNAME$
```
将 Gitea 设置以本地系统用户运行。
将 Gitea 设置以本地系统使用者运行。
COMPUTERNAME 是从命令行中运行 `echo %COMPUTERNAME%` 后得到的响应。如果响应是 `USER-PC`,那么 `RUN_USER = USER-PC$`。
COMPUTERNAME 是从命令行中运行 `echo %COMPUTERNAME%` 后得到的響應。如果響應是 `USER-PC`,那么 `RUN_USER = USER-PC$`。
### 使用绝对路径
如果您使用 SQLite3将 `PATH` 更改包含完整路径:
如果您使用 SQLite3将 `PATH` 更改包含完整路径:
```ini title="app.ini"
[database]
PATH = c:/gitea/data/gitea.db
```
## 注册 Windows 服务
## 注册 Windows 服务
要注册 Windows 服务,首先以 Administrator 身份运行 `cmd`,然后行以下命令:
要注册 Windows 服务,首先以 Administrator 身份运行 `cmd`,然后行以下命令:
```
sc.exe create gitea start= auto binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""
```
别忘了将 `C:\gitea` 替换成你的 Gitea 安装目录
别忘了将 `C:\gitea` 替换成你的 Gitea 安裝目錄
之后在控制面板打开 "Windows Services",搜索 "gitea",右键择 "Run"。在浏览器打开 `http://localhost:3000` 就可以访问了。(如果你修改了端口,访问对的端口3000 是默认端口)。
之后在控制面板打开 "Windows Services",搜索 "gitea",右键择 "Run"。在浏览器打开 `http://localhost:3000` 就可以访问了。(如果你修改了端口,访问对的端口3000 是默认端口)。
### 服务启动
### 服务启动
据观察在启动期间加载的系统上Gitea 服务可能法启动,在 Windows 事件日志中记录超时。
在这种情况下,将启动型更改`Automatic-Delayed`。这可以在服务建期间完成,或者通运行配置命令来完成。
据观察在启动期间加载的系统上Gitea 服务可能法启动,在 Windows 事件日志中记录超时。
在这种情况下,将启动型更改`Automatic-Delayed`。这可以在服务建期间完成,或者通运行配置命令来完成。
```
sc.exe config gitea start= delayed-auto
@@ -52,7 +52,7 @@ sc.exe config gitea start= delayed-auto
### 添加启动依赖项
要将启动依赖项添加到 Gitea Windows 服务(例如 Mysql、Mariadb管理员,然后运行以下命令:
要将启动依赖项添加到 Gitea Windows 服务(例如 Mysql、Mariadb管理员,然后运行以下命令:
```
sc.exe config gitea depend= mariadb
@@ -62,7 +62,7 @@ sc.exe config gitea depend= mariadb
## 从 Windows 服务中删除
以 Administrator 身份运行 `cmd`,然后行以下命令:
以 Administrator 身份运行 `cmd`,然后行以下命令:
```
sc.exe delete gitea

View File

@@ -6,19 +6,19 @@ aliases:
- /zh-tw/install-with-docker-rootless
---
# 使用 Docker 安 (rootless)
# 使用 Docker 安 (rootless)
Gitea 在其 Docker Hub 组织中提供自动更新的 Docker 镜像。您可以始终使用最新的稳定标签,或使用其他处理 Docker 镜像更新的服务。
Gitea 在其 Docker Hub 組織中提供自动更新的 Docker 镜像。您可以始终使用最新的稳定標籤,或使用其他处理 Docker 镜像更新的服务。
rootless 镜像使用 Gitea 内部 SSH 功能来提供 Git 协议,但不支持 OpenSSH。
本参考设置指南将用户引导通基于 `docker-compose` 的设置。但是,`docker-compose` 的安超出了本文的范围。要安`docker-compose` 本身, 按照官方的 [说明](https://docs.docker.com/compose/install/)行操作。
本参考设置指南将使用者引导通基于 `docker-compose` 的设置。但是,`docker-compose` 的安超出了本文的范围。要安`docker-compose` 本身, 按照官方的 [说明](https://docs.docker.com/compose/install/)行操作。
## 基础设置
最简的设置只需建一个卷和一个网络,`docker.gitea.com/gitea:latest-rootless` 镜像作服务启动。由于没有可用的数据库,可以使用 SQLite3 来初始化一个。
最简的设置只需建一个卷和一个网络,`docker.gitea.com/gitea:latest-rootless` 镜像作服务启动。由于没有可用的数据库,可以使用 SQLite3 来初始化一个。
建一个名 `data``config`:
一个名 `data``config`:
```sh
mkdir -p gitea/{data,config}
@@ -26,7 +26,7 @@ cd gitea
touch docker-compose.yml
```
然后将以下内容粘贴到名 `docker-compose.yml` 的文件中:
然后将以下内容粘贴到名 `docker-compose.yml` 的文件中:
```yaml
version: "2"
@@ -45,19 +45,19 @@ services:
- "2222:2222"
```
注意,卷由在配置文件中指定的 UID/GID 的用户/组所有。默认情况下Docker 中的 Gitea 将使用 uid:1000 gid:1000。如果需要您可以使用以下命令设置这些文件夹的所有权
注意,卷由在配置文件中指定的 UID/GID 的使用者/组所有。默认情况下Docker 中的 Gitea 将使用 uid:1000 gid:1000。如果需要您可以使用以下命令设置这些文件夹的所有权
```sh
sudo chown 1000:1000 config/ data/
```
> 如果未卷设置正确的权限,容器可能法启动。
> 如果未卷设置正确的权限,容器可能法启动。
对于稳定版本,您可以使用 `:latest-rootless``:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-dev-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。
對於稳定版本,您可以使用 `:latest-rootless``:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 標籤。如果您想运行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。
## 自定义端口
要将集成的 SSH 和 Web 服务器绑定到不同的端口,调整端口部分。通常只需更改主机端口保持容器内的端口不变。
要将集成的 SSH 和 Web 服务器绑定到不同的端口,调整端口部分。通常只需更改主机端口保持容器内的端口不变。
```diff
version: "2"
@@ -80,7 +80,7 @@ services:
## MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,对上面建的 `docker-compose.yml` 文件行以下更改。
要将 Gitea 与 MySQL 数据库结合使用,对上面建`docker-compose.yml` 文件行以下更改。
```diff
version: "2"
@@ -120,7 +120,7 @@ services:
## PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,对上面建的 `docker-compose.yml` 文件行以下更改。
要将 Gitea 与 PostgreSQL 数据库结合使用,对上面建`docker-compose.yml` 文件行以下更改。
```diff
version: "2"
@@ -159,7 +159,7 @@ services:
## 命名卷 (Named Volumes)
要使用命名卷 (Named Volumes) 而不是主机卷 (Host Volumes)`docker-compose.yml` 配置中定义和使用命名卷。这样的更改将自动建所需的卷。您不需要担心权限问题Docker 会自动处理。
要使用命名卷 (Named Volumes) 而不是主机卷 (Host Volumes)`docker-compose.yml` 配置中定义和使用命名卷。这样的更改将自动建所需的卷。您不需要担心权限问题Docker 会自动处理。
```diff
version: "2"
@@ -186,13 +186,13 @@ services:
- "2222:2222"
```
MySQL 或 PostgreSQL 容器需要单独创建
MySQL 或 PostgreSQL 容器需要單独建立
## 自定义用户
## 自定义使用者
你可以择使用自定义用户 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主机用户 `git` 的定义,使用命令 `id -u git` 将其添加到 `docker-compose.yml` 文件中:
请确用户对保挂载的文件夹具有写权限。
你可以择使用自定义使用者 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主机使用者 `git` 的定义,使用命令 `id -u git` 将其添加到 `docker-compose.yml` 文件中:
請确使用者对保挂载的文件夹具有写权限。
```diff
version: "2"
@@ -214,19 +214,19 @@ services:
## 启动
要启动基于 `docker-compose` 的这个设置,请执`docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正确启动。可以使用 `docker-compose logs` 命令查看日志。
要启动基于 `docker-compose` 的这个设置,請執`docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正确启动。可以使用 `docker-compose logs` 命令查看日志。
要关闭设置,请执`docker-compose down` 命令。这将停止和终止容器,但卷仍将存在。
要关闭设置,請執`docker-compose down` 命令。这将停止和终止容器,但卷仍将存在。
注意:如果在 HTTP 上使用的是非 3000 端口,将 app.ini 更改匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
注意:如果在 HTTP 上使用的是非 3000 端口,将 app.ini 更改匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
## 安
## 安
在通 `docker-compose` 启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea完成安装过程。访问 `http://<服务器-IP>:3000` 按照安向导行操作。如果数据库是使用上述文中的 `docker-compose` 设置启动的,注意必使用 `db`数据库主机名。
在通 `docker-compose` 启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea完成安裝過程。访问 `http://<服务器-IP>:3000` 按照安向导行操作。如果数据库是使用上述文中的 `docker-compose` 设置启动的,注意必使用 `db`数据库主机名。
## 自定义
自定义文件的位置位于 `/var/lib/gitea/custom`可以在这里找到有关自定义的文件说明。如果使用主机卷host volumes很容易访问这些文件如果使用命名卷named volumes则可以通另一个容器或直接访问 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea`行访问。在安后,配置文件将保存在 `/etc/gitea/app.ini` 中。
自定义文件的位置位于 `/var/lib/gitea/custom`可以在这里找到有关自定义的文件说明。如果使用主机卷host volumes很容易访问这些文件如果使用命名卷named volumes则可以通另一个容器或直接访问 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea`行访问。在安后,配置文件将保存在 `/etc/gitea/app.ini` 中。
## 升级
@@ -234,10 +234,10 @@ services:
:exclamation::exclamation: **确保您已将数据卷迁移到 Docker 容器之外的其他位置** :exclamation::exclamation:
:::
要将安升级到最新版本,按照以下步骤操作:
要将安升级到最新版本,按照以下步骤操作:
```bash
# 如果在 docker-compose.yml 中指定了版本,编辑文件以更新版本
# 如果在 docker-compose.yml 中指定了版本,编辑文件以更新版本
# 拉取新的镜像
docker-compose pull
# 启动一个新的容器,自动移除旧的容器
@@ -247,18 +247,18 @@ docker-compose up -d
## 从标准镜像升级
- 备份您的设置
- 将卷挂载点从 `/data` 更改 `/var/lib/gitea`
- 如果使用了自定义的 `app.ini`将其移动到新的挂载到 `/etc/gitea` 的卷中
- 将卷中的文件夹gitea重命名 custom
- 将卷挂载点从 `/data` 更改 `/var/lib/gitea`
- 如果使用了自定义的 `app.ini`将其移动到新的挂载到 `/etc/gitea` 的卷中
- 将卷中的文件夹gitea重命名 custom
- 如果需要,编辑 `app.ini`
- 设置 `START_SSH_SERVER = true`
- 使用镜像 ` docker.gitea.com/gitea:@dockerVersion@-rootless`
## 使用环境变量管理部署
除了上述的环境变量外,`app.ini` 中的任何设置都可以通形式 `GITEA__SECTION_NAME__KEY_NAME` 的环境变量行设置或覆盖。这些设置在每次 Docker 容器启动时都会生效。完整信息参考[这里](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
除了上述的环境变量外,`app.ini` 中的任何设置都可以通形式 `GITEA__SECTION_NAME__KEY_NAME` 的环境变量行设置或覆盖。这些设置在每次 Docker 容器启动时都会生效。完整信息参考[这里](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
这些环境变量可以在 `docker-compose.yml` 中传递给 Docker 容器。以下示例将启用 SMTP 邮件服务器,如果主机上设置了所需的环境变量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD或者在与 `docker-compose.yml` 相同目中的 `.env` 文件中设置了这些环境变量:
这些环境变量可以在 `docker-compose.yml` 中传递给 Docker 容器。以下示例将启用 SMTP 邮件服务器,如果主机上设置了所需的环境变量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD或者在与 `docker-compose.yml` 相同目中的 `.env` 文件中设置了这些环境变量:
```bash
...
@@ -278,32 +278,32 @@ services:
# SSH 容器透传
由于 SSH 在容器内运行,如果需要 SSH 支持,需要将 SSH 从主机透传到容器。一种择是在容器内运行 SSH使用非标准端口(或将主机端口移动到非标准端口)。另一种可能更直接的择是将主机上的 SSH 命令转发到容器。下面解释了这种设置。
由于 SSH 在容器内运行,如果需要 SSH 支持,需要将 SSH 从主机透传到容器。一种择是在容器内运行 SSH使用非标准端口(或将主机端口移动到非标准端口)。另一种可能更直接的择是将主机上的 SSH 命令转发到容器。下面解释了这种设置。
本指南假设您已在主机上建了一个名 `git`用户,并具有运行 `docker exec` 的权限,且 Gitea 容器的名称为 `gitea`。您需要修改该用户的 shell以将命令转发到容器内的 `sh`行文件,使用 `docker exec`
本指南假设您已在主机上建了一个名 `git`使用者,並具有运行 `docker exec` 的权限,且 Gitea 容器的名稱為 `gitea`。您需要修改該使用者的 shell以将命令转发到容器内的 `sh`行文件,使用 `docker exec`
首先,在主机上建文件 `/usr/local/bin/gitea-shell`填入以下内容:
首先,在主机上建文件 `/usr/local/bin/gitea-shell`填入以下内容:
```bash
#!/bin/sh
/usr/bin/docker exec -i --env SSH_ORIGINAL_COMMAND="$SSH_ORIGINAL_COMMAND" gitea sh "$@"
```
注意上述 docker 命令中的 `gitea` 是容器的名。如果您的容器名不同,记得更改。
注意上述 docker 命令中的 `gitea` 是容器的名。如果您的容器名不同,记得更改。
还应确保正确设置了 shell 包装器的权限:
還應确保正确设置了 shell 包装器的权限:
```bash
sudo chmod +x /usr/local/bin/gitea-shell
```
一旦包装器就位,您可以将其设置 `git` 用户的 shell
一旦包装器就位,您可以将其设置 `git` 使用者的 shell
```bash
sudo usermod -s /usr/local/bin/gitea-shell git
```
在,所有的 SSH 命令都会被转发到容器,您需要在主机上设置 SSH 认证。这可以通利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 来匹配 Gitea 接受的密钥。在主机的 `/etc/ssh/sshd_config` 文件中添加以下代码块:
在,所有的 SSH 命令都会被转发到容器,您需要在主机上设置 SSH 認證。这可以通利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 来匹配 Gitea 接受的密钥。在主机的 `/etc/ssh/sshd_config` 文件中添加以下代码块:
```bash
Match User git
@@ -311,7 +311,7 @@ Match User git
AuthorizedKeysCommand /usr/bin/docker exec -i gitea /usr/local/bin/gitea keys -c /etc/gitea/app.ini -e git -u %u -t %t -k %k
```
(从 1.16.0 开始,您将不需要设置 `-c /etc/gitea/app.ini` 项。)
(从 1.16.0 开始,您将不需要设置 `-c /etc/gitea/app.ini` 项。)
剩下的就是重新启动 SSH 服务器:
@@ -321,5 +321,5 @@ sudo systemctl restart sshd
**注意**
这实际上没有使用 Docker 的 SSH而是仅仅使用了围绕它的命令。
这实际上没有使用 Docker 的 SSH而是僅僅使用了围绕它的命令。
从理论上讲,您可以不运行内部的 SSH 服务器。

View File

@@ -6,15 +6,15 @@ aliases:
- /zh-tw/install-with-docker
---
# 使用 Docker 安
# 使用 Docker 安
Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始终使用最新的稳定标签或使用其他服务来更新 Docker 镜像。
Gitea 在其 Docker Hub 組織内提供自动更新的 Docker 镜像。可以始终使用最新的稳定標籤或使用其他服务来更新 Docker 镜像。
参考设置指导用户完成基于 `docker-compose` 的设置,但是 `docker-compose` 的安不在本文的范围之内。要安 `docker-compose` 本身,遵循官方[说明](https://docs.docker.com/compose/install/)。
参考设置指导使用者完成基于 `docker-compose` 的设置,但是 `docker-compose` 的安不在本文的范围之内。要安 `docker-compose` 本身,遵循官方[说明](https://docs.docker.com/compose/install/)。
## 基本
最简的设置只是建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。建一个类似 `gitea` 的目录,并将以下内容粘贴到名 `docker-compose.yml` 的文件中。注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能法启动。另注意,标签 `:latest` 将安当前的开发版本。对于稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`
最简的设置只是建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。建一个类似 `gitea` 的目錄,並将以下内容粘贴到名 `docker-compose.yml` 的文件中。注意,該卷應由配置文件中指定的 UID/GID 的使用者/组拥有。如果您不授予卷正确的权限,则容器可能法启动。另注意,標籤 `:latest` 将安当前的开发版本。對於稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`
```yaml
version: "3"
@@ -44,7 +44,7 @@ services:
## 端口
要将集成的 openSSH 守护程和 Web 服务器绑定到其他端口,调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。
要将集成的 openSSH 守护程和 Web 服务器绑定到其他端口,调整端口部分。通常,只需更改主机端口,容器内的端口保持原样即可。
```diff
version: "3"
@@ -78,7 +78,7 @@ services:
### MySQL 数据库
要将 Gitea 与 MySQL 数据库结合使用,将这些更改用于上面建的 `docker-compose.yml` 文件。
要将 Gitea 与 MySQL 数据库结合使用,将这些更改用于上面建`docker-compose.yml` 文件。
```diff
version: "3"
@@ -128,7 +128,7 @@ services:
### PostgreSQL 数据库
要将 Gitea 与 PostgreSQL 数据库结合使用,将这些更改用于上面建的 `docker-compose.yml` 文件。
要将 Gitea 与 PostgreSQL 数据库结合使用,将这些更改用于上面建`docker-compose.yml` 文件。
```diff
version: "3"
@@ -177,7 +177,7 @@ services:
## 命名卷
要使用命名卷而不是主机卷,`docker-compose.yml` 配置中定义使用命名卷。此更改将自动建所需的卷。您需担心命名卷的权限Docker 将自动处理问题。
要使用命名卷而不是主机卷,`docker-compose.yml` 配置中定义使用命名卷。此更改将自动建所需的卷。您需担心命名卷的权限Docker 将自动处理问题。
```diff
version: "3"
@@ -207,51 +207,51 @@ services:
- "222:22"
```
MySQL 或 PostgreSQL 容器将需要分别建。
MySQL 或 PostgreSQL 容器将需要分别建
## 启动
要基于 `docker-compose` 启动此设置,请执`docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 将显示 Gitea 是否正确启动。可以使用 `docker-compose logs` 查看日志。
要基于 `docker-compose` 启动此设置,請執`docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 将显示 Gitea 是否正确启动。可以使用 `docker-compose logs` 查看日志。
要关闭设置,请执`docker-compose down`。这将停止杀死容器。这些卷将仍然存在。
要关闭设置,請執`docker-compose down`。这将停止杀死容器。这些卷将仍然存在。
注意:如果在 http 上使用非 3000 端口,更改 app.ini 以匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
注意:如果在 http 上使用非 3000 端口,更改 app.ini 以匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
## 安
## 安
`docker-compose` 启动 Docker 安后,应该可以使用喜欢的浏览器访问 Gitea以完成安。访问 http://server-ip:3000 遵循安向导。如果数据库是通上述 `docker-compose` 设置启动的,注意,必`db` 用作数据库主机名。
`docker-compose` 启动 Docker 安后,應該可以使用喜欢的浏览器访问 Gitea以完成安。访问 http://server-ip:3000 遵循安向导。如果数据库是通上述 `docker-compose` 设置启动的,注意,必`db` 用作数据库主机名。
## 环境变量
您可以通环境变量配置 Gitea 的一些设置:
您可以通环境变量配置 Gitea 的一些设置:
(默认值以**粗**显示)
(默认值以**粗**显示)
- `APP_NAME`**“Gitea: Git with a cup of tea”**用程序名,在页面标题中使用。
- `RUN_MODE`**prod**用程序运行模式,会影性能和调试。"dev""prod"或"test"。
- `APP_NAME`**“Gitea: Git with a cup of tea”**用程序名,在页面标题中使用。
- `RUN_MODE`**prod**用程序运行模式,会影性能和调试。"dev""prod"或"test"。
- `DOMAIN`**localhost**:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
- `SSH_DOMAIN`**localhost**服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- `SSH_DOMAIN`**localhost**服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- `SSH_PORT`**22**:克隆 URL 中显示的 SSH 端口。
- `SSH_LISTEN_PORT`**%(SSH_PORT)s**:内置 SSH 服务器的端口。
- `DISABLE_SSH`**false**:如果不可用,禁用 SSH 功能。如果要禁用 SSH 功能,则在安 Gitea 时将 SSH 端口设置 `0`
- `DISABLE_SSH`**false**:如果不可用,禁用 SSH 功能。如果要禁用 SSH 功能,则在安 Gitea 时将 SSH 端口设置 `0`
- `HTTP_PORT`**3000**HTTP 监听端口。
- `ROOT_URL`**""**:覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
- `LFS_START_SERVER`**false**:启用 git-lfs 支持。
- `DB_TYPE`**sqlite3**:正在使用的数据库型[mysqlpostgresmssqlsqlite3]。
- `DB_TYPE`**sqlite3**:正在使用的数据库型[mysqlpostgresmssqlsqlite3]。
- `DB_HOST`**localhost:3306**:数据库主机地址和端口。
- `DB_NAME`**gitea**:数据库名
- `DB_USER`**root**:数据库用户名。
- `DB_PASSWD`**"_empty_"** :数据库用户密码。如果您在密中使用特殊字符,使用“您的密码”进行引用。
- `INSTALL_LOCK`**false**:禁止访问安页面。
- `SECRET_KEY`**""** :全局密钥。这应该更改。如果它具有一个值`INSTALL_LOCK` 空,则 `INSTALL_LOCK` 将自动设置 `true`
- `DISABLE_REGISTRATION`**false**:禁用注册,之后只有管理员才能为用户创建帐户
- `REQUIRE_SIGNIN_VIEW`**false**:启用此项可强制用户登录以查看任何页面。
- `USER_UID`**1000**:在容器内运行 Gitea 的用户的 UIDUnix 用户 ID。如果使用主机卷则将其与 `/data` 卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。
- `USER_GID`**1000**:在容器内运行 Gitea 的用户的 GIDUnix 组 ID。如果使用主机卷则将其与 `/data` 卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。
- `DB_NAME`**gitea**:数据库名
- `DB_USER`**root**:数据库使用者名。
- `DB_PASSWD`**"_empty_"** :数据库使用者密碼。如果您在密中使用特殊字符,使用“您的密碼”進行引用。
- `INSTALL_LOCK`**false**:禁止访问安页面。
- `SECRET_KEY`**""** :全局密钥。这應該更改。如果它具有一个值`INSTALL_LOCK` 空,则 `INSTALL_LOCK` 将自动设置 `true`
- `DISABLE_REGISTRATION`**false**:禁用注册,之后只有管理员才能為使用者建立帳戶
- `REQUIRE_SIGNIN_VIEW`**false**:启用此项可强制使用者登入以查看任何页面。
- `USER_UID`**1000**:在容器内运行 Gitea 的使用者的 UIDUnix 使用者 ID。如果使用主机卷则将其与 `/data` 卷的所有者的 UID 匹配(對於命名卷,则不需要这样做)。
- `USER_GID`**1000**:在容器内运行 Gitea 的使用者的 GIDUnix 组 ID。如果使用主机卷则将其与 `/data` 卷的所有者的 GID 匹配(對於命名卷,则不需要这样做)。
## 自定义
[此处](../administration/customizing-gitea.md)描述的定制文件放在 `/data/gitea`中。如果使用主机卷,则访问这些文件非常容易;对于命名卷,可以通另一个容器或通直接访问 `/var/lib/docker/volumes/gitea_gitea/_data` 来完成。安后,配置文件将保存在 `/data/gitea/conf/app.ini` 中。
[此处](../administration/customizing-gitea.md)描述的定制文件放在 `/data/gitea`中。如果使用主机卷,则访问这些文件非常容易;對於命名卷,可以通另一个容器或通直接访问 `/var/lib/docker/volumes/gitea_gitea/_data` 来完成。安后,配置文件将保存在 `/data/gitea/conf/app.ini` 中。
## 升级
@@ -259,7 +259,7 @@ MySQL 或 PostgreSQL 容器将需要分别创建。
:exclamation::exclamation: **确保已将数据卷到 Docker 容器外部的某个位置** :exclamation::exclamation:
:::
要将安升级到最新版本:
要将安升级到最新版本:
```bash
# Edit `docker-compose.yml` to update the version, if you have one specified
@@ -271,7 +271,7 @@ docker-compose up -d
## 使用环境变量管理部署
除了上面的环境变量之外,`app.ini` 中的任何设置都可以使用以下形式的环境变量行设置或覆盖:`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器启动时都会用这些设置。 完整信息在[这里](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
除了上面的环境变量之外,`app.ini` 中的任何设置都可以使用以下形式的环境变量行设置或覆盖:`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器启动时都会用这些设置。 完整信息在[这里](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
```bash
...
@@ -286,7 +286,7 @@ services:
- GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}"""
```
Gitea 将每次新安自动生成新的 `SECRET_KEY` 将它们写入 `app.ini`。 如果您想手动设置 `SECRET_KEY`,您可以使用以下 docker 命令来使用 Gitea 内置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安装后请妥善保管您的 `SECRET_KEY`,如若丢失则法解密已加密的数据。
Gitea 将每次新安自动生成新的 `SECRET_KEY` 将它们写入 `app.ini`。 如果您想手动设置 `SECRET_KEY`,您可以使用以下 docker 命令来使用 Gitea 内置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安裝后請妥善保管您的 `SECRET_KEY`,如若丢失则法解密已加密的数据。
以下命令将向 `stdout` 输出一个新的 `SECRET_KEY``INTERNAL_TOKEN`,然后您可以将其放入环境变量中。
@@ -307,9 +307,9 @@ services:
## SSH 容器直通
由于 SSH 在容器内运行,因此,如果需要 SSH 支持,则需要将 SSH 从主机传递到容器。一种择是在非标准端口上运行容器 SSH或将主机端口移至非标准端口。另一个可能更直接的择是将 SSH 连接从主机转发到容器。下面将说明此设置。
由于 SSH 在容器内运行,因此,如果需要 SSH 支持,则需要将 SSH 从主机传递到容器。一种择是在非标准端口上运行容器 SSH或将主机端口移至非标准端口。另一个可能更直接的择是将 SSH 连接从主机转发到容器。下面将说明此设置。
本指南假定您已经在名 `git` 的主机上建了一个用户,该用户与容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`。这些值可以在 `docker-compose.yml` 中设置环境变量:
本指南假定您已经在名 `git` 的主机上建了一个使用者,該使用者与容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`。这些值可以在 `docker-compose.yml` 中设置环境变量:
```bash
environment:
@@ -317,26 +317,26 @@ environment:
- USER_GID=1000
```
接下来将主机的 `/home/git/.ssh` 装入容器。否则SSH 身份验证将无法在容器内运行。
接下来将主机的 `/home/git/.ssh` 装入容器。否则SSH 身份驗證将無法在容器内运行。
```bash
volumes:
- /home/git/.ssh/:/data/git/.ssh
```
在,需要在主机上建 SSH 密钥对。密钥对将用于向主机验证主机上的 `git` 用户
在,需要在主机上建 SSH 密钥对。密钥对将用于向主机驗證主机上的 `git` 使用者
```bash
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
```
在下一步中,需要在主机上建一个名 `/usr/local/bin/gitea` 的文件(具有可行权限)。文件将发出从主机到容器的 SSH 转发。将以下内容添加到 `/usr/local/bin/gitea`
在下一步中,需要在主机上建一个名 `/usr/local/bin/gitea` 的文件(具有可行权限)。文件将发出从主机到容器的 SSH 转发。将以下内容添加到 `/usr/local/bin/gitea`
```bash
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
```
了使转发正常工作需要将容器22的 SSH 端口映射到 `docker-compose.yml` 中的主机端口 2222。由于此端口不需要暴露给外界因此可以将其映射到主机的 `localhost`
了使转发正常工作需要将容器22的 SSH 端口映射到 `docker-compose.yml` 中的主机端口 2222。由于此端口不需要暴露给外界因此可以将其映射到主机的 `localhost`
```bash
ports:
@@ -344,9 +344,9 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式行操作。因此,将您在上面建的密钥“Gitea 主机密钥”)的公共密钥添加到 `~/git/.ssh/authorized_keys`。这可以通 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 用户的公钥需要“按原样”添加,而通 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]`前缀。
另外,主机上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以与 Gitea 容器内的 `authorized_keys` 相同的方式行操作。因此,将您在上面建的密钥“Gitea 主机密钥”)的公共密钥添加到 `/home/git/.ssh/authorized_keys`。这可以通 `echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:来自 `git` 使用者的公钥需要“按原样”添加,而通 Gitea 网络界面添加的所有其他公钥将以 `command="/app [...]`前缀。
文件应该看起来像:
文件應該看起来像:
```bash
# SSH pubkey from git user
@@ -356,18 +356,18 @@ ssh-rsa <Gitea Host Key>
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <user pubkey>
```
这是详细的说明,当发出 SSH 求时会发生什么:
这是详细的说明,当发出 SSH 求时会发生什么:
1. 使用 `git` 用户向主机发出 SSH 求,例如 `git clone git@domain:user/repo.git`
2.`/home/git/.ssh/authorized_keys` 中,命令`/usr/local/bin/gitea` 脚本。
3. `/usr/local/bin/gitea` 将 SSH 求转发到端口 2222端口已映射到容器的 SSH 端口22
4. 由于 `/home/git/.ssh/authorized_keys` 中存在 `git` 用户的公钥,因此身份验证主机 → 容器成功,且 SSH 求转发到在 docker 容器中运行的 Gitea。
1. 使用 `git` 使用者向主机发出 SSH 求,例如 `git clone git@domain:user/repo.git`
2.`/home/git/.ssh/authorized_keys` 中,命令`/usr/local/bin/gitea` 脚本。
3. `/usr/local/bin/gitea` 将 SSH 求转发到端口 2222端口已映射到容器的 SSH 端口22
4. 由于 `/home/git/.ssh/authorized_keys` 中存在 `git` 使用者的公钥,因此身份驗證主机 → 容器成功,且 SSH 求转发到在 docker 容器中运行的 Gitea。
如果在 Gitea Web 界面中添加了新的 SSH 密钥,它将以与有密钥相同的方式附加到 `.ssh/authorized_keys` 中。
如果在 Gitea Web 界面中添加了新的 SSH 密钥,它将以与有密钥相同的方式附加到 `.ssh/authorized_keys` 中。
**注意**
SSH 容器直通在以下情况下有效
SSH 容器直通在以下情况下有效
- 在容器中使用 `opensshd`
- 如果未将 `AuthorizedKeysCommand``SSH_CREATE_AUTHORIZED_KEYS_FILE = false` 结合使用以禁用授权文件密钥生成

View File

@@ -10,36 +10,36 @@ sidebar_position: 20
## 要求
建议在Docker容器中运行Job因此您需要首先安Docker。
确保Docker守护程正在运行。
建议在Docker容器中运行Job因此您需要首先安Docker。
确保Docker守护程正在运行。
其他与Docker API兼容的OCI容器引擎也应该可以正常工作,但尚未经测试。
其他与Docker API兼容的OCI容器引擎也應該可以正常工作,但尚未经测试。
但是如果您确定要直接在主机上运行Job则不需要Docker。
## 安
## 安
有多种安Act Runner的方法。
有多种安Act Runner的方法。
### 下载二制文件
### 下载二制文件
您可以从[发布页面](https://gitea.com/gitea/act_runner/releases)下载二制文件。
您可以从[發佈页面](https://gitea.com/gitea/act_runner/releases)下载二制文件。
然而,如果您想使用最新的夜间构建版本,可以从[下载页面](https://dl.gitea.com/act_runner/)下载。
下载二制文件时,确保您已经下载了适用于您的平台的正确版本。
您可以通运行以下命令行检查:
下载二制文件时,确保您已经下载了适用于您的平台的正确版本。
您可以通运行以下命令行检查:
```bash
chmod +x act_runner
./act_runner --version
```
如果看到版本信息,则表示您已经下载了正确的二制文件。
如果看到版本信息,则表示您已经下载了正确的二制文件。
### 使用 Docker 镜像
您可以使用[docker hub](https://hub.docker.com/r/gitea/act_runner/tags)上的Docker镜像。
与二制文件类似,您可以使用`nightly`标签使用最新的夜间构建版本,而`latest`标签是最新的稳定版本。
与二制文件类似,您可以使用`nightly`標籤使用最新的夜间构建版本,而`latest`標籤是最新的稳定版本。
```bash
docker pull docker.io/gitea/act_runner:latest # for the latest stable release
@@ -48,9 +48,9 @@ docker pull docker.io/gitea/act_runner:nightly # for the latest nightly build
## 配置
配置通配置文件行。它是可的,当没有指定配置文件时,将使用默认配置。
配置通配置文件行。它是可的,当没有指定配置文件时,将使用默认配置。
您可以通运行以下命令生成配置文件:
您可以通运行以下命令生成配置文件:
```bash
./act_runner generate-config
@@ -63,54 +63,54 @@ docker pull docker.io/gitea/act_runner:nightly # for the latest nightly build
./act_runner --config config.yaml [command]
```
您亦可以如下使用 docker 建配置文件:
您亦可以如下使用 docker 建配置文件:
```bash
docker run --entrypoint="" --rm -it docker.io/gitea/act_runner:latest act_runner generate-config > config.yaml
```
当使用Docker镜像时可以使用`CONFIG_FILE`环境变量指定配置文件。确保将文件作卷挂载到容器中:
当使用Docker镜像时可以使用`CONFIG_FILE`环境变量指定配置文件。确保将文件作卷挂载到容器中:
```bash
docker run -v $(pwd)/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
```
您可能注意到上面的命令都是不完整的,因为现在还不是运行Act Runner的时候。
您可能注意到上面的命令都是不完整的,因為現在還不是运行Act Runner的时候。
在运行Act Runner之前我们需要首先将其注册到您的Gitea实例中。
## 注册
在运行Act Runner之前需要行注册,因Runner需要知道从哪里获取Job并且对于Gitea实例来说识别Runner也很重要。
在运行Act Runner之前需要行注册,因Runner需要知道从哪里获取Job並且對於Gitea实例来说识别Runner也很重要。
### Runner级别
您可以在不同级别上注册Runner它可以是
- 实例级别Runner将实例中的所有存库运行Job。
- 组织级别Runner将为组织中的所有存库运行Job。
-库级别Runner将其所属的存库运行Job。
- 实例级别Runner将实例中的所有存库运行Job。
- 組織级别Runner将為組織中的所有存库运行Job。
-库级别Runner将其所属的存库运行Job。
注意,即使存库具有自己的存库级别Runner它仍然可以使用实例级别或组织级别Runner。未来的版本可能提供更多对此行更好控制的项。
注意,即使存库具有自己的存库级别Runner它仍然可以使用实例级别或組織级别Runner。未来的版本可能提供更多对此行更好控制的项。
### 获取注册令牌
Runner级别决定了从哪里获取注册令牌。
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
如果您法看到设置页面,确保您具有正确的权限且已启用 Actions。
如果您法看到设置页面,确保您具有正确的权限且已启用 Actions。
注册令牌的格式是一个随机字符串 `D0gvfu2iHfUjNqCYVljVyRV14fISpJxxxxxxxxxx`
注册令牌也可以通 Gitea 的 [命令行](../../administration/command-line.md#actions-generate-runner-token) 获得:
注册令牌也可以通 Gitea 的 [命令行](../../administration/command-line.md#actions-generate-runner-token) 获得:
```
gitea --config /etc/gitea/app.ini actions generate-runner-token
```
用户也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 环境变量以在 Gitea 启动时设置全局的注册令牌,例如:
使用者也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 环境变量以在 Gitea 启动时设置全局的注册令牌,例如:
```
openssl rand -hex 24 > /some-dir/runner-token
@@ -118,19 +118,19 @@ export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
./gitea --config ...
```
来自环境变量的令牌在通 Web 界面或 API 重置(重新建新令牌)前将一直有效。
来自环境变量的令牌在通 Web 界面或 API 重置(重新建新令牌)前将一直有效。
令牌可用于注册多个 Runner直到使用 Web 界面中的令牌重置链接将其撤销替换新令牌。
令牌可用于注册多个 Runner直到使用 Web 界面中的令牌重置链接将其撤销替换新令牌。
### 注册Runner
可以通运行以下命令来注册Act Runner
可以通运行以下命令来注册Act Runner
```bash
./act_runner register
```
或者,您可以使用 `--config` 项来指定前面部分提到的配置文件。
或者,您可以使用 `--config` 项来指定前面部分提到的配置文件。
```bash
./act_runner --config config.yaml register
@@ -140,26 +140,26 @@ export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
- Gitea 实例的 URL例如 `https://gitea.com/``http://192.168.8.8:3000/`
- 注册令牌。
- Runner名(可)。如果留空,将使用主机名。
- Runner标签(可)。如果留空,将使用默认标签
- Runner名(可)。如果留空,将使用主机名。
- Runner標籤(可)。如果留空,将使用默认標籤
您可能对Runner标签感到困惑,稍后将对其行解释。
您可能对Runner標籤感到困惑,稍后将对其行解释。
如果您想以非交互方式注册Runner可以使用参数执行以下操作。
如果您想以非交互方式注册Runner可以使用參數執行以下操作。
```bash
./act_runner register --no-interactive --instance <instance_url> --token <registration_token> --name <runner_name> --labels <runner_labels>
```
注册Runner后您可以在当前目中找到一个名 `.runner` 的新文件。文件存注册信息。
不要手动编辑文件。
如果此文件丢失或损坏,可以直接删除它重新注册。
注册Runner后您可以在当前目中找到一个名 `.runner` 的新文件。文件存注册信息。
不要手动编辑文件。
如果此文件丢失或损坏,可以直接删除它重新注册。
如果您想将注册信息存在其他位置,在配置文件中指定,不要忘记指定 `--config` 项。
如果您想将注册信息存在其他位置,在配置文件中指定,不要忘记指定 `--config` 项。
### 使用Docker注册Runner
如果您使用的是Docker镜像注册行会略有不同。在这种情况下,注册和运行合并为一步因此您需要在运行Act Runner时指定注册信息。
如果您使用的是Docker镜像注册行会略有不同。在这种情况下,注册和运行合並為一步因此您需要在运行Act Runner时指定注册信息。
```bash
docker run \
@@ -176,7 +176,7 @@ docker run \
```
您可能注意到我们已将`/var/run/docker.sock`挂载到容器中。
这是因Act Runner将在Docker容器中运行Job因此它需要与Docker守护进程进行通信。
这是因Act Runner将在Docker容器中运行Job因此它需要与Docker守护進程進行通信。
如前所述如果要在主机上直接运行Job可以将其移除。
需要明确的是,这里的 "主机" 实际上指的是当前运行 Act Runner的容器而不是主机机器本身。
@@ -205,11 +205,11 @@ services:
如果你不打算在工作流中使用 `actions/cache`,你可以忽略本段。
如果您在使用 `actions/cache` 时没有行额外的配置,将会返回以下错误信息:
如果您在使用 `actions/cache` 时没有行额外的配置,将会返回以下错误信息:
> Failed to restore: getCacheEntry failed: connect ETIMEDOUT IP:PORT
这个错误的原因是 runner 容器和作业容器位于不同的网络中,因此作业容器法访问 runner 容器。
因此,配置 cache 动作以确保其正常运行是非常重要的。按照以下步骤操作:
这个错误的原因是 runner 容器和作业容器位于不同的网络中,因此作业容器法访问 runner 容器。
因此,配置 cache 动作以确保其正常运行是非常重要的。按照以下步骤操作:
- 1.获取 Runner 容器所在主机的 LAN本地局域网 IP 地址。
- 2.获取一个 Runner 容器所在主机的空闲端口号。
@@ -234,27 +234,27 @@ docker run \
-d gitea/act_runner:nightly
```
### 标签
### 標籤
Runner的标签用于确定Runner可以运行哪些Job以及如何运行它们。
Runner的標籤用于确定Runner可以运行哪些Job以及如何运行它们。
默认标签为`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
它们是逗号分隔的列表,每个项目都是一个标签
默认標籤為`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
它们是逗号分隔的列表,每个项目都是一个標籤
让我们以 `ubuntu-22.04:docker://node:16-bullseye` 例。
它意味着Runner可以运行带有`runs-on: ubuntu-22.04`的Job并且该Job将在使用`node:16-bullseye`镜像的Docker容器中运行。
让我们以 `ubuntu-22.04:docker://node:16-bullseye` 例。
它意味着Runner可以运行带有`runs-on: ubuntu-22.04`的Job並且該Job将在使用`node:16-bullseye`镜像的Docker容器中运行。
如果默认镜像法满足您的需求,且您有足够的磁盘空间可以使用更好、更大的镜像,您可以将其更改`ubuntu-22.04:docker://<您喜欢的镜像>`
如果默认镜像法满足您的需求,且您有足够的硬碟空间可以使用更好、更大的镜像,您可以将其更改`ubuntu-22.04:docker://<您喜欢的镜像>`
您可以在[act 镜像](https://github.com/nektos/act/blob/master/IMAGES.md)上找到更多有用的镜像。
如果您想直接在主机上运行Job您可以将其更改`ubuntu-22.04:host``ubuntu-22.04``:host`是可的。
然而,我们建议您使用类似`linux_amd64:host``windows:host`的特殊名,以避免误用。
如果您想直接在主机上运行Job您可以将其更改`ubuntu-22.04:host``ubuntu-22.04``:host`是可的。
然而,我们建议您使用类似`linux_amd64:host``windows:host`的特殊名,以避免误用。
从 Gitea 1.21 开始,您可以通修改 runner 的配置文件中的 `container.labels` 来更改标签(如果没有配置文件,参考 [配置教程](#配置)),通过执`./act_runner daemon --config config.yaml` 命令重启 runner 之后,这些新定义的标签就会生效。
从 Gitea 1.21 开始,您可以通修改 runner 的配置文件中的 `container.labels` 来更改標籤(如果没有配置文件,参考 [配置教程](#配置)),通過執`./act_runner daemon --config config.yaml` 命令重启 runner 之后,这些新定义的標籤就会生效。
## 运行
注册完Runner后您可以通运行以下命令来运行它:
注册完Runner后您可以通运行以下命令来运行它:
```bash
./act_runner daemon
@@ -262,6 +262,6 @@ Runner的标签用于确定Runner可以运行哪些Job以及如何运行它们
./act_runner daemon --config config.yaml
```
Runner将从Gitea实例获取Job自动运行它们。
Runner将从Gitea实例获取Job自动运行它们。
由于Act Runner仍处于开发中建议定期检查最新版本并进行升级。
由于Act Runner仍处于开发中建议定期检查最新版本並進行升级。

View File

@@ -12,13 +12,13 @@ sidebar_position: 15
### Action URL绝对路径
Gitea Actions支持通URL绝对路径定义actions这意味着您可以使用来自任何Git存库的Actions。
Gitea Actions支持通URL绝对路径定义actions这意味着您可以使用来自任何Git存库的Actions。
例如,`uses: https://github.com/actions/checkout@v4``uses: http://your_gitea.com/owner/repo@branch`
### 使用Go编写Actions
Gitea Actions支持使用Go编写Actions。
参阅[建Go Actions](https://blog.gitea.com/creating-go-actions/)。
参阅[Go Actions](https://blog.gitea.com/creating-go-actions/)。
### 支持非标准的调度语法 @yearly, @monthly, @weekly, @daily, @hourly
@@ -29,97 +29,97 @@ Github Actions 不支持这些语法,详见: https://docs.github.com/en/acti
### `concurrency`
这是用于一次运行一个Job。
参阅[使用](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
参阅[使用](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
Gitea Actions目前不支持此功能。
### `run-name`
这是工作流生成的工作流运行的名
参阅[GitHub Actions 的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
这是工作流生成的工作流运行的名
参阅[GitHub Actions 的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
Gitea Actions目前不支持此功能。
### `permissions`和`jobs.<job_id>.permissions`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.timeout-minutes`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.continue-on-error`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
Gitea Actions目前不支持此功能。
### `jobs.<job_id>.environment`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
Gitea Actions 目前不支持此功能。
### 复杂的`runs-on`
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
Gitea Actions目前只支持`runs-on: xyz``runs-on: [xyz]`
### `hashFiles`表达式
参阅[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
参阅[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
Gitea Actions目前不支持此功能如果使用它结果将始终空字符串。
Gitea Actions目前不支持此功能如果使用它结果将始终空字符串。
解决方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
解决方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
## 缺失的功能
### 问题匹配器
问题匹配器是一种描Actions输出以查找指定正则表达式模式并在用户界面中突出显示信息的方法。
参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
问题匹配器是一种描Actions输出以查找指定正则表达式模式並在使用者界面中突出显示信息的方法。
参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
Gitea Actions目前不支持此功能。
### 错误建注释
### 错误建注释
参阅[错误建注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
参阅[错误建注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
Gitea Actions目前不支持此功能。
### 表达式
对于 [表达式](https://docs.github.com/en/actions/learn-github-actions/expressions), 当前 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支持。
對於 [表达式](https://docs.github.com/en/actions/learn-github-actions/expressions), 当前 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支持。
## 缺失的UI功能
### 预处理和后处理步骤
预处理和后处理步骤在Job日志用户界面中没有自己的用户界面。
预处理和后处理步骤在Job日志使用者界面中没有自己的使用者界面。
### 服务步骤
服务步骤在Job日志用户界面中没有自己的用户界面。
服务步骤在Job日志使用者界面中没有自己的使用者界面。
## 不一样的行
## 不一样的行
### 下载Actions
`[actions].DEFAULT_ACTIONS_URL` 保持默认值 `github`Gitea将会从 https://github.com 下载相对路径的actions。比如
`[actions].DEFAULT_ACTIONS_URL` 保持默认值 `github`Gitea将会从 https://github.com 下载相对路径的actions。比如
如果你使用 `uses: actions/checkout@v4`Gitea将会从 https://github.com/actions/checkout.git 下载这个 actions 项目。
如果你想要从另外一个 Git服务下载actions你只需要使用绝对URL `uses: https://gitea.com/actions/checkout@v4` 来下载。
如果你的 Gitea 实例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改 `[actions].DEFAULT_ACTIONS_URL = self`。这样所有的相对路径的actions引用将不再会从 github.com 去下载,而会从这个 Gitea 实例自己的仓库中去下载。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下载 actions。
如果你的 Gitea 实例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改 `[actions].DEFAULT_ACTIONS_URL = self`。这样所有的相对路径的actions引用将不再会从 github.com 去下载,而会从这个 Gitea 实例自己的存放庫中去下载。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下载 actions。
设置`[actions].DEFAULT_ACTIONS_URL`行配置。参阅[配置备忘](../../administration/config-cheat-sheet.md#actions-actions)。
设置`[actions].DEFAULT_ACTIONS_URL`行配置。参阅[配置备忘](../../administration/config-cheat-sheet.md#actions-actions)。
### 上下文可用性
不检查上下文可用性因此您可以在更多地方使用env上下文。
参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。
参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。

View File

@@ -6,119 +6,119 @@ sidebar_position: 40
# Gitea Actions设计
Gitea Actions由多个组件组成。本文将对它们行逐个描述。
Gitea Actions由多个组件组成。本文将对它们行逐个描述。
## Act
[nektos/act](https://github.com/nektos/act) 项目是一个优秀的工具允许你在本地运行GitHub Actions。
我们受到了它的启发,思考它是否可能Gitea运行Actions。
我们受到了它的启发,思考它是否可能Gitea运行Actions。
然而,尽管[nektos/act](https://github.com/nektos/act)被设计一个命令行工具,但我们实际上需要的是一个专Gitea修改的Go库。
因此,我们在[gitea/act](https://gitea.com/gitea/act)基础上行了分叉。
然而,尽管[nektos/act](https://github.com/nektos/act)被设计一个命令行工具,但我们实际上需要的是一个专Gitea修改的Go库。
因此,我们在[gitea/act](https://gitea.com/gitea/act)基础上行了分叉。
这是一个软分叉,将定期跟上游。
虽然添加了一些自定义提交,但我们会尽力避免对原始代码行太多更改。
这是一个软分叉,将定期跟上游。
虽然添加了一些自定义提交,但我们会尽力避免对原始代码行太多更改。
分叉的 act 只是Gitea特定用途的桥接或适配器。
添加了一些额外的提交,例如:
添加了一些额外的提交,例如:
-行日志输出到日志记录器钩子以便报告给Gitea
- 禁用 GraphQL URLGitea不支持它
-行日志输出到日志记录器钩子以便报告给Gitea
- 禁用 GraphQL URLGitea不支持它
- 每个Job启动一个新的容器而不是重复使用以确保隔离性。
这些修改没有理由合到上游。
如果用户只想在本地运行可信的Actions它们是没有意义的。
这些修改没有理由合到上游。
如果使用者只想在本地运行可信的Actions它们是没有意义的。
然而,将来可能会出重叠,例如两个项目都需要的必要错误修复或新功能。
在这些情况下,我们将向上游仓库贡献变更。
然而,将来可能会出重叠,例如两个项目都需要的必要错误修复或新功能。
在这些情况下,我们将向上游存放庫贡献变更。
## act runner
Gitea的Runner被称为act runner它基于act。
Gitea的Runner被稱為act runner它基于act。
与其他CIRunner一样我们将其设计Gitea的外部部分这意味着它应该在与Gitea不同的服务器上运行。
与其他CIRunner一样我们将其设计Gitea的外部部分这意味着它應該在与Gitea不同的服务器上运行。
了确保Runner连接到正确的Gitea实例我们需要使用令牌注册它。
此外Runner通声明自己的标签向Gitea报告它可以运行的Job型。
了确保Runner连接到正确的Gitea实例我们需要使用令牌注册它。
此外Runner通声明自己的標籤向Gitea报告它可以运行的Job型。
之前,我们提到工作流文件中的 `runs-on: ubuntu-latest` 表示Job将在具有`ubuntu-latest`标签的Runner上运行。
但是Runner如何知道要运行 `ubuntu-latest`?答案在于将标签映射到环境。
这就是什么在注册程中添加自定义标签时,需要输入一些复杂内容,比如`my_custom_label:docker://centos:7`
这意味着Runner可以接受需要在`my_custom_label`上运行的Job并通过使用`centos:7`镜像的Docker容器来运行它。
之前,我们提到工作流文件中的 `runs-on: ubuntu-latest` 表示Job将在具有`ubuntu-latest`標籤的Runner上运行。
但是Runner如何知道要运行 `ubuntu-latest`?答案在于将標籤映射到环境。
这就是什么在注册程中添加自定义標籤时,需要输入一些复杂内容,比如`my_custom_label:docker://centos:7`
这意味着Runner可以接受需要在`my_custom_label`上运行的Job並通過使用`centos:7`镜像的Docker容器来运行它。
然而Docker不是唯一的择。
然而Docker不是唯一的择。
act 也支持直接在主机上运行Job。
这是通`linux_arm:host`这样的标签实现的。
这个标签表示Runner可以接受需要在`linux_arm`上运行的Job直接在主机上运行它们。
这是通`linux_arm:host`这样的標籤实現的。
这个標籤表示Runner可以接受需要在`linux_arm`上运行的Job直接在主机上运行它们。
标签的设计遵循格式`label[:schema[:args]]`
如果省略了schema则默认`host`
標籤的设计遵循格式`label[:schema[:args]]`
如果省略了schema则默认`host`
因此,
- `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带有`my_custom_label`标签的Job。
- `my_custom_label:host`:在主机上直接运行带有`my_custom_label`标签的Job。
- `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带有`my_custom_label`標籤的Job。
- `my_custom_label:host`:在主机上直接运行带有`my_custom_label`標籤的Job。
- `my_custom_label`:等同于`my_custom_label:host`
- `my_custom_label:vm:ubuntu-latest`仅为示例,未实)使用带有`ubuntu-latest` ISO的虚拟机运行带有`my_custom_label`标签的Job。
- `my_custom_label:vm:ubuntu-latest`僅為示例,未实)使用带有`ubuntu-latest` ISO的虚拟机运行带有`my_custom_label`標籤的Job。
## 通信协议
由于act runner是Gitea的独立部分我们需要一种协议让Runner与Gitea实例行通信。
然而,我们不认让Gitea监听一个新端口是个好主意。
由于act runner是Gitea的独立部分我们需要一种协议让Runner与Gitea实例行通信。
然而,我们不认让Gitea监听一个新端口是个好主意。
相反我们希望重用HTTP端口这意味着我们需要一个与HTTP兼容的协议。
因此,我们择使用基于HTTP的gRPC。
因此,我们择使用基于HTTP的gRPC。
我们使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 行连接。
有关 gRPC 的更多信息,访问[其官方网站](https://grpc.io/)。
我们使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 行连接。
有关 gRPC 的更多信息,访问[其官方网站](https://grpc.io/)。
## 网络架构
让我们来看一下整的网络架构。
这将帮助您解决一些问题,解释什么使用回环地址注册Runner是个不好的主意。
让我们来看一下整的网络架构。
这将帮助您解决一些问题,解释什么使用回环地址注册Runner是个不好的主意。
![network](/images/usage/actions/network.png)
图片中标记了四个网络连接,且箭头的方向表示建立连接的方向。
图片中标记了四个网络连接,且箭头的方向表示建立连接的方向。
### 连接 1act runner到Gitea实例
act runner 必能够连接到Gitea以接收任务发送行结果回来。
act runner 必能够连接到Gitea以接收任务发送行结果回来。
### 连接 2Job容器到Gitea实例
即使Job容器位于同一台机器上它们的网络命名空间与Runner不同。
举个例子,如果工作流中包含 `actions/checkout@v4`Job容器需要连接到Gitea来获取代码。
获取代码不总是运行某些Job所必需的但在大多数情况下是必需的。
获取代码不总是运行某些Job所必需的但在大多数情况下是必需的。
如果您使用回环地址注册Runner当Runner与Gitea在同一台机器上时Runner可以连接到Gitea。
然而如果Job容器尝试从本地主机获取代码它将失败Gitea不在同一个容器中。
然而如果Job容器尝试从本地主机获取代码它将失败Gitea不在同一个容器中。
### 连接 3act runner到互联网
当您使用诸如 `actions/checkout@v4` 的一些Actions时act runner下载的是脚本而不是Job容器。
默认情况下,它从[github.com](http://github.com/)下载,因此需要访问互联网。如果您设置的是 self
那么默认将从您的当前Gitea实例下载那么此步骤不需要连接到互联网。
默认从Docker Hub下载一些Docker镜像这也需要互联网访问。
默认从Docker Hub下载一些Docker镜像这也需要互联网访问。
然而,互联网访问不是绝对必需的。
然而,互联网访问不是绝对必需的。
您可以配置您的Gitea实例从您的内部网络设施中获取 Actions 或镜像。
实际上您的Gitea实例可以同时充当 Actions 市场和镜像注册表。
您可以将GitHub上的Actions仓库镜像到您的Gitea实例将其用作普通Actions。
而 [Gitea 容器注册](usage/packages/container.md) 可用作Docker镜像注册表。
实际上您的Gitea实例可以同时充当 Actions 市场和镜像註冊表。
您可以将GitHub上的Actions存放庫镜像到您的Gitea实例将其用作普通Actions。
而 [Gitea 容器註冊](usage/packages/container.md) 可用作Docker镜像註冊表。
### 连接 4Job容器到互联网
当使用诸如`actions/setup-go@v5`的Actions时可能需要从互联网下载资源以设置Job容器中的Go语言环境。
因此成功完成这些Actions需要访问互联网。
然而,这也是可的。
您可以使用自定义的Actions来避免依赖互联网访问或者可以使用已安所有依赖项的打包的Docker镜像来运行Job。
然而,这也是可的。
您可以使用自定义的Actions来避免依赖互联网访问或者可以使用已安所有依赖项的打包的Docker镜像来运行Job。
## 总结
使用Gitea Actions只需要确保Runner能够连接到Gitea实例。
互联网访问是可的,但如果没有互联网访问,将需要额外的工作。
换句话说当Runner能够自行查询互联网时它的工作效果最好但您不需要将其暴露给互联网论是单向还是双向)。
互联网访问是可的,但如果没有互联网访问,将需要额外的工作。
换句话说当Runner能够自行查询互联网时它的工作效果最好但您不需要将其暴露给互联网论是單向還是双向)。
如果您在使用Gitea Actions时遇到任何网络问题希望上面的图片能够帮助您行故障排除。
如果您在使用Gitea Actions时遇到任何网络问题希望上面的图片能够帮助您行故障排除。

View File

@@ -8,22 +8,22 @@ sidebar_position: 100
本页面包含一些关于Gitea Actions的常见问题和答案。
## 是否可以在我的实例中默认禁用新仓库的Actions
## 是否可以在我的实例中默认禁用新存放庫的Actions
是的,当您实例启用Actions时您可以择默认启用actions元以适用于所有新仓库
是的,当您实例启用Actions时您可以择默认启用actions元以适用于所有新存放庫
```ini
[repository]
; 去掉 repo.actions 将不会为新仓库自动启用actions
; 去掉 repo.actions 将不会為新存放庫自动启用actions
DEFAULT_REPO_UNITS = ...,repo.actions
```
## 在工作流文件中应该使用`${{ github.xyz }}`是`${{ gitea.xyz }}`
## 在工作流文件中應該使用`${{ github.xyz }}`是`${{ gitea.xyz }}`
您可以使用`github.xyz`Gitea将正常工作。
如前所述Gitea Actions的设计是与GitHub Actions兼容的。
然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出不同型的密钥(因您在Gitea上使用此工作流而不是GitHub
,这完全是可的,因目前这两个项的效果是相同的。
然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出不同型的密钥(因您在Gitea上使用此工作流而不是GitHub
,这完全是可的,因目前这两个项的效果是相同的。
## 使用`actions/checkout@v4`等Actions时Job容器会从何处下载脚本
@@ -42,46 +42,46 @@ GitHub 上有成千上万个 [Actions 脚本](https://github.com/marketplace?typ
注意,`https://``http://`前缀是必需的!
这是与 GitHub Actions 的一个区别GitHub Actions 只允许使用托管在 GitHub 上的 actions 脚本。
用户理应拥有权利去灵活决定如何运行 Actions。
使用者理應拥有权利去灵活决定如何运行 Actions。
另外,如果您希望您的 Runner 默认从您自己的 Gitea 实例下载 Actions可以通设置 `[actions].DEFAULT_ACTIONS_URL`行配置。
另外,如果您希望您的 Runner 默认从您自己的 Gitea 实例下载 Actions可以通设置 `[actions].DEFAULT_ACTIONS_URL`行配置。
参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
## 如何限制Runner的权限
Runner具有连接到您的Gitea实例的权限。
当任何Runner接收到要运行的Job时它将临时获得与Job关联的仓库的有限权限。
如果您想Runner提供更多权限允许它访问更多私有仓库或外部系统,您可以向其传递[密钥](usage/actions/secrets.md)。
Runner具有连接到您的Gitea实例的权限。
当任何Runner接收到要运行的Job时它将临时获得与Job关联的存放庫的有限权限。
如果您想Runner提供更多权限允许它访问更多私有存放庫或外部系统,您可以向其传递[密钥](usage/actions/secrets.md)。
对于 Actions 的细粒度权限控制是一项复杂的工作。
在未来,我们将添加更多项以使Gitea更可配置例如允许对仓库进行更多写访问或对同一组织中的所有仓库进行读访问。
對於 Actions 的细粒度权限控制是一项复杂的工作。
在未来,我们将添加更多项以使Gitea更可配置例如允许对存放庫進行更多写访问或对同一組織中的所有存放庫進行读访问。
## 如何避免被黑客攻
## 如何避免被黑客攻
有两种可能的攻击类未知的Runner窃取您的仓库中的代码或密钥或恶意脚本控制您的Runner。
有两种可能的攻擊類未知的Runner窃取您的存放庫中的代码或密钥或恶意脚本控制您的Runner。
避免前者意味着不允许您不认识的人您的仓库、组织或实例注册Runner。
避免前者意味着不允许您不认识的人您的存放庫、組織或实例注册Runner。
后者要复杂一些。
如果您公司使用私有的Gitea实例您可能不需要担心安全问题您信任您的同事,且可以追究他们的责任。
如果您公司使用私有的Gitea实例您可能不需要担心安全问题您信任您的同事,且可以追究他们的责任。
对于公共实例,情况略有不同。
對於公共实例,情况略有不同。
以下是我们在 [gitea.com](http://gitea.com/)上的做法:
- 我们仅为 "gitea" 组织注册Runner因此我们的Runner不会行来自其他仓库的Job。
- 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上行这样的操作,但出于安全考虑,我们择不这样做。
- 对于 fork 的拉取需要获得批准才能运行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)为其仓库或组织注册自己的Runner我们不会反对只是不会在我们的组织中使用它。然而,他们应该注意确保Runner不被他们不认识的其他用户使用。
- 我们僅為 "gitea" 組織注册Runner因此我们的Runner不会行来自其他存放庫的Job。
- 我们的Runner始终在隔离容器中运行Job。虽然可以直接在主机上行这样的操作,但出于安全考虑,我们择不这样做。
- 對於 fork 的拉取需要获得批准才能运行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)為其存放庫或組織注册自己的Runner我们不会反对只是不会在我们的組織中使用它。然而,他们應該注意确保Runner不被他们不认识的其他使用者使用。
## act runner支持哪些操作系统
它在Linux、macOS和Windows上运行良好。
虽然理论上支持其他操作系统,但需要一步测试。
虽然理论上支持其他操作系统,但需要一步测试。
需要注意的一点是,如果择直接在主机上运行Job而不是在Job容器中运行操作系统之间的环境差异可能会导致意外的失败。
需要注意的一点是,如果择直接在主机上运行Job而不是在Job容器中运行操作系统之间的环境差异可能会导致意外的失败。
例如在大多数情况下Windows上没有可用的bash而act尝试默认使用bash运行脚本。
因此您需要在工作流文件中将默认shell指定`powershell`,参考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
因此您需要在工作流文件中将默认shell指定`powershell`,参考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
```yaml
defaults:
@@ -89,66 +89,66 @@ defaults:
shell: powershell
```
## 什么择GitHub Actions什么不择与GitLab CI/CD兼容的工具
## 什么择GitHub Actions什么不择与GitLab CI/CD兼容的工具
[@lunny](https://gitea.com/lunny)在实Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释这个问题。
此外Actions不是一个CI/CD 系统,是一个自动化工具。
[@lunny](https://gitea.com/lunny)在实Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释这个问题。
此外Actions不是一个CI/CD 系统,是一个自动化工具。
在开源世界中,已经有许多[市场上的Actions](https://github.com/marketplace?type=actions)实了。
在开源世界中,已经有许多[市场上的Actions](https://github.com/marketplace?type=actions)实了。
能够重用它们是令人兴奋的。
## 如果它在多个标签上运行,例如 `runs-on: [label_a, label_b]`,会发生什么?
## 如果它在多个標籤上运行,例如 `runs-on: [label_a, label_b]`,会发生什么?
这是有效的语法。
它意味着它应该在具有`label_a` **和** `label_b`标签的Runner上运行参考[GitHub Actions的工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是act runner 不支持这种方式。
如上所述,我们将标签映射到环境:
它意味着它應該在具有`label_a` **和** `label_b`標籤的Runner上运行参考[GitHub Actions的工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是act runner 不支持这种方式。
如上所述,我们将標籤映射到环境:
- `ubuntu``ubuntu:22.04`
- `centos``centos:8`
但我们需要将标签组映射到环境,例如:
但我们需要将標籤组映射到环境,例如:
- `[ubuntu]``ubuntu:22.04`
- `[with-gpu]``linux:with-gpu`
- `[ubuntu, with-gpu]``ubuntu:22.04_with-gpu`
我们需要重新设计任务分配给Runner的方式。
具有`ubuntu``centos``with-gpu`的Runner不一定表示它可以接受`[centos, with-gpu]`的Job。
因此Runner应该通知Gitea实例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
我们需要重新设计任务分配给Runner的方式。
具有`ubuntu``centos``with-gpu`的Runner不一定表示它可以接受`[centos, with-gpu]`的Job。
因此Runner應該通知Gitea实例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
这不是一个技术问题,只是在早期设计中被忽视了。
参见[runtime.go#L65](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。
目前act runner尝试匹配标签中的每一个,使用找到的第一个匹配项。
目前act runner尝试匹配標籤中的每一个,使用找到的第一个匹配项。
## 代理标签和自定义标签对于Runner有什么区别
## 代理標籤和自定义標籤對於Runner有什么区别
![labels](/images/usage/actions/labels.png)
代理标签是由Runner在注册程中向Gitea实例报告的。
而自定义标签则是由Gitea的管理员或组织或仓库的所有者手动添加的取决于Runner所属的级别
代理標籤是由Runner在注册程中向Gitea实例报告的。
而自定义標籤则是由Gitea的管理员或組織或存放庫的所有者手动添加的取决于Runner所属的级别
然而,目前这方面的设计有待改,因它目前存在一些不完善之处。
您可以向已注册的Runner添加自定义标签,比如 `centos`,这意味着Runner将接收具有`runs-on: centos`的Job。
然而Runner可能不知道要使用哪个环境来执行该标签,导致它使用默认镜像或导致逻辑死胡同。
这个默认值可能与用户的期望不符。
然而,目前这方面的设计有待改,因它目前存在一些不完善之处。
您可以向已注册的Runner添加自定义標籤,比如 `centos`,这意味着Runner将接收具有`runs-on: centos`的Job。
然而Runner可能不知道要使用哪个环境来執行該標籤,导致它使用默认镜像或导致逻辑死胡同。
这个默认值可能与使用者的期望不符。
参见[runtime.go#L71](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。
与此同时如果您想更改Runner的标签我们建议您重新注册Runner。
与此同时如果您想更改Runner的標籤我们建议您重新注册Runner。
## Gitea Actions runner会有更多的实吗?
## Gitea Actions runner会有更多的实吗?
虽然我们希望提供更多的但由于我们有限的人力资源act runner将是唯一受支持的官方Runner。
然而,论您如何决定Gitea 和act runner都是完全开源的所以任何人都可以建一个新的/更好的实
我们支持您的择,论您如何决定。
如果您择分支act runner来建自己的版本,在您认您的更改对其他人也有帮助的情况下贡献这些更改。
虽然我们希望提供更多的但由于我们有限的人力资源act runner将是唯一受支持的官方Runner。
然而,论您如何决定Gitea 和act runner都是完全开源的所以任何人都可以建一个新的/更好的实
我们支持您的择,论您如何决定。
如果您择分支act runner来建自己的版本,在您认您的更改对其他人也有帮助的情况下贡献这些更改。
## Gitea 支持哪些工作流触发事件?
表格中列出的所有事件都是支持的,且与 GitHub 兼容。
对于仅 GitHub 支持的事件,参阅 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
表格中列出的所有事件都是支持的,且与 GitHub 兼容。
對於僅 GitHub 支持的事件,参阅 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
| 触发事件 | 活动型 |
| 触发事件 | 活动型 |
|-----------------------------|--------------------------------------------------------------------------------------------------------------------------|
| create | 不适用 |
| delete | 不适用 |
@@ -163,5 +163,5 @@ defaults:
| release | `published`, `edited` |
| registry_package | `published` |
> 对于 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取求合提交的一个预览。但是 Gitea 没有这种 reference。
> 因此Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取求的头分支而不是合提交的预览。
> 對於 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取求合提交的一个预览。但是 Gitea 没有这种 reference。
> 因此Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取求的头分支而不是合提交的预览。

View File

@@ -6,37 +6,37 @@ sidebar_position: 1
# Overview
从Gitea **1.19**版本开始Gitea Actions成了内置的CI/CD解决方案。
从Gitea **1.19**版本开始Gitea Actions成了内置的CI/CD解决方案。
## 名
## 名
Gitea Actions与[GitHub Actions](https://github.com/features/actions)相似且兼容,它的名也受到了它的启发。
了避免混淆,在这里我们明确了拼写方式:
Gitea Actions与[GitHub Actions](https://github.com/features/actions)相似且兼容,它的名也受到了它的启发。
了避免混淆,在这里我们明确了拼写方式:
- "Gitea Actions"(两个单词都大写且带有"s"是Gitea功能的名
- "GitHub Actions"是GitHub功能的名
- "Actions"根据上下文的不同可以指代以上任意一个。在本文中指代的是"Gitea Actions"。
- "Gitea Actions"(两个單詞都大写且带有"s"是Gitea功能的名
- "GitHub Actions"是GitHub功能的名
- "Actions"根据上下文的不同可以指代以上任意一个。在本文中指代的是"Gitea Actions"。
- "action"或"actions"指代一些要使用的脚本/插件,比如"actions/checkout@v4"或"actions/cache@v3"。
## Runner
和其他CI/CD解决方案一样Gitea不会自己运行Job而是将Job委托给Runner。
Gitea Actions的Runner被称为[act runner](https://gitea.com/gitea/act_runner)它是一个独立的程序也是用Go语言编写的。
Gitea Actions的Runner被稱為[act runner](https://gitea.com/gitea/act_runner)它是一个独立的程序也是用Go语言编写的。
它是基于[nektos/act](http://github.com/nektos/act)的一个[分支](https://gitea.com/gitea/act) 。
由于Runner是独立部署的可能存在潜在的安全问题。
了避免这些问题,遵循两个简单的规则
了避免这些问题,遵循两个简單的規則
- 不要你的仓库、组织或实例使用你不信任的Runner。
- 不要你不信任的仓库、组织或实例提供Runner。
- 不要你的存放庫、組織或实例使用你不信任的Runner。
- 不要你不信任的存放庫、組織或实例提供Runner。
对于内部使用的Gitea实例比如企业或个人使用的实例这两个规则不是问题,它们自然而然就是如此。
然而,对于公共的Gitea实例比如[gitea.com](https://gitea.com)在添加或使用Runner时当牢记这两个规则
對於内部使用的Gitea实例比如企业或个人使用的实例这两个規則不是问题,它们自然而然就是如此。
然而,對於公共的Gitea实例比如[gitea.com](https://gitea.com)在添加或使用Runner时当牢记这两个規則
## 状态
Gitea Actions仍然在开发中因此可能存在一些错误和缺失的功能。
且在稳定版本v1.20或更高版本)之前可能会行一些重大的更改。
且在稳定版本v1.20或更高版本)之前可能会行一些重大的更改。
如果情况发生变化,我们将在此处行更新。
因此,在其他地方找到时文章时参考此处的内容。
如果情况发生变化,我们将在此处行更新。
因此,在其他地方找到时文章时参考此处的内容。

View File

@@ -6,13 +6,13 @@ sidebar_position: 10
# 快速入门
本页面将指导您使用Gitea Actions的程。
本页面将指导您使用Gitea Actions的程。
## 设置Gitea
首先您需要一个Gitea实例。
您可以按照[](installation/from-package.md) 来设置一个新实例或升级有实例。
论您如何安或运行Gitea只要版本号是1.19.0或更高即可。
您可以按照[](installation/from-package.md) 来设置一个新实例或升级有实例。
论您如何安或运行Gitea只要版本号是1.19.0或更高即可。
从1.21.0开始默认情况下Actions是启用的。如果您正在使用1.21.0之前的版本,您需要将以下内容添加到配置文件中以启用它:
@@ -21,21 +21,21 @@ sidebar_position: 10
ENABLED=true
```
如果您想了解更多信息或在配置程中遇到任何问题,参考[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
如果您想了解更多信息或在配置程中遇到任何问题,参考[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
### 设置Runner
Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 来运行Job。
了避免消耗多资源并影响Gitea实例建议您在与Gitea实例分开的机器上启动Runner。
了避免消耗多资源並影響Gitea实例建议您在与Gitea实例分开的机器上启动Runner。
您可以使用[预构建的二制文件](http://dl.gitea.com/act_runner)或[容器镜像](https://hub.docker.com/r/gitea/act_runner/tags)来设置Runner。
您可以使用[预构建的二制文件](http://dl.gitea.com/act_runner)或[容器镜像](https://hub.docker.com/r/gitea/act_runner/tags)来设置Runner。
一步操作之前,建议您先使用预构建的二制文件以命令行方式运行它以确保它与您的环境兼容尤其是如果您在本地主机上运行Runner。
如果出问题,这样调试起来会更容易。
一步操作之前,建议您先使用预构建的二制文件以命令行方式运行它以确保它与您的环境兼容尤其是如果您在本地主机上运行Runner。
如果出问题,这样调试起来会更容易。
Runner可以在隔离的Docker容器中运行Job因此您需要确保已安Docker且Docker守护程正在运行。
虽然这不是严格必需的,因Runner也可以直接在主机上运行Job这取决于您的配置方式。
然而建议使用Docker运行Job它更安全且更易于管理。
Runner可以在隔离的Docker容器中运行Job因此您需要确保已安Docker且Docker守护程正在运行。
虽然这不是严格必需的,因Runner也可以直接在主机上运行Job这取决于您的配置方式。
然而建议使用Docker运行Job它更安全且更易于管理。
在运行Runner之前您需要使用以下命令将其注册到Gitea实例中
@@ -43,27 +43,27 @@ Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 来运行Job
./act_runner register --no-interactive --instance <instance> --token <token>
```
需要两个必需的参数`instance``token`
需要两个必需的參數`instance``token`
`instance`是您的Gitea实例的地址`http://192.168.8.8:3000``https://gitea.com`
Runner和Job容器由Runner启动以行Job将连接到此地址。
Runner和Job容器由Runner启动以行Job将连接到此地址。
这意味着它可能与用于Web访问的`ROOT_URL`不同。
使用回环地址(例如 `127.0.0.1``localhost`)是一个不好的择。
如果不确定使用哪个地址,通常择局域网地址即可。
使用回环地址(例如 `127.0.0.1``localhost`)是一个不好的择。
如果不确定使用哪个地址,通常择局域网地址即可。
`token` 用于身份验证和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,且不能用于注册多个Runner。
您可以从以下位置获取不同级别的`token`,从而建出相级别的`runner`
`token` 用于身份驗證和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,且不能用于注册多个Runner。
您可以从以下位置获取不同级别的`token`,从而建出相级别的`runner`
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 组织级别:组织设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
-库级别:存库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
![register runner](/images/usage/actions/register-runner.png)
注册后,当前目中将出一个名 `.runner` 的新文件,文件存了注册信息。
不要手动编辑文件。
如果文件丢失或损坏,只需删除它然后重新注册即可。
注册后,当前目中将出一个名 `.runner` 的新文件,文件存了注册信息。
不要手动编辑文件。
如果文件丢失或损坏,只需删除它然后重新注册即可。
最后是时候启动Runner了
@@ -75,20 +75,20 @@ Runner和Job容器由Runner启动以执行Job将连接到此地址。
![view runner](/images/usage/actions/view-runner.png)
您可以通访问[act runner](usage/actions/act-runner.md) 获取更多信息。
您可以通访问[act runner](usage/actions/act-runner.md) 获取更多信息。
### 使用Actions
即使对于启用了Gitea实例的Actions库仍默认禁用Actions。
即使對於启用了Gitea实例的Actions库仍默认禁用Actions。
要启用它,转到存库的设置页面,例如`your_gitea.com/<owner>/repo/settings`,然后启用`Enable Repository Actions`
要启用它,转到存库的设置页面,例如`your_gitea.com/<owner>/repo/settings`,然后启用`Enable Repository Actions`
![enable actions](/images/usage/actions/enable-actions.png)
接下来的步骤可能相当复杂。
您需要学习Actions的[工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)编写您想要的工作流文件。
您需要学习Actions的[工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions)编写您想要的工作流文件。
,我们可以从一个简的演示开始:
,我们可以从一个简的演示开始:
```yaml
name: Gitea Actions Demo
@@ -112,19 +112,19 @@ jobs:
- run: echo "🍏 This job's status is ${{ job.status }}."
```
您可以将上述示例上传一个以`.yaml`扩展名的文件,放在存库的`.gitea/workflows/`中,例如`.gitea/workflows/demo.yaml`
您可以将上述示例上传一个以`.yaml`扩展名的文件,放在存库的`.gitea/workflows/`中,例如`.gitea/workflows/demo.yaml`
您可能会注意到,这与[GitHub Actions的快速入门](https://docs.github.com/en/actions/quickstart)非常相似。
这是因Gitea Actions在尽可能兼容GitHub Actions的基础上行设计。
这是因Gitea Actions在尽可能兼容GitHub Actions的基础上行设计。
注意,演示文件中包含一些表情符号。
确保您的数据库支持它们特别是在使用MySQL时。
如果字符集不是`utf8mb4`,将出错误,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
有关更多信息,参阅[数据库准备工作](../../installation/database-preparation.md#mysqlmariadb)。
注意,演示文件中包含一些表情符号。
确保您的数据库支持它们特别是在使用MySQL时。
如果字符集不是`utf8mb4`,将出错误,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
有关更多信息,参阅[数据库准备工作](../../installation/database-preparation.md#mysqlmariadb)。
或者,您可以从演示文件中删除所有表情符号,然后再尝试一次。
`on: [push]` 这一行表示当您向该存储库推送提交时,工作流将被触发。
然而,当您上传 YAML 文件时,它也会推送一个提交,所以您应该在"Actions"标签中看到一个新的任务。
`on: [push]` 这一行表示当您向該存儲库推送提交时,工作流将被触发。
然而,当您上传 YAML 文件时,它也会推送一个提交,所以您應該在"Actions"標籤中看到一个新的任务。
![view job](/images/usage/actions/view-job.png)

View File

@@ -6,23 +6,23 @@ sidebar_position: 50
# 密钥管理
密钥管理允许您在用户、组织或仓库中存敏感信息。
密钥管理允许您在使用者、組織或存放庫中存敏感信息。
密钥管理在 Gitea 1.19+ 版本中可用。
## 设置密钥名
## 设置密钥名
以下规则适用于密钥名
以下規則适用于密钥名
- 密钥名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 密钥名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 密钥名不能以 `GITHUB_``GITEA_` 前缀开头
- 密钥名不能以 `GITHUB_``GITEA_` 前缀開頭
- 密钥名不能以数字开头
- 密钥名不能以数字開頭
- 密钥名不区分大小写。
- 密钥名不区分大小写。
- 密钥名称在创建它们的级别上必是唯一的。
- 密钥名稱在建立它们的级别上必是唯一的。
例如,对于在仓库级别创建的密钥,它在该仓库中必具有唯一的名称;对于在组织级别创建的密钥,它在级别上必具有唯一的名
例如,對於在存放庫级别建立的密钥,它在該存放庫中必具有唯一的名稱;對於在組織级别建立的密钥,它在级别上必具有唯一的名
如果在多个级别上存在具有相同名的密钥,则最低级别的密钥优先生效。例如,如果组织级别的密钥与仓库级别的密钥具有相同的名,则仓库级别的密钥将优先生效。
如果在多个级别上存在具有相同名的密钥,则最低级别的密钥优先生效。例如,如果組織级别的密钥与存放庫级别的密钥具有相同的名,则存放庫级别的密钥将优先生效。

View File

@@ -6,25 +6,25 @@ sidebar_position: 25
# 变量
您可以创建用户、组织和仓库级别的变量。变量的级别取决于建它的位置。当建变量时,变量的名会被
转换大写在yaml文件中引用时需要使用大写。
您可以建立使用者、組織和存放庫级别的变量。变量的级别取决于建它的位置。当建变量时,变量的名会被
转换大写在yaml文件中引用时需要使用大写。
## 命名规则
## 命名規則
以下规则适用于变量名:
以下規則适用于变量名:
- 变量名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 变量名不能以 `GITHUB_``GITEA_` 前缀开头
- 变量名不能以数字开头
- 变量名不区分大小写。
- 变量名称在创建它们的级别上必是唯一的。
- 变量名不能 `CI`
- 变量名只能包含字母数字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允许使用空格。
- 变量名不能以 `GITHUB_``GITEA_` 前缀開頭
- 变量名不能以数字開頭
- 变量名不区分大小写。
- 变量名稱在建立它们的级别上必是唯一的。
- 变量名不能 `CI`
## 使用
建配置变量后,它们将自动填充到 `vars` 上下文中。您可以在工作流中使用类似 `${{ vars.VARIABLE_NAME }}` 这样的表达式来使用它们。
配置变量后,它们将自动填充到 `vars` 上下文中。您可以在工作流中使用类似 `${{ vars.VARIABLE_NAME }}` 这样的表达式来使用它们。
## 优先级
如果同名变量存在于多个级别,则级别最低的变量优先。
仓库级别的变量总是比组织或者用户级别的变量优先被中。
存放庫级别的变量总是比組織或者使用者级别的变量优先被中。

View File

@@ -8,37 +8,37 @@ aliases:
# AGit
在 Gitea `1.13` 版本中,添加了对 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支持。AGit 允许用户在没有仓库写入权限的情况下直接建拉取求,也不需要分叉仓库。这有助于减少重复仓库的数量,降低不必要的磁盘使用量。
在 Gitea `1.13` 版本中,添加了对 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支持。AGit 允许使用者在没有存放庫写入权限的情况下直接建拉取求,也不需要分叉存放庫。这有助于减少重复存放庫的数量,降低不必要的硬碟使用量。
:::note
服务器端需要 Git 版本 2.29 或更高版本才能正常运行。
:::
## 使用 AGit 建 PR
## 使用 AGit 建 PR
AGit 允许在推送代码到远程仓库时创建 PR并请求)。
在推送时使用特定的 refspecgit 中已知的位置标识符),可以实这一功能。
AGit 允许在推送代码到远程存放庫时建立 PR並請求)。
在推送时使用特定的 refspecgit 中已知的位置标识符),可以实这一功能。
下面的示例说明了这一点:
```shell
git push origin HEAD:refs/for/main
```
命令的结构如下:
命令的结构如下:
- `HEAD`:目标分支
- `refs/<for|draft|for-review>/<branch>`:目标 PR
- `for`建一个以 `<branch>` 目标分支的普通 PR
- `refs/<for|draft|for-review>/<branch>`:目标 PR
- `for`:建一个以 `<branch>` 目标分支的普通 PR
- `draft`/`for-review`:目前被静默忽略
- `<branch>/<session>`:要打开 PR 的目标分支
- `-o <topic|title|description>`PR 的
- `-o <topic|title|description>`PR 的
- `title`PR 的标题
- `topic`PR 应该打开的分支名
- `topic`PR 應該打开的分支名
- `description`PR 的描述
- `force-push=true`: 是否强制更新目标分支
- 注意: 如果不传值,只用 `-o force-push` 也同样可以正常工作。
下面是另一个高级示例,用于建一个以 `topic``title``description` 为参数的新 PR目标分支是 `main`
下面是另一个高级示例,用于建一个以 `topic``title``description` 為參數的新 PR目标分支是 `main`
```shell
git push origin HEAD:refs/for/main -o topic="Topic of my PR" -o title="Title of the PR" -o description="# The PR Description\nThis can be **any** markdown content.\n- [x] Ok"

View File

@@ -7,12 +7,12 @@ aliases:
- /zh-tw/clone-filters
---
# 克隆滤器 (部分克隆)
# 克隆滤器 (部分克隆)
Git 引入了 `--filter` 项用于 `git clone` 命令,该选项可以滤掉大文件和对象(如 blob从而创建一个仓库的部分克隆。克隆滤器对于大型仓库和/或按流量计费的连接特别有用,因完全克隆(不使用 `--filter`)可能会很昂贵(需要下载所有历史数据)。
Git 引入了 `--filter` 项用于 `git clone` 命令,該選项可以滤掉大文件和对象(如 blob从而建立一个存放庫的部分克隆。克隆滤器對於大型存放庫和/或按流量计费的连接特别有用,因完全克隆(不使用 `--filter`)可能会很昂贵(需要下载所有历史数据)。
这需要 Git 2.22 或更高版本,论是在 Gitea 服务器上是在客户端上都需要如此。了使克隆滤器正常工作,确保客户端上的 Git 版本至少与服务器上的版本相同(或更高)。以管理员身份登到 Gitea然后转到管理后台 -> 用配置,查看服务器的 Git 版本。
这需要 Git 2.22 或更高版本,论是在 Gitea 服务器上是在客户端上都需要如此。了使克隆滤器正常工作,确保客户端上的 Git 版本至少与服务器上的版本相同(或更高)。以管理员身份登到 Gitea然后转到管理后台 -> 用配置,查看服务器的 Git 版本。
默认情况下,克隆滤器是启用的,除非在 `[git]` 下将 `DISABLE_PARTIAL_CLONE` 设置 `true`
默认情况下,克隆滤器是启用的,除非在 `[git]` 下将 `DISABLE_PARTIAL_CLONE` 设置 `true`
参阅 [GitHub 博客文章:了解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以获取克隆滤器的常见用法( Blob 和树的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以获取更高级的用法(例如按文件大小滤和取消滤以将部分克隆转换完全克隆)。
参阅 [GitHub 博客文章:了解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以获取克隆滤器的常见用法( Blob 和树的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以获取更高级的用法(例如按文件大小滤和取消滤以将部分克隆转换完全克隆)。

View File

@@ -9,30 +9,30 @@ aliases:
# 邮件接收
Gitea 支持通接收邮件行多种操作。本页面描述了如何行设置。
Gitea 支持通接收邮件行多种操作。本页面描述了如何行设置。
## 要求
处理接收的电子邮件需要启用 IMAP 功能的电子邮件帐户
处理接收的电子邮件需要启用 IMAP 功能的电子邮件帳戶
推荐的策略是使用 [电子邮件子地址](https://en.wikipedia.org/wiki/Email_address#Sub-addressing),但也可以使用 catch-all 邮箱。
接收电子邮件地址中包含一个用户/操作特定的令牌,告诉 Gitea 应执行哪个操作。
此令牌应该出现`To``Delivered-To` 头字段中。
接收电子邮件地址中包含一个使用者/操作特定的令牌,告诉 Gitea 應執行哪个操作。
此令牌應該出現`To``Delivered-To` 头字段中。
Gitea 会尝试检测自动回复并跳过它们,电子邮件服务器也应该配置以减少接收到的干扰(垃圾邮件、通讯订阅等)。
Gitea 会尝试检测自动回复並跳過它们,电子邮件服务器也應該配置以减少接收到的干扰(垃圾邮件、通讯订阅等)。
## 配置
要激活处理接收的电子邮件消息功能,您需要在配置文件中配置 `email.incoming` 部分。
`REPLY_TO_ADDRESS` 包含电子邮件客户端将要回复的地址。
地址需要包含 `%{token}` 占位符,占位符将被替换描述用户/操作的令牌。
此占位符在地址中只能出一次,且必位于地址的用户部分(`@` 之前)。
地址需要包含 `%{token}` 占位符,占位符将被替换描述使用者/操作的令牌。
此占位符在地址中只能出一次,且必位于地址的使用者部分(`@` 之前)。
使用电子邮件子地址的示例可能如下:`incoming+%{token}@example.com`
如果使用 catch-all 邮箱,则占位符可以出在地址的用户部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
如果使用 catch-all 邮箱,则占位符可以出在地址的使用者部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
## 安全性
择用于接收传入电子邮件的域时要小心。
择用于接收传入电子邮件的域时要小心。
建议在子域名上接收传入电子邮件,例如 `incoming.example.com`,以防止与运行在 `example.com` 上的其他服务可能存在的安全问题。

View File

@@ -7,9 +7,9 @@ aliases:
- /zh-tw/issue-pull-request-templates
---
# 从模板创建工单与合并请
# 从模板建立工單与合並請
开发者可以利用问题模板创建工单与合并请求,其目的在于规范参与者的语言表达。
开发者可以利用问题模板建立工單与合並請求,其目的在于规范参与者的语言表达。
## 模板介绍
@@ -19,27 +19,27 @@ Gitea 支持两种格式的模板Markdown 和 YAML。
在 Gitea 中存在两种用途的 Markdown 模板:
- `ISSUE_TEMPLATE/bug-report.md` 用于规范工的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md` 用于规范合并请求的 Markdown 文本描述
- `ISSUE_TEMPLATE/bug-report.md` 用于规范工的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md` 用于规范合並請求的 Markdown 文本描述
对于以上 Markdown 模板,我们推荐您将它们放置到项目目 `.gitea` 行收纳。
對於以上 Markdown 模板,我们推荐您将它们放置到项目目 `.gitea` 行收纳。
### YAML 模板
用 YAML 语法编写的模板相比 Markdown 可以实更丰富的功能,利用表单实现诸如:问卷调查、字符校验。在 Gitea 中的 YAML 同样支持两种用途:
用 YAML 语法编写的模板相比 Markdown 可以实更丰富的功能,利用表單实現诸如:问卷调查、字符校验。在 Gitea 中的 YAML 同样支持两种用途:
- `ISSUE_TEMPLATE/bug-report.yaml` 用于建问卷调查形式的工
- `PULL_REQUEST_TEMPLATE.yaml` 用于创建表单形式的合并请
- `ISSUE_TEMPLATE/bug-report.yaml` 用于建问卷调查形式的工
- `PULL_REQUEST_TEMPLATE.yaml` 用于建立表單形式的合並請
对于以上 YAML 模板,我们同样推荐您将它们放置到项目目 `.gitea` 行收纳。
對於以上 YAML 模板,我们同样推荐您将它们放置到项目目 `.gitea` 行收纳。
##### 表支持通 URL 查询参数传值
##### 表支持通 URL 查询參數传值
当新建工页面 URL 以 `?title=Issue+Title&body=Issue+Text` 查询参数,表将使用其中的参数key-value填充表内容。
当新建工页面 URL 以 `?title=Issue+Title&body=Issue+Text` 查询參數,表将使用其中的參數key-value填充表内容。
### Gitea 支持的模板文件路径
模板文件名:
模板文件名:
- `ISSUE_TEMPLATE.md`
- `ISSUE_TEMPLATE.yaml`
@@ -60,7 +60,7 @@ Gitea 支持两种格式的模板Markdown 和 YAML。
- `.github/issue_template.yaml`
- `.github/issue_template.yml`
并请求模板:
並請求模板:
- `PULL_REQUEST_TEMPLATE.md`
- `PULL_REQUEST_TEMPLATE.yaml`
@@ -81,9 +81,9 @@ Gitea 支持两种格式的模板Markdown 和 YAML。
- `.github/pull_request_template.yaml`
- `.github/pull_request_template.yml`
#### 工模板目
#### 工模板目
由于工存在多种Gitea 支持将工模板统一收纳到 `ISSUE_TEMPLATE`。以下是 Gitea 支持的工模板目:
由于工存在多种Gitea 支持将工模板统一收纳到 `ISSUE_TEMPLATE`。以下是 Gitea 支持的工模板目:
- `ISSUE_TEMPLATE`
- `issue_template`
@@ -94,7 +94,7 @@ Gitea 支持两种格式的模板Markdown 和 YAML。
- `.gitlab/ISSUE_TEMPLATE`
- `.gitlab/issue_template`
支持混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工模板。另外,合并请求模板不支持目存放。
支持混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工模板。另外,合並請求模板不支持目存放。
## Markdown 模板语法
@@ -112,19 +112,19 @@ labels:
This is the template!
```
上面的示例表示用户从列表中择一个工模板时,列表会展示模板名 `Template Name` 和模板描述 `This template is for testing!`。 同时,标题会预先填充 `[TEST]`,而正文将预先填充 `This is the template!` Issue 会被指派给 `user1`。 最后Issue 会被分配两个标签`bug``help needed`且将问题指向 `main` 分支。
上面的示例表示使用者从列表中择一个工模板时,列表会展示模板名 `Template Name` 和模板描述 `This template is for testing!`。 同时,标题会预先填充 `[TEST]`,而正文将预先填充 `This is the template!` Issue 会被指派给 `user1`。 最后Issue 会被分配两个標籤`bug``help needed`且将问题指向 `main` 分支。
## YAML 模板语法
YAML 模板格式如下,相比 Markdown 模板提供了更多实用性的功能。
```yaml
name: 单名称
about: 描述
name: 單名稱
about: 描述
title: 默认标题
body: 内容
type: 定义表元素
id: 定义表标号
body: 内容
type: 定义表元素
id: 定义表标号
attributes: 扩展的属性
validations: 内容校验
```
@@ -195,89 +195,89 @@ body:
### Markdown 段落
您可以在 YAML 模板中使用 `markdown` 元素开发者提供额外的上下文支撑,这部分内容会作为创建工单的提示但不会作为工单内容提交。
您可以在 YAML 模板中使用 `markdown` 元素开发者提供额外的上下文支撑,这部分内容会作為建立工單的提示但不会作為工單内容提交。
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------- | ------------------------------ | ---- | ------ | ------ | ------ |
| `value` | 渲染的文本。支持 Markdown 格式 | 必 | 字符串 | - | - |
| `value` | 渲染的文本。支持 Markdown 格式 | 必 | 字符串 | - | - |
### Textarea 多行文本输入框
您可以使用 `textarea` 元素在表中添加多行文本输入框。 除了输入文本,开发者可以在 `textarea` 区域附加文件。
您可以使用 `textarea` 元素在表中添加多行文本输入框。 除了输入文本,开发者可以在 `textarea` 区域附加文件。
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ----------------------------------------------------------------------------------------------------- | ---- | ------ | -------- | ------------------ |
| `label` | 预期用户输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的文本区域的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在文本区域空白时呈 | 可 | 字符串 | 空字符串 | - |
| `value` | 在文本区域中预填充的文本。 | 可 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本将格式化代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 | 可 | 字符串 | - | Gitea 支持的语言。 |
| `label` | 预期使用者输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的文本区域的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在文本区域空白时呈 | 可 | 字符串 | 空字符串 | - |
| `value` | 在文本区域中预填充的文本。 | 可 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本将格式化代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 | 可 | 字符串 | - | Gitea 支持的语言。 |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
### Input 行输入框
### Input 行输入框
您可以使用 `input` 元素添加行文本字段到表
您可以使用 `input` 元素添加行文本字段到表
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ---------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 预期用户输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的字段的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在字段空白时呈。 | 可 | 字符串 | 空字符串 | - |
| `value` | 字段中预填的文本。 | 可 | 字符串 | - | - |
| `label` | 预期使用者输入的简短描述,也以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的字段的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的占位符,在字段空白时呈。 | 可 | 字符串 | 空字符串 | - |
| `value` | 字段中预填的文本。 | 可 | 字符串 | - | - |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ----------- | -------------------------------- | ---- | ------ | ------ | -------------------------------------------------------------- |
| `required` | 防止在未填内容时提交表。 | 可 | 布尔型 | false | - |
| `is_number` | 防止在未填数字时提交表。 | 可 | 布尔型 | false | - |
| `regex` | 直到满足了与正则表达式匹配的值。 | 可 | 字符串 | - | [正则表达式](https://en.wikipedia.org/wiki/Regular_expression) |
| `required` | 防止在未填内容时提交表。 | 可 | 布尔型 | false | - |
| `is_number` | 防止在未填数字时提交表。 | 可 | 布尔型 | false | - |
| `regex` | 直到满足了与正则表达式匹配的值。 | 可 | 字符串 | - | [正则表达式](https://en.wikipedia.org/wiki/Regular_expression) |
### Dropdown 下拉菜
### Dropdown 下拉菜
您可以使用 `dropdown` 元素在表中添加下拉菜
您可以使用 `dropdown` 元素在表中添加下拉菜
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | --------------------------------------------------------- | ---- | ---------- | -------- | ------ |
| `label` | 预期用户输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的下拉列表的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `multiple` | 确定用户是否可以择多个项。 | 可 | 布尔型 | false | - |
| `options` | 用户可以择的项列表。 不能空,所有择必是不同的。 | 必 | 字符串数组 | - | - |
| `label` | 预期使用者输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 提供上下文或指导的下拉列表的描述,以表形式显示。 | 可 | 字符串 | 空字符串 | - |
| `multiple` | 确定使用者是否可以择多个项。 | 可 | 布尔型 | false | - |
| `options` | 使用者可以择的项列表。 不能空,所有择必是不同的。 | 必 | 字符串数组 | - | - |
`validations` 子项提供以下文本校验参数
`validations` 子项提供以下文本校验參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
### Checkboxes 复
### Checkboxes 复
您可以使用 `checkboxes` 元素添加一组复框到表
您可以使用 `checkboxes` 元素添加一组复框到表
`attributes` 子项提供了以下扩展能力:
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ------------- | ----------------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 预期用户输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 复框集的描述,以表形式显示。 支持 Markdown 格式。 | 可 | 字符串 | 空字符串 | - |
| `options` | 用户可以择的复框列表。 有关语法,参阅下文。 | 必 | 数组 | - | - |
| `label` | 预期使用者输入的简短描述,以表形式显示。 | 必 | 字符串 | - | - |
| `description` | 复框集的描述,以表形式显示。 支持 Markdown 格式。 | 可 | 字符串 | 空字符串 | - |
| `options` | 使用者可以择的复框列表。 有关语法,参阅下文。 | 必 | 数组 | - | - |
对于 `options`,您可以设置以下参数
對於 `options`,您可以设置以下參數
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| 键 | 描述 | 必 | 型 | 默认值 | 有效值 |
| ---------- | --------------------------------------------------------------------------------- | ---- | ------ | ------ | ------ |
| `label` | 项的标识符,显示在表中。 支持 Markdown 用于粗或斜文本格式化和超文本链接。 | 必 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |
| `label` | 项的标识符,显示在表中。 支持 Markdown 用于粗或斜文本格式化和超文本链接。 | 必 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表。 | 可 | 布尔型 | false | - |

View File

@@ -6,28 +6,28 @@ aliases:
- /zh-tw/labels
---
# 标签
# 標籤
您可以使用标签对工和合并请求进行分类,提高对它们的概览。
您可以使用標籤对工和合並請求進行分类,提高对它们的概览。
## 创建标签
## 建立標籤
对于仓库,可以在 `工Issues`点击 `标签Labels`创建标签
對於存放庫,可以在 `工Issues`點擊 `標籤Labels`建立標籤
对于组织,您可以定义组织级别的标签,这些标签与所有组织仓库共享,包括已存在的仓库和新创建的仓库。可以在组织`设置Settings`创建组织级别的标签
對於組織,您可以定义組織级别的標籤,这些標籤与所有組織存放庫共享,包括已存在的存放庫和新建立的存放庫。可以在組織`设置Settings`建立組織级别的標籤
标签具有必填的名和颜色,可的描述,以及必是独占的或非独占的(见下面的“作用域标签”)。
標籤具有必填的名和颜色,可的描述,以及必是独占的或非独占的(见下面的“作用域標籤”)。
当您创建一个仓库时,可以通使用 `工单标签Issue Labels` 项来选择标签集。该选项列出了一些在您的实例上 [全局配置的可用标签](../administration/customizing-gitea.md#labels)。在创建仓库时,这些标签也将被建。
当您建立一个存放庫时,可以通使用 `工單標籤Issue Labels` 项来選择標籤集。該選项列出了一些在您的实例上 [全局配置的可用標籤](../administration/customizing-gitea.md#labels)。在建立存放庫时,这些標籤也将被建
## 作用域标签
## 作用域標籤
作用域标签用于确保将至多一个具有相同作用域的标签分配给工或合并请求。例如,如果标签 `kind/bug``kind/enhancement` 的独占项被设置,那么工只能被分类 bug 或 enhancement 中的一个。
作用域標籤用于确保将至多一个具有相同作用域的標籤分配给工或合並請求。例如,如果標籤 `kind/bug``kind/enhancement` 的独占项被设置,那么工只能被分类 bug 或 enhancement 中的一个。
作用域标签的名称必须包含 `/`(不能在名的任一端)。标签的作用域是基于最后一个 `/` 决定的,因此例如标签 `scope/subscope/item` 的作用域是 `scope/subscope`
作用域標籤的名稱必須包含 `/`(不能在名的任一端)。標籤的作用域是基于最后一个 `/` 决定的,因此例如標籤 `scope/subscope/item` 的作用域是 `scope/subscope`
## 按标签筛选
## 按標籤筛選
和合并请求列表可以按标签进行筛选。选择多个标签将显示具有所有选定标签的工和合并请求。
和合並請求列表可以按標籤進行筛選。選择多个標籤将显示具有所有選定標籤的工和合並請求。
按住 alt 键并单击标签,可以将具有所选标签的工和合并请求从列表中排除。
按住 alt 键並單擊標籤,可以将具有所選標籤的工和合並請求从列表中排除。

View File

@@ -8,85 +8,85 @@ aliases:
# 自动链接引用
发布工单、合并请求或评论时,文本描述会被解析以查找引用。这些引用将显示为工单视图中的链接,且在某些情况下会触发特定的“操作”。
發佈工單、合並請求或评论时,文本描述会被解析以查找引用。这些引用将显示為工單视图中的链接,且在某些情况下会触发特定的“操作”。
类似地,当列出提交消息时,它们也会被解析,且当它们被推送到主分支时可以触发“操作”。
类似地,当列出提交消息时,它们也会被解析,且当它们被推送到主分支时可以触发“操作”。
了防止意外建引用,对于引用的识别有一定的规则。例如,它们不应该包含在代码文本内部。它们还应该在周围的文本中合理清晰(例如,使用空格)。
了防止意外建引用,對於引用的识别有一定的規則。例如,它们不應該包含在代码文本内部。它们還應該在周围的文本中合理清晰(例如,使用空格)。
## 用户、团队和组织提及
## 使用者、团队和組織提及
当找到形式 `@username` 的文本,`username`现有用户的名匹配时,将建一个“提及”引用。这将通将文本更改指向该用户个人资料的链接来显示,根据被提及的用户是否具有访问内容所需的权限来可能建通知。
当找到形式 `@username` 的文本,`username`現有使用者的名匹配时,将建一个“提及”引用。这将通将文本更改指向該使用者个人资料的链接来显示,根据被提及的使用者是否具有访问内容所需的权限来可能建通知。
示例:
> [@John](#),你能看一下这个吗?
对于团队和组织也是有效的:
對於团队和組織也是有效的:
> [@Documenters](#),我们需要为此进行规划。
> [@Documenters](#),我们需要為此進行规划。
> [@CoolCompanyInc](#),这个问题关系到我们所有人!
团队将在适当时收到邮件通知,但整个组织不会收到通知。
团队将在适当时收到邮件通知,但整个組織不会收到通知。
提交消息不会产生用户通知。
提交消息不会产生使用者通知。
## 提交
可以使用提交的 SHA1 哈希或至少七个字符的一部分来引用提交。它们将显示指向相提交的链接。
可以使用提交的 SHA1 哈希或至少七个字符的一部分来引用提交。它们将显示指向相提交的链接。
示例:
> 这个错误是在 [e59ff077](#) 中引入的
## 工和合并请
## 工和合並請
可以使用简的符号 `#1234`建对另一个工或合并请求的引用,其中 _1234_ 是同一仓库中一个工或合并请求的编号。这些引用将显示指向被引用内容的链接。
可以使用简的符号 `#1234` 来建对另一个工或合並請求的引用,其中 _1234_ 是同一存放庫中一个工或合並請求的编号。这些引用将显示指向被引用内容的链接。
创建此类型引用的效果是,在被引用的文档中创建一个“通知”,前提是引用的建者对其具有读取权限。
建立此類型引用的效果是,在被引用的文檔中建立一个“通知”,前提是引用的建者对其具有读取权限。
示例:
> 这似乎与 [#1234](#) 相关
可以使用形式 `owner/repository#1234` 来引用其他仓库中的工和合并请求:
可以使用形式 `owner/repository#1234` 来引用其他存放庫中的工和合並請求:
> 这似乎与 [mike/compiler#1234](#) 相关
或者也可以使用 `!1234` 符号。虽然在 Gitea 中合并请求是工的一种形式,但 `#1234` 形式总是链接到工;如果链接的条目恰好是一个合并请Gitea 会适当地行重定向。而使用 `!1234` 符号,则会建一个合并请求链接,根据需要会被重定向到工。然而,如果使用外部跟踪器,这个区别可能很重要,因为工单和合并请求的链接是不能互换的。
或者也可以使用 `!1234` 符号。虽然在 Gitea 中合並請求是工的一种形式,但 `#1234` 形式总是链接到工;如果链接的条目恰好是一个合並請Gitea 会适当地行重定向。而使用 `!1234` 符号,则会建一个合並請求链接,根据需要会被重定向到工。然而,如果使用外部跟踪器,这个区别可能很重要,因為工單和合並請求的链接是不能互换的。
## 可操作的引用在合并请求和提交消息中
## 可操作的引用在合並請求和提交消息中
有时,一个提交或合并请求可能会修复或重新出在某个特定工中。Gitea 支持在引用之前加上特定的“关键字”来关闭和重新打开被引用的工。常见的关键字包括“closes”、“fixes”、“reopens”等。这个列表可以由站点管理员行 [自定义](../administration/config-cheat-sheet.md)。
有时,一个提交或合並請求可能会修复或重新出在某个特定工中。Gitea 支持在引用之前加上特定的“关键字”来关闭和重新打开被引用的工。常见的关键字包括“closes”、“fixes”、“reopens”等。这个列表可以由站点管理员行 [自定义](../administration/config-cheat-sheet.md)。
示例:
> 这个合并请求 _closes_ [#1234](#)
> 这个合並請求 _closes_ [#1234](#)
如果可操作的引用被接受,这将在被引用的工单上创建一个通知,宣布当引用的合并请求被合并时该工单将被关闭。
如果可操作的引用被接受,这将在被引用的工單上建立一个通知,宣布当引用的合並請求被合並时該工單将被关闭。
了接受可操作的引用,必满足以下至少一项条件之一:
了接受可操作的引用,必满足以下至少一项条件之一:
- 评论者在建引用时具有关闭或重新打开工的权限。
- 评论者在建引用时具有关闭或重新打开工的权限。
- 引用位于提交消息中。
- 引用作为合并请求描述的一部分发布
- 引用作為合並請求描述的一部分發佈
在最后一种情况下,只有当合并合并请求的人具有相权限时,工才会被关闭或重新打开。
在最后一种情况下,只有当合並合並請求的人具有相权限时,工才会被关闭或重新打开。
此外,只有合并请求和提交消息可以建一个操作,只有工可以通这种方式被关闭或重新打开。
此外,只有合並請求和提交消息可以建一个操作,只有工可以通这种方式被关闭或重新打开。
默认的关键字如下:
- **关闭工**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打开工**: reopen, reopens, reopened
- **关闭工**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打开工**: reopen, reopens, reopened
## 合并请求和提交消息中的时间跟踪
## 合並請求和提交消息中的时间跟踪
当提交或合并合并请求导致自动关闭工时,可以通提交消息添加解决此工所花费的时间。
当提交或合並合並請求导致自动关闭工时,可以通提交消息添加解决此工所花费的时间。
要指定解决工所花费的时间,需要在工编号后面以 `@<number><time-unit>` 的格式指定时间。在一个提交消息中,可以指定多个已解决的工单,并为每个工指定花费的时间。
要指定解决工所花费的时间,需要在工编号后面以 `@<number><time-unit>` 的格式指定时间。在一个提交消息中,可以指定多个已解决的工單,並為每个工指定花费的时间。
支持的时间位(`<time-unit>`
支持的时间位(`<time-unit>`
- `m` - 分钟
- `h` - 小时
@@ -94,50 +94,50 @@ aliases:
- `w` - 周(相当于 5 天)
- `mo` - 月(相当于 4 周)
用于指定时间的数字(`<number>`)也可以是小数,例如 `@1.5h` 表示一小时半。多个时间位可以结合使用,例如 `@1h10m` 表示 1 小时 10 分钟。
用于指定时间的数字(`<number>`)也可以是小数,例如 `@1.5h` 表示一小时半。多个时间位可以结合使用,例如 `@1h10m` 表示 1 小时 10 分钟。
提交消息示例:
> Fixed #123 spent @1h, refs #102, fixes #124 @1.5h
这将导致工 #123 增加 1 小时,工 #124 增加 1 小时半。
这将导致工 #123 增加 1 小时,工 #124 增加 1 小时半。
## 外部跟踪器
Gitea 支持使用外部工跟踪器,可以在合并请求中创建对外部托管的工的引用。但是,如果外部跟踪器使用数字来标识工,那么它们将与 Gitea 中托管的合并请求无法区分。了解决这个问题Gitea 允许使用 `!` 标记来标识合并请求。例如:
Gitea 支持使用外部工跟踪器,可以在合並請求中建立对外部托管的工的引用。但是,如果外部跟踪器使用数字来标识工,那么它们将与 Gitea 中托管的合並請求無法区分。了解决这个问题Gitea 允许使用 `!` 标记来标识合並請求。例如:
> 这是工 [#1234](#)链接到外部跟踪器。
> 这是合并请求 [!1234](#)链接到 Gitea 中的合并请求。
> 这是工 [#1234](#)链接到外部跟踪器。
> 这是合並請求 [!1234](#)链接到 Gitea 中的合並請求。
在工和合并请求中,`!``#` 可以互换使用,除非需要行区分。如果仓库使用外部跟踪器,默认情况下,合提交消息将使用 `!`引用。
在工和合並請求中,`!``#` 可以互换使用,除非需要行区分。如果存放庫使用外部跟踪器,默认情况下,合提交消息将使用 `!`引用。
## 工和合并请求引用摘要
## 工和合並請求引用摘要
下表说明了工和合并请求的不同型的交叉引用。在示例中,`User1/Repo1` 指的是使用引用的仓库,而 `UserZ/RepoZ` 表示另一个仓库
下表说明了工和合並請求的不同型的交叉引用。在示例中,`User1/Repo1` 指的是使用引用的存放庫,而 `UserZ/RepoZ` 表示另一个存放庫
| 在 User1/Repo1 中的引用 | Repo1 的工是外部的 | RepoZ 的工是外部的 | 渲染效果 |
| 在 User1/Repo1 中的引用 | Repo1 的工是外部的 | RepoZ 的工是外部的 | 渲染效果 |
| ----------------------- | :------------------: | :------------------: | --------------------------------------------- |
| `#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `User1/Repo1!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合并请求 1234 |
| `User1/Repo1#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `User1/Repo1#1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `User1/Repo1!1234` | 否 | - | 链接到 `User1/Repo1` 中的工/合並請求 1234 |
| `User1/Repo1#1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ 1234 |
| `User1/Repo1!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合并请求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合并请求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合並請求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 链接到 `UserZ/RepoZ` 中的工/合並請求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ 1234 |
| `UserZ/RepoZ!1234` | - | 是 | 链接到 `UserZ/RepoZ`_PR_ 1234 |
| **字母数字工编号:** | - | - | - |
| `AAA-1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ `AAA-1234` |
| **字母数字工编号:** | - | - | - |
| `AAA-1234` | 是 | - | 链接到 `User1/Repo1`_外部工_ `AAA-1234` |
| `!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1!1234` | 是 | - | 链接到 `User1/Repo1`_PR_ 1234 |
| _不支持_ | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ `AAA-1234` |
| _不支持_ | - | 是 | 链接到 `UserZ/RepoZ`_外部工_ `AAA-1234` |
| `UserZ/RepoZ!1234` | - | 是 | 链接到 `UserZ/RepoZ` 中的 _PR_ 1234 |
_最后一部分适用于使用字母数字格式的外部工跟踪器的仓库_
_最后一部分适用于使用字母数字格式的外部工跟踪器的存放庫_
_**-**: 不适用_
注意:不完全支持具有不同型工(外部 vs. 内部)的仓库之间的自动引用,可能会导致效链接。
注意:不完全支持具有不同型工(外部 vs. 内部)的存放庫之间的自动引用,可能会导致效链接。

View File

@@ -7,11 +7,11 @@ aliases:
- /zh-tw/merge-message-templates
---
# 合消息模板
# 合消息模板
## 文件名
PR 默认合消息模板可能的文件名:
PR 默认合消息模板可能的文件名:
- `.gitea/default_merge_message/MERGE_TEMPLATE.md`
- `.gitea/default_merge_message/REBASE_TEMPLATE.md`
@@ -24,24 +24,24 @@ PR 默认合并消息模板可能的文件名:
您可以在这些模板中使用以下以 `${}` 包围的变量,这些变量遵循 [os.Expand](https://pkg.go.dev/os#Expand) 语法:
- BaseRepoOwnerName此合并请求的基础仓库所有者名
- BaseRepoName此合并请求的基础仓库名称
- BaseBranch此合并请求的基础仓库目标分支名
- HeadRepoOwnerName此合并请求的源仓库所有者名
- HeadRepoName此合并请求的源仓库名称
- HeadBranch此合并请求的源仓库分支名
- PullRequestTitle并请求的标题
- PullRequestDescription并请求的描述
- PullRequestPosterName并请求的提交者名
- PullRequestIndex并请求的索引号
- PullRequestReference并请求的引用字符与索引号。例如,#1、!2
- ClosingIssues返回一个包含将由此合并请求关闭的所有工的字符串。例如 `close #1, close #2`
- ReviewedOn: 提交所属的合并请求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 谁同意的此合并请求。例如: `Reviewed-by: Jane Doe <jane.doe@example.com>`
- BaseRepoOwnerName此合並請求的基础存放庫所有者名
- BaseRepoName此合並請求的基础存放庫名稱
- BaseBranch此合並請求的基础存放庫目标分支名
- HeadRepoOwnerName此合並請求的源存放庫所有者名
- HeadRepoName此合並請求的源存放庫名稱
- HeadBranch此合並請求的源存放庫分支名
- PullRequestTitle並請求的标题
- PullRequestDescription並請求的描述
- PullRequestPosterName並請求的提交者名
- PullRequestIndex並請求的索引号
- PullRequestReference並請求的引用字符与索引号。例如,#1、!2
- ClosingIssues返回一个包含将由此合並請求关闭的所有工的字符串。例如 `close #1, close #2`
- ReviewedOn: 提交所属的合並請求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 谁同意的此合並請求。例如: `Reviewed-by: Jane Doe <jane.doe@example.com>`
## 变基Rebase
在没有合提交的情况下行变基时,`REBASE_TEMPLATE.md` 修改最后一次提交的消息。此模板提供以下附加变量:
在没有合提交的情况下行变基时,`REBASE_TEMPLATE.md` 修改最后一次提交的消息。此模板提供以下附加变量:
- CommitTitle提交的标题
- CommitBody提交的正文文本

View File

@@ -4,19 +4,19 @@ slug: "alpine"
sidebar_position: 4
---
# Alpine 软件包注册表
# Alpine 軟體包儲存庫
在您的用户或组织中发布 [Alpine](https://pkgs.alpinelinux.org/) 软件包。
在您的使用者或組織中發佈 [Alpine](https://pkgs.alpinelinux.org/) 軟體包。
## 要求
要使用 Alpine 注册表,您需要使用像 curl 这样的 HTTP 客户端来上传包,使用像 apk 这样的包管理器来消费包。
要使用 Alpine 儲存庫,您需要使用像 curl 这样的 HTTP 客户端来上传包,使用像 apk 这样的包管理器来消费包。
以下示例使用 `apk`
## 配置软件包注册表
## 配置軟體包儲存庫
要注册 Alpine 注册表,请将 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
要注册 Alpine 儲存庫,請将 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
```
https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
@@ -24,43 +24,43 @@ https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 软件包所有者 |
| `owner` | 軟體包所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的仓库名 |
| `repository` | 要使用的存放庫名 |
如果注册表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-认证):
如果註冊表是私有的,在 URL 中提供凭据。您可以使用密或[个人访问令牌](development/api-usage.md#通-api-認證):
```
https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
```
Alpine 注册表文件使用 RSA 密钥行签名apk 必知道密钥。下载公钥将其存`/etc/apk/keys/`中:
Alpine 儲存庫文件使用 RSA 密钥行签名apk 必知道密钥。下载公钥将其存`/etc/apk/keys/`中:
```shell
curl -JO https://gitea.example.com/api/packages/{owner}/alpine/key
```
之后,更新本地软件包索引:
之后,更新本地軟體包索引:
```shell
apk update
```
## 发布软件
## 發佈軟體
发布一个 Alpine 包(`*.apk`请执行带有包内容的 HTTP `PUT` 操作,将其放在请求体中。
發佈一个 Alpine 包(`*.apk`請執行带有包内容的 HTTP `PUT` 操作,将其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
```
| 参数 | 描述 |
| 參數 | 描述 |
| ------------ | --------------------------------------------------------------------------------------------------- |
| `owner` | 包的所有者。 |
| `branch` | 分支可以与操作系统的发行版本匹配例如v3.17。 |
| `repository` | 仓库可以用于[分组包](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或类似的名。 |
| `repository` | 存放庫可以用于[分组包](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main` 或类似的名。 |
使用 HTTP 基本身份验证的示例请求:
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -68,50 +68,50 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main
```
如果您使用的是双重身份验证或 OAuth使用[个人访问令牌](development/api-usage.md#authentication)代替密
您不能将具有相同名的文件两次发布到一个包中。您必首先删除有的包文件。
如果您使用的是双重身份驗證或 OAuth使用[個人訪問令牌](development/api-usage.md#authentication)代替密
您不能将具有相同名的文件两次發佈到一个包中。您必首先删除有的包文件。
服务器将以以下的 HTTP 状态码响应
服务器将以以下的 HTTP 狀態碼回應
| HTTP 状态码 | 含义 |
| HTTP 狀態碼 | 含义 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 软件包已发布。 |
| `400 Bad Request` | 软件包的名、版本、分支、仓库或架构效。 |
| `409 Conflict` | 具有相同参数组合的包文件已存在于软件包中。 |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名、版本、分支、存放庫或架构效。 |
| `409 Conflict` | 具有相同參數组合的包文件已存在于軟體包中。 |
## 删除软件
## 删除軟體
要删除 Alpine 包,行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
要删除 Alpine 包,行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename}
```
| 参数 | 描述 |
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 软件包的所有者 |
| `owner` | 軟體包的所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的仓库名 |
| `architecture` | 软件包的架构 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
| `filename` | 要删除的文件名 |
使用 HTTP 基本身份验证的示例请求:
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main/test-package-1.0.0.apk
```
服务器将以以下的 HTTP 状态码响应
服务器将以以下的 HTTP 狀態碼回應
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到软件包或文件 |
| `404 Not Found` | 未找到軟體包或文件 |
## 安装软件
## 安裝軟體
要从 Alpine 注册表安装软件包,请执行以下命令:
要从 Alpine 儲存庫安裝軟體包,請執行以下命令:
```shell
# use latest version

View File

@@ -0,0 +1,122 @@
---
date: "2023-05-15T00:00:00+00:00"
slug: "container"
sidebar_position: 5
---
# Arch 儲存庫
在您的使用者或組織中發佈 [Arch](https://archlinux.org/packages/) 軟體包。 Arch 儲存庫的功能像是一個完整的[鏡像Arch 儲存庫](https://wiki.archlinux.org/title/mirrors\),需要調整系統的`/etc/pacman.conf`文件。
## 需求
系統需要安裝有HTTP客戶端像是`curl`來下載文件,且必須安裝有`pacman`軟體包管理工具。
## 配置 Arch 儲存庫
Arch 儲存庫的軟體都有`gpg`簽名驗證,所以需要匯入驗證需要的公鑰,下面是下載公鑰的範例。
```sh
wget https://gitea.example.com/api/packages/{owner}/arch/repository.key
```
匯入公鑰之前,請先確認是否為該 Arch 儲存庫的公鑰下面是檢視公鑰的範例。確認完成請記第二行的16為的`key id`
```sh
gpg --show-keys repository.key
```
接下來要匯入到pacman的鑰匙圈中下面是匯入的範例。
```sh
pacman-key --add repository.key
pacman-key --lsign-key {key id}
```
匯入驗證的公鑰接下來要修改pacman的配置檔位置是`/etc/pacman.conf`,內容如下。
```conf
[{owner}.gitea.example.com]
SigLevel = Required
Server = https://gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
如果註冊表是私有的,請在 URL 中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#通過-api-認證):
```
Server = https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
## 發佈軟體包
要發佈一个 Arch 軟體包,請執行带有包内容的 HTTP `PUT` 操作,将其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/arch/{repository}
```
| 占位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `repository` | 要使用的存放庫名 |
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_password_or_token \
--upload-file path/to/file.pkg.tar.zst \
https://gitea.example.com/api/packages/testuser/arch/core
```
如果您使用的是双重身份驗證或 OAuth請使用[個人訪問令牌](development/api-usage.md#authentication)代替密碼。
您不能将具有相同名稱的文件两次發佈到一个包中。您必須首先删除現有的包文件。
服务器将以以下的 HTTP 狀態碼回應:
| HTTP 狀態碼 | 含义 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名稱、版本、分支、存放庫或架构無效。 |
| `409 Conflict` | 具有相同參數组合的包文件已存在于軟體包中。 |
## 安裝軟體包
要从 AArch 儲存庫安裝軟體包,請執行以下命令:
```sh
pacman -Sy {package_name}
```
| Parameter | 含义 |
| -------------- | ----------- |
| `package_name` | 軟體包 |
## 删除軟體包
要删除 Arch 軟體包,執行 HTTP 的 DELETE 操作。如果没有文件,这将同时删除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/arch/{repository}/{package_name}/{package_version}/{architecture}
```
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架构 |
| `package_name` | 要删除的軟體名 |
| `package_version` | 軟體版本 |
使用 HTTP 基本身份驗證的範例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/arch/core/test-package/1.0.0/x86-64
```
服务器将以以下的 HTTP 狀態碼回應:
| HTTP 状态码 | 含义 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到軟體包或文件 |

Some files were not shown because too many files have changed in this diff Show More