Compare commits

...
Sign in to create a new pull request.

95 commits
next ... v7.0

Author SHA1 Message Date
0ko
0d5d24afce user: actions: replace manpage provider for crontab 2025-01-08 17:03:17 +01:00
Earl Warren
dcbb7123ea user: OAuth2 section title typo
(cherry picked from commit 1a72849b87)
2024-09-16 12:02:24 +00:00
Gusted
3d838e5b4b Remove CLI documentation in config cheat sheet
The configuration cheat sheet isn't the canonical documentation for the
CLI and this particular bit has no relation to `ENABLE_PPROF` setting
anymore.
Resolves forgejo/forgejo#5268

(cherry picked from commit ef75a59038)
2024-09-16 11:58:35 +00:00
Otto Richter
491ff1b39e Update database preparation guide
- it is related to installation instructions
- mention SQLite in the guide
- reduce the complexity of the guide (I think we don't need to cover all the details here, there are better guides available)
2024-09-05 13:30:20 +02:00
Otto Richter
fc19a9fb20 Update binary installation instructions
(cherry picked from commit 182007a5a5)
2024-09-05 11:27:45 +00:00
mahlzahn
0a85ff0c54 Fix location of gitconfig user file
(cherry picked from commit 7c5ef2e7e2)
2024-09-04 21:45:32 +00:00
Sai Nane
895c013044 admin: Reword, format consistency
This changes terminal command blocks to always use the multiline formatting,
as the leading octothorpe looks very strange when displaying a command inline.
Two consecutive inline commands at the start was very difficult to read in the
generated html. See:
https://forgejo.org/docs/latest/admin/installation-binary/

`HTTP_PORT` has been highlighted as a code term. This also means we don't need
to worry about another underscore in the same line being added and interpreted
as syntax.

Simplifies and fixes sentence structure in a few places. I've seen arguments
for and against the use of "just" in technical writing, but I think here it's
better without?

Reworded some paragraphs so that the command comes at the end.

(cherry picked from commit facf05de24)
2024-09-04 21:35:33 +00:00
Gusted
65c60ed947 Remove pause queue step
This step can no longer be done, because this functional was removed
some releases ago.

(cherry picked from commit 6b2a74e82c)
2024-08-14 17:59:29 +00:00
RobertoMaurizzi
50020ab155 tell users where to write the variables
(cherry picked from commit c1aec9211e)
2024-08-13 14:31:49 +00:00
0ko
5e41f9b3f3 admin: actualize LOGIN_REMEMBER_DAYS recommendation
(cherry picked from commit ded0ad6f85)
2024-08-05 15:39:08 +00:00
0ko
e36f8faf95 admin: sync i18n language lists with Forgejo code
(cherry picked from commit 359d69f279)
2024-08-04 19:07:25 +00:00
Panagiotis "Ivory" Vasilopoulos
b1ef077766 developer/customization: improve CustomPath hints
Additionally, the notice for restarting Forgejo was rewritten
to be more explicit.

(cherry picked from commit 85fbfe4885)
2024-08-02 15:09:49 +00:00
Panagiotis "Ivory" Vasilopoulos
ca6876f586 admin: cheat sheet, improve USER_LOCATION_MAP_URL
(cherry picked from commit 7cc3393317)
2024-08-02 15:06:09 +00:00
mahlzahn
f2a681c4e8 Fix label application instructions
(cherry picked from commit ce7ca34bcb)
2024-08-01 05:30:52 +00:00
Earl Warren
b9685e56e0
admin: installation: remove double restrictions 2024-07-27 06:48:46 +02:00
Emmanuel BENOÎT
8a9b4ef572 admin: more details about action runner offline registration (#769)
This PR
- adds more details regarding the nature of the secret used when registering runners offline using `forgejo-cli actions register`,
- explains how to change the secret for an existing runner ([Forgejo PR #4619](https://codeberg.org/forgejo/forgejo/pulls/4619)),
- explains how to keep the Forgejo-side command idempotent if the labels aren't known ([Forgejo PR #4610](https://codeberg.org/forgejo/forgejo/pulls/4610))

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/769
Reviewed-by: twenty-panda <twenty-panda@noreply.codeberg.org>
Co-authored-by: Emmanuel BENOÎT <tseeker@nocternity.net>
Co-committed-by: Emmanuel BENOÎT <tseeker@nocternity.net>
(cherry picked from commit 65f556b638)
2024-07-24 05:54:08 +00:00
Twenty Panda
780d35b605 user: actions: add on.issues
(cherry picked from commit 46a3f68002)
2024-07-23 15:48:01 +00:00
0ko
b884132c9a admin: cheat sheet, clarify proxy configuration
(cherry picked from commit 00102c44e2)
2024-07-14 10:37:45 +00:00
Elias Elwyn
491dd24af3 admin: expand on the redis cache adapter 2024-07-13 17:00:37 +10:00
Earl Warren
c0b36593b4 admin: installation: docker rootless does not have USER_UID/USER_GID
The USER_UID/USER_GID are not interpretd in the rootless image, use
`user: "1024:100"` in the docker-compose example instead.

Fixes: https://codeberg.org/forgejo/docs/issues/704
(cherry picked from commit 5d725ecdc3)
2024-07-10 06:58:31 +00:00
Earl Warren
cee32e69a7 developer: release process: rewrite and LTS toolchain
* do not include patch releases in the release schedule
* fix the Gitea compatibility of 7.0 & 8.0
* change the feature freeze from two to three weeks. See
  * https://codeberg.org/forgejo/discussions/issues/180
	* https://codeberg.org/forgejo/discussions/issues/187
* remove cutting a release in favor of copy/pasting previous
  checklists
* remove release notes as it is not done on a rolling basis
* move the runner publication down as it was in the middle
  of the release process sections
* reminder of LTS toolchain upgrades

(cherry picked from commit ba7b5de019)
2024-07-04 21:17:31 +00:00
Ikuyo Kita
7c2a7f2816 user: block: Update screenshots to reflect current version and be concistent (#741)
This PR changes the screenshots in the Blocking users page. It not only updates the block user dialog shown in the page (since it has been [changed](/forgejo/forgejo/pulls/4204) to have better wording and explanation), but it also changes the other screenshots to be consistent with the rest of the page, oh and they used (old?) Gitea theme, not Forgejo)

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/741
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Ikuyo Kita <kitakita@disroot.org>
Co-committed-by: Ikuyo Kita <kitakita@disroot.org>
(cherry picked from commit b10a9127dd)
2024-07-02 13:36:10 +00:00
Joachim Durchholz
423762f973 reverse-proxy.md: Clearer and more admin-centric intro
- Eliminated confusing topic switch https->proxy->https.
- Moved all HTTPS mentions to end of intro.
- Added paragraph about when you'd want a reverse proxy.
- Use /code for subpath, to encourage purpose-based naming

(cherry picked from commit 2678e40581)
2024-06-26 05:03:53 +00:00
avobs
9c5020a72a Update docs/user/blocking-user.md (#677)
Spamming a repository is only meaningful in the issues.

https://forgejo.codeberg.page/@docs_pull_677/docs/next/user/blocking-user/
Co-authored-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/677
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: avobs <avobs@noreply.codeberg.org>
Co-committed-by: avobs <avobs@noreply.codeberg.org>
(cherry picked from commit 866d79d0fe)
2024-06-24 11:39:32 +00:00
Twenty Panda
8636bf3351 user: actions: add examples to the cache
(cherry picked from commit 7e60f058d1)
2024-06-22 20:26:35 +00:00
Ikuyo Kita
323551764d user: issue-tracking-basics: correct some parts
(cherry picked from commit b2c12f3897)
2024-06-22 20:04:35 +00:00
Ikuyo Kita
855730b87d user: issue-tracking-basics: update screenshot (#716)
Updates the screenshot in the issue tracking basics page, as it looks very dated (even shows the old Codeberg logo)

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/716
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Ikuyo Kita <kitakita@disroot.org>
Co-committed-by: Ikuyo Kita <kitakita@disroot.org>
(cherry picked from commit 982e8fd215)
2024-06-16 13:47:53 +00:00
0ko
47d3bbbd3d developer: corrections for base localization management
(cherry picked from commit edd4728e04)
2024-06-15 04:55:52 +00:00
kita
864582f6d0 user: first-repository: update screenshots and content
(cherry picked from commit 7c3b81ec99)
2024-06-14 08:56:52 +00:00
9pfs
1e129c800f Fix typo (bookwork -> bookworm)
(cherry picked from commit b362696091)
2024-06-14 04:44:52 +00:00
Earl Warren
ed3267dad6 user: oauth2: illustrated example to add an authentication source (#703)
Preview: https://forgejo.codeberg.page/@docs_pull_703/docs/next/user/oauth2-provider/#using-a-codeberg-as-an-authentication-source
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/703
Reviewed-by: twenty-panda <twenty-panda@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
(cherry picked from commit 11859284af)
2024-06-13 15:34:53 +00:00
Earl Warren
1952be7409 admin: storage: add missing MINIO_CHECKSUM_ALGORITHM setting
Fixes: https://codeberg.org/forgejo/forgejo/issues/4103
(cherry picked from commit 16834531f1)
2024-06-11 17:17:22 +00:00
Kevin P. Fleming
789c2bee74 Add a note about SAME_SITE in the oauth2_client docs. 2024-06-10 17:26:59 -04:00
Earl Warren
0707a28ebf developer: dependencies: do not require a label for each dependency
it is extra work and does not provide anything searching for past pull
requests with the same title would not.

(cherry picked from commit 444cba3f20)
2024-06-09 07:12:22 +00:00
Earl Warren
c4f955c4d8 developer: dependencies: how to tune software upgrades
(cherry picked from commit da4e314547)
2024-06-08 07:59:22 +00:00
Léana 江
02ee40e027 add example config for neovim
(cherry picked from commit 0222f4a502)
2024-06-08 07:50:22 +00:00
Earl Warren
7d5578e16e user: actions: document the default for shell
`jobs.<job_id>.steps[*].shell` defaults to `bash` unless
`jobs.<job_id>.container.image` is specified in which case it defaults
to `sh`.

Refs: https://code.forgejo.org/forgejo/runner/issues/150
(cherry picked from commit 6fa1c28677)
2024-06-08 04:59:22 +00:00
adagio
d622bf1505 Updates whitelist to allowlist
(cherry picked from commit c86099d84e)
2024-06-02 06:35:43 +00:00
Abdur-Rahman Mansoor
ae1297960c style: fix more typos in /docs/admin
(cherry picked from commit f2e3723bd3)
2024-06-01 14:11:19 +00:00
adagio
dc90b37d8c Fixes broken links (#675)
Preview: https://forgejo.codeberg.page/@docs_pull_675/docs/next/user/first-repository/

Redirect links as reported:

https://codeberg.org/forgejo/docs/issues/674
https://codeberg.org/forgejo/docs/issues/673
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/675
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: adagio <h759bkyo4@mozmail.com>
Co-committed-by: adagio <h759bkyo4@mozmail.com>
(cherry picked from commit 8ba517004d)
2024-05-31 11:53:02 +00:00
adagio
99d49d3365 Modifies and reformats actions.md glossary (#630)
Adds contents to the glossary section of the `actions.md` file.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/630
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: adagio <h759bkyo4@mozmail.com>
Co-committed-by: adagio <h759bkyo4@mozmail.com>
(cherry picked from commit d141e54597)
2024-05-30 06:15:03 +00:00
Abdur-Rahman Mansoor
05ce897d18 style: fix lots of typos in installation-binary.md
(cherry picked from commit c37e8619d6)
2024-05-30 05:08:02 +00:00
Earl Warren
8155e636d1 user: actions: indent issue
(cherry picked from commit 6b6f79e6ff)
2024-05-28 21:00:14 +00:00
adagio
12a19985bb Adds consistency to sentence formatting in seek-assistance.md (#633)
Places `.` symbol at the end of a couple of list sentences.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/633
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: adagio <h759bkyo4@mozmail.com>
Co-committed-by: adagio <h759bkyo4@mozmail.com>
(cherry picked from commit 9326746c38)
2024-05-28 10:56:06 +00:00
Abdur-Rahman Mansoor
df152d4182 style: fix typos in /docs/admin (#656)
Now that I've finished `/docs/user`  I suppose I will start working on `/docs/admin`. I didn't change all the files at once since I thought it would be annoying for the maintainers to review. If you prefer I make all the changes at once, feel free to let me know and I would be happy to do that as well. :)

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/656
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Caesar Schinas <caesar@caesarschinas.com>
Co-authored-by: Abdur-Rahman Mansoor <armansoor@missingno.dev>
Co-committed-by: Abdur-Rahman Mansoor <armansoor@missingno.dev>
(cherry picked from commit d35b4548d1)
2024-05-27 23:56:12 +00:00
Schiriki
3326ca60d7 Replace gitea through forgejo
(cherry picked from commit c46f6bc4af)
2024-05-27 23:43:06 +00:00
Abdur-Rahman Mansoor
ddf959a475 style: fix more typos in /docs/user
(cherry picked from commit ed5886012a)
2024-05-26 10:50:06 +00:00
Earl Warren
d0666b1bfd
v7.0.3 is greater than v7.0-test 2024-05-26 12:30:20 +02:00
Earl Warren
8371da465f admin: command-line: update
scripts/cli-docs.sh run next > docs/admin/command-line.md

(cherry picked from commit 518407ccfe)
2024-05-26 10:08:06 +00:00
Earl Warren
a83274e296 admin: installation: rootless data is in /var/lib/gitea by default
Refs: https://codeberg.org/forgejo/forgejo/issues/3869
(cherry picked from commit dc67b3c83a)
2024-05-25 12:34:57 +00:00
Matthias Ahouansou
8c651a91c7 Add guide to set branch to push to AGit pull request by default
(cherry picked from commit 5c634782b9)
2024-05-25 11:43:57 +00:00
adbagio
e564335324 Docker installation detail fixes (#643)
Updates and fixes version descriptions for the latest Forgejo Docker image.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/643
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: adbagio <h759bkyo4@mozmail.com>
Co-committed-by: adbagio <h759bkyo4@mozmail.com>
(cherry picked from commit cd43c8b018)
2024-05-24 07:55:49 +00:00
Earl Warren
4609582481 fix: SHOW_FOOTER_POWERED_BY is not available in v7.0 2024-05-22 14:27:00 +00:00
Victoria Nadasdi
b3a86302e2
add missing opts from v7.0.3
The week 2024-20-v7.0 cherry pick PR (#3772) added a fix that added a
new type option on the cli: "Fix missing migrate actions artifacts".

https://codeberg.org/forgejo/forgejo/src/branch/v7.0/forgejo/cmd/migrate_storage.go#L37

References:
- https://codeberg.org/forgejo/forgejo/pulls/3772
- https://codeberg.org/forgejo/forgejo/src/branch/v7.0/forgejo/cmd/migrate_storage.go#L37
2024-05-22 15:39:33 +02:00
Victoria Nadasdi
9a82bf41bc
fix: pin node packageManager
As packageManager is not pinned, `pnpm install --frozen-lockfile` will
install the latest version and adds it to the `package.json` file.

That makes PR checks fail because it checks if there are any changes
(`diff`) in the working directory as a step.
2024-05-22 15:06:57 +02:00
Earl Warren
b630aedee0 developer: dependency: release notes example
(cherry picked from commit 8a28a4db15)
2024-05-16 21:15:24 +00:00
Earl Warren
e2bd7bc8a6 developer: compiling requires go v1.22 not v1.21
(cherry picked from commit a09cea8876)
2024-05-16 21:11:09 +00:00
Crown0815
034a105374 Fix incorrect default value in CheatSheet for attachment MaxSize
I tested my forgejo instance and it says that it cannot upload files larger than 2048 MB.
I also confirmed on the gitea cheatsheet where the value is also 2048 MB
(see https://docs.gitea.com/administration/config-cheat-sheet#issue-and-pull-request-attachments-attachment)

(cherry picked from commit 720667cf04)
2024-05-16 21:07:36 +00:00
adbagio
e619200f52 adds and updates hierarchy section
(cherry picked from commit f5b51da942)
2024-05-16 08:01:45 +00:00
0ko
8199991118 Localization: add instructions for fixing various failures with Weblate CL
(cherry picked from commit fb73fd507d)
2024-05-15 03:52:57 +00:00
TheFox0x7
922d9a91a3 Add Caddy config to reverse proxy section (#605)
Added Caddy example configs, turned on syntax highlighting in nginx/apache

Closes: forgejo/website#232
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/605
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: TheFox0x7 <thefox0x7@gmail.com>
Co-committed-by: TheFox0x7 <thefox0x7@gmail.com>
(cherry picked from commit b6b99c0b55)
2024-05-14 23:08:12 +00:00
adbagio
61beb1afcc Updates Contributing section of the README (#611)
Adds content to the Contributing section of the README.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/611
Reviewed-by: oliverpool <oliverpool@noreply.codeberg.org>
Co-authored-by: adbagio <h759bkyo4@mozmail.com>
Co-committed-by: adbagio <h759bkyo4@mozmail.com>
(cherry picked from commit a9beec6523)
2024-05-13 10:29:47 +00:00
jwildeboer
264447c0f1 Update Issue/PR Template doc (#609)
Preview: https://forgejo.codeberg.page/@docs_pull_609/docs/next/user/issue-pull-request-templates/#directory-names

Proposal based on https://codeberg.org/forgejo/docs/issues/607 to make the docs more readable and add the `.forgejo` directory. Also added the `ref` and `labels` options to the yaml example.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/609
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: jwildeboer <jwildeboer@noreply.codeberg.org>
Co-committed-by: jwildeboer <jwildeboer@noreply.codeberg.org>
(cherry picked from commit 784e395e97)
2024-05-12 18:43:47 +00:00
Earl Warren
f0f8322943 admin(actions): the latest stable runner is 3.4.1
(cherry picked from commit 359caf8476)
2024-05-12 14:29:00 +00:00
Kwonunn
4db9cb08cd Reverse Proxy setup guide (#600)
I've added a more comprehensive guide to set up Reverse Proxies.

So far I've added nginx configuration, I'm also planning to add apache configuration later on.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/600
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Kwonunn <kwonunnx@gmail.com>
Co-committed-by: Kwonunn <kwonunnx@gmail.com>
(cherry picked from commit c1b7969c1d)
2024-05-10 07:25:23 +00:00
cascading-pr
adec18c29d
cascading-pr update
(cherry picked from commit 42d4eeb926)
2024-05-10 08:38:57 +02:00
cascading-pr
b0e096dbaa
cascading-pr update
(cherry picked from commit ef11b41eb5)
2024-05-10 08:38:49 +02:00
Earl Warren
faf25f747f developer(infrastructure): ubuntu-runner.forgejo.org
(cherry picked from commit 38c90ce5d6)
2024-05-07 13:00:25 +00:00
Earl Warren
89966a10a5 developer: release: cut the documentation branch
- add a checklist to the release instructions
- use a pattern for push instead of an explicit list of branches
  it was previously advisable to avoid conflicts when there was
  no automated backports but it is no longer necessary

(cherry picked from commit 5acda1e0b2)
2024-05-07 10:56:17 +00:00
Yaroslav Halchenko
48ca2baa98 Add codespell support (without CI) and make it fix some typos (#536)
Per "request" of @0ko in https://codeberg.org/forgejo/forgejo/pulls/3270#issuecomment-1774032

TODOs
- postponed: how to add codespell (written in Python) to CI -- separate workflow? add to some other step? to some other tool/specification?

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/536
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Yaroslav Halchenko <debian@onerussian.com>
Co-committed-by: Yaroslav Halchenko <debian@onerussian.com>
(cherry picked from commit 9ad5f2ab0f)
2024-05-05 15:01:18 +00:00
0ko
537746e8a9 Fix dead links
(cherry picked from commit 4cba3d36b3)
2024-05-05 06:20:28 +00:00
OniriCorpe
2fd68bd1c2 Fix the 'Forgejo numbering scheme' link
(cherry picked from commit cd06bf37c5)
2024-05-03 08:48:54 +00:00
alydev
96c561f09f SSL note for minio storage, fixed dead link
(cherry picked from commit 0bfc31bd0a)
2024-05-01 11:36:47 +00:00
Earl Warren
1280915ffa Merge pull request '[Backport v7.0] Revert "Add rootless installation instructions"' (#574) from backport/v7.0/pr-573 into v7.0
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/574
Reviewed-by: crystal <crystal@noreply.codeberg.org>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-04-28 21:10:45 +00:00
Earl Warren
88a8a9f734 Merge pull request '[Backport v7.0] admin: upgrade: drop issue.created when upgrading from gogs' (#575) from backport/v7.0/pr-567 into v7.0
Reviewed-on: https://codeberg.org/forgejo/docs/pulls/575
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2024-04-28 20:44:58 +00:00
Earl Warren
07865ed7ff admin: upgrade: drop issue.created when upgrading from gogs
Refs: https://codeberg.org/forgejo/forgejo/issues/3488
(cherry picked from commit d9c4a8bd18)
2024-04-28 20:39:12 +00:00
Earl Warren
680cdd34b1 Revert "Add rootless installation instructions"
This reverts commit 345765e21f.

(cherry picked from commit bea94cd9bd)
2024-04-28 20:38:10 +00:00
Firepup650
b08aaf57c8 Fix a broken link
`[clean up job]../../admin/config-cheat-sheet/#cron---cleanup-expired-packages-croncleanup_packages)` -> `[clean up job](../../admin/config-cheat-sheet/#cron---cleanup-expired-packages-croncleanup_packages)`

(cherry picked from commit a1106f2fce)
2024-04-28 16:14:10 +00:00
Robin Kloppe
d39405ea95 Added Repo Mirros (#568)
In a next step https://codeberg.org/forgejo/forgejo/pulls/3503 can be merged

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/568
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Robin Kloppe <git@mainboarder.de>
Co-committed-by: Robin Kloppe <git@mainboarder.de>
(cherry picked from commit d9db0d13f6)
2024-04-28 08:59:42 +00:00
0ko
81c31abdd5 localization admin: add Weblate announcement
(cherry picked from commit bcd7348a70)
2024-04-24 15:29:23 +00:00
Earl Warren
7acc15dbca LTS: is not part of the metadata & CLI updates (#561)
- LTS are listed in the table, no hint in the version number
- update the RC release names
- CLI updates

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/561
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
(cherry picked from commit a0477a8300)
2024-04-23 15:59:39 +00:00
Earl Warren
845378b29d docs: user: new section on comment on issues & PR via email
(cherry picked from commit cd3c76c05d)
2024-04-23 09:05:35 +00:00
Earl Warren
f89d4d568d sync with Gitea e865de1e9d65dc09797d165a51c8e705d2a86030
cd docs
git diff d3982bcd814bac93e3cbce1c7eb749b17e413fbd..e865de1e9d65dc09797d165a51c8e705d2a86030 -- $(find . -type f -name '*en-us*')

(cherry picked from commit 6aa9b491a0)
2024-04-23 07:16:28 +00:00
Earl Warren
f0b99af484
admin: cli: update 2024-04-23 07:19:30 +02:00
Earl Warren
88bd56c31c meta: pnpm has a new format for lockfiles
Seem to be better to upgrade despite it being very new rather than
to pin pnpm.

(cherry picked from commit 88ea9f3a24)
2024-04-22 23:36:02 +00:00
Otto Richter
c06d726ecf Sync list of default themes
See https://codeberg.org/forgejo/forgejo/pulls/1746

(cherry picked from commit 7c8c649cc9)
2024-04-21 09:26:50 +00:00
Earl Warren
46e5cf2f22 developer: release: octopuce is not publicly visible
(cherry picked from commit 06233a63cd)
2024-04-21 07:07:25 +00:00
Earl Warren
05c3a5d43d developer: infrastructure: v7.next.forgejo.org
(cherry picked from commit 51a1f2951e)
2024-04-21 07:07:05 +00:00
0ko
f37365b4bc developer: update localization admin guides
(cherry picked from commit 82ab0bb31b)
2024-04-21 06:54:27 +00:00
crystal
11048364ab fix 404
(cherry picked from commit d58d729c58)
2024-04-21 05:47:27 +00:00
crystal
6045d15696
Update version number in index 2024-04-20 03:17:05 -06:00
Earl Warren
726f8cb2bc
the v7.0 branch is cut
(cherry picked from commit c11ee8a32d)
2024-04-20 11:08:16 +02:00
crystal
71ce2ff514 timetzdata is in the release build tags
(cherry picked from commit bd8e4e588a)
2024-04-20 08:52:23 +00:00
Earl Warren
c874343142
admin: cli: mssql is deprecated only in v7.0+ 2024-04-20 10:44:26 +02:00
Earl Warren
e9523e7732 docs: pick the Forgejo release from experimental (#542)
in the case of a release that is not yet published, it will exist as
release candidates in the experimental organization. Every release go
through there and it is a reliable source.

Reviewed-on: https://codeberg.org/forgejo/docs/pulls/542
Reviewed-by: crystal <crystal@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
(cherry picked from commit 4ce64e2840)
2024-04-20 08:39:21 +00:00
115 changed files with 2917 additions and 1888 deletions

7
.codespellrc Normal file
View file

@ -0,0 +1,7 @@
[codespell]
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
skip = .git*,*-lock.yaml,.codespellrc
check-hidden = true
# ALLWAYS - ALL WAYS, config variable
ignore-regex = \bALLWAYS\b
# ignore-words-list =

View file

@ -4,9 +4,7 @@ on:
push:
branches:
- 'next'
- 'v1.21'
- 'v1.20'
- 'v1.19'
- 'v*'
jobs:
publish:

View file

@ -13,6 +13,7 @@ a new branch will be created in this repo to document the stable release.
Current release branches are as follows:
- [`next`](https://codeberg.org/forgejo/docs/src/branch/next)
- [`v7.0`](https://codeberg.org/forgejo/docs/src/branch/v7.0)
- [`v1.21`](https://codeberg.org/forgejo/docs/src/branch/v1.21)
- [`v1.20`](https://codeberg.org/forgejo/docs/src/branch/v1.20)
- [`v1.19`](https://codeberg.org/forgejo/docs/src/branch/v1.19)
@ -21,6 +22,10 @@ Documentation content lives in the `docs` directory, and images in the `docs/_im
## Contributing
There are many ways to contribute to improving the Forgejo documentation
including reviewing the current information, making suggestions for
improvement or reporting bugs.
### Tooling
It is possible to simply edit the documentation with a text editor and [send PRs](#pull-requests) without using any other tooling.
@ -82,7 +87,7 @@ pnpm run lint
```
Prettier is also able to automatically format the code according to its rules.
To do so, ue the following command.
To do so, use the following command.
Be aware that it can occasionally break things, so be sure to check what it changes.
```shell
@ -110,7 +115,7 @@ Most changes should either be sent as a _single commit per PR_, or should be squ
_Fast-forwarding is the preferred merge strategy._
Changes can then be [backported](#backports) (or if appropriate frontported) by cherry-picking.
Rarely, it will make sense to create a feature branch containting a series of commits that will
Rarely, it will make sense to create a feature branch containing a series of commits that will
be merged instead of squashing and fast-forwarding.
Such a feature branch can then be merged into multiple versions of the docs if appropriate.
In this case, the feature branch should usually be taken from the last common ancestor of all of the
@ -119,7 +124,7 @@ version branches into which it will potentially be merged.
#### Backports
If a PR is meant to be backported to a stable branch, it must be
labelled with `backport/v1.20`, `backport/v1.19`, etc.
labelled with `backport/v7.0`, `backport/v1.21`, etc.
### Content guidelines

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

@ -94,9 +94,9 @@ Each `Forgejo runner` release is published for all supported architectures as:
Download the latest [binary release](https://code.forgejo.org/forgejo/runner/releases) and verify its signature:
```shell
$ wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
$ wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.4.1/forgejo-runner-3.4.1-linux-amd64
$ chmod +x forgejo-runner
$ wget -O forgejo-runner.asc https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64.asc
$ wget -O forgejo-runner.asc https://code.forgejo.org/forgejo/runner/releases/download/v3.4.1/forgejo-runner-3.4.1-linux-amd64.asc
$ gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
$ gpg --verify forgejo-runner.asc forgejo-runner
Good signature from "Forgejo <contact@forgejo.org>"
@ -111,14 +111,14 @@ are built from the Dockerfile which is [found in the source
directory](https://code.forgejo.org/forgejo/runner/src/branch/main/Dockerfile). It contains the `forgejo-runner` binary.
```shell
$ docker run --rm code.forgejo.org/forgejo/runner:3.3.0 forgejo-runner --version
forgejo-runner version v3.3.0
$ docker run --rm code.forgejo.org/forgejo/runner:3.4.1 forgejo-runner --version
forgejo-runner version v3.4.1
```
It does not run as root:
```shell
$ docker run --rm code.forgejo.org/forgejo/runner:3.3.0 id
$ docker run --rm code.forgejo.org/forgejo/runner:3.4.1 id
uid=1000 gid=1000 groups=1000
```
@ -158,7 +158,7 @@ services:
restart: 'unless-stopped'
gitea:
image: 'code.forgejo.org/forgejo/runner:3.3.0'
image: 'code.forgejo.org/forgejo/runner:3.4.1'
links:
- docker-in-docker
depends_on:
@ -178,7 +178,7 @@ services:
Here, we're not running the `forgejo-runner daemon` yet because we
need to register it first. Please note that in a recent install of
docker `docker-compose`is not a separate command but should be run as
docker `docker-compose` is not a separate command but should be run as
`docker compose`.
Follow the registration instructions below
by starting the `runner` service with `docker-compose up -d` and
@ -218,7 +218,7 @@ environment. They need to be installed and configured independently.
(because it doesn't usually need one).
If the Forgejo runner complains about "daemon Docker Engine socket not found", or "cannot ping the docker daemon",
you can use podman to provide a Docker compatible socket from an unprivileged user
you can use Podman to provide a Docker compatible socket from an unprivileged user
and pass that socket on to the runner,
e.g. by executing:
@ -245,7 +245,7 @@ environment. They need to be installed and configured independently.
```shell
$ lxc-helpers.sh lxc_container_run forgejo-runners -- sudo --user debian bash
$ sudo apt-get install docker.io wget gnupg2
$ wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-amd64
$ wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.4.1/forgejo-runner-amd64
...
```
@ -275,7 +275,7 @@ The `Forgejo runner` needs to connect to a `Forgejo` instance and must be regist
```shell
forgejo-runner register --no-interactive --token {TOKEN} --name runner --instance https://next.forgejo.org
INFO Registering runner, arch=amd64, os=linux, version=3.3.0.
INFO Registering runner, arch=amd64, os=linux, version=3.4.1.
INFO Runner registered successfully.
```
@ -339,6 +339,26 @@ The `Forgejo runner` needs to connect to a `Forgejo` instance and must be regist
--secret 7c31591e8b67225a116d4a4519ea8e507e08f71f
```
The secret must be a 40-character long string of hexadecimal numbers.
The first 16 characters will be used as an identifier for the runner, while
the rest is the actual secret. It is possible to update the secret of an
existing runner by running the command again on the Forgejo machine, with
the last 24 characters updated.
For instance, the command below would change the secret set by the previous
command:
```sh
$ forgejo forgejo-cli actions register --name runner-name --scope myorganization \
--secret 7c31591e8b67225a84e8e06633b9578e793664c3
# ^^^^^^^^^^^^^^^^ This part is identical
```
The registration command on the Forgejo side is mostly idempotent, with the
exception of the runner labels. If the command is run without `--labels`, they
will be reset, and the runner won't set them back until it is restarted. The
`--keep-labels` option can be used to preserve the existing labels.
### Configuration
The default configuration for the runner can be
@ -379,7 +399,7 @@ runner:
# The labels of a runner are used to determine which jobs the runner can run, and how to run them.
# Like: ["macos-arm64:host", "ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye"]
# If it's empty when registering, it will ask for inputting labels.
# If it's empty when execute `deamon`, will use labels in `.runner` file.
# If it's empty when execute `daemon`, will use labels in `.runner` file.
labels: []
cache:
@ -532,7 +552,7 @@ jobs:
If you run this action with `forgejo-runner exec`, you should expect this job fail:
```shell-session
```shellsession
$ forgejo-runner exec
...
| curl: (7) Couldn't connect to server
@ -595,7 +615,7 @@ will have the `Forgejo runner` declare that it supports the `node20` and `bullse
If the list of labels is empty, it defaults to `docker:docker://node:16-bullseye` and will declare the label `docker`.
Declaring a label means that the `Forgejo runner` will accept tasks that specify this label in the `runs-on` field.
So, to mimick the GitHub runners, the `runs-on` field can be set to `ubuntu-22.04:docker://node:20-bullseye` for instance.
So, to mimic the GitHub runners, the `runs-on` field can be set to `ubuntu-22.04:docker://node:20-bullseye` for instance.
With this, the Forgejo runner will respond to `runs-on: ubuntu-22.04` and will use the `node:20-bullseye` image from hub.docker.com.
This image is quite capable of running many of the workflows that are designed for the GitHub runners.
For a slightly bigger image, use `ghcr.io/catthehacker/ubuntu:act-22.04` instead of `node:20-bullseye` which should be compatible with most actions while remaining relatively small.
@ -629,7 +649,7 @@ They can be overridden by a workflow to use `debian` and `bookworm` as follows.
```yaml
runs-on: lxc
container:
image: debian:bookwork
image: debian:bookworm
```
See the user documentation for `jobs.<job_id>.container` for more information.

View file

@ -15,32 +15,33 @@ To update this page, run the following command from the root of the docs repo:
```
NAME:
Forgejo - Beyond coding. We forge.
forgejo - Beyond coding. We forge.
USAGE:
Forgejo [global options] command [command options] [arguments...]
forgejo [global options] command [command options]
DESCRIPTION:
By default, forgejo will start serving using the web-server with no argument, which can alternatively be run by running the subcommand "web".
COMMANDS:
help, h Shows a list of commands or help for one command
web Start the Forgejo web server
serv This command should only be called by SSH shell
hook Delegate commands to corresponding Git hooks
serv (internal) Should only be called by SSH shell
hook (internal) Should only be called by Git
keys (internal) Should only be called by SSH server
dump Dump Forgejo files and database
admin Command line interface to perform common administrative operations
admin Perform common administrative operations
migrate Migrate the database
keys This command queries the Forgejo database to get the authorized command for a given ssh key fingerprint
doctor Diagnose and optionally fix problems
doctor Diagnose and optionally fix problems, convert or re-create database tables
manager Manage the running forgejo process
embedded Extract embedded resources
migrate-storage Migrate the storage
dump-repo Dump the repository from git/github/gitea/gitlab
restore-repo Restore the repository from disk
help, h Shows a list of commands or help for one command
actions Manage Forgejo Actions
cert Generate self-signed certificate
generate Command line interface for running generators
generate Generate Gitea's secrets/keys/tokens
docs Output CLI documentation
forgejo-cli Forgejo CLI
@ -56,10 +57,10 @@ GLOBAL OPTIONS:
```
NAME:
Forgejo forgejo-cli - Forgejo CLI
forgejo forgejo-cli - Forgejo CLI
USAGE:
Forgejo forgejo-cli command [command options] [arguments...]
forgejo forgejo-cli command [command options]
COMMANDS:
actions Commands for managing Forgejo Actions
@ -73,10 +74,10 @@ OPTIONS:
```
NAME:
Forgejo forgejo-cli actions - Commands for managing Forgejo Actions
forgejo forgejo-cli actions - Commands for managing Forgejo Actions
USAGE:
Forgejo forgejo-cli actions command [command options] [arguments...]
forgejo forgejo-cli actions command [command options]
COMMANDS:
generate-runner-token Generate a new token for a runner to use to register with the server
@ -92,10 +93,10 @@ OPTIONS:
```
NAME:
Forgejo forgejo-cli actions generate-runner-token - Generate a new token for a runner to use to register with the server
forgejo forgejo-cli actions generate-runner-token - Generate a new token for a runner to use to register with the server
USAGE:
Forgejo forgejo-cli actions generate-runner-token [command options] [arguments...]
forgejo forgejo-cli actions generate-runner-token [command options] [arguments...]
OPTIONS:
--scope value, -s value {owner}[/{repo}] - leave empty for a global runner
@ -106,10 +107,10 @@ OPTIONS:
```
NAME:
Forgejo forgejo-cli actions generate-secret - Generate a secret suitable for input to the register subcommand
forgejo forgejo-cli actions generate-secret - Generate a secret suitable for input to the register subcommand
USAGE:
Forgejo forgejo-cli actions generate-secret [command options] [arguments...]
forgejo forgejo-cli actions generate-secret [command options] [arguments...]
OPTIONS:
--help, -h show help
@ -119,10 +120,10 @@ OPTIONS:
```
NAME:
Forgejo forgejo-cli actions register - Idempotent registration of a runner using a shared secret
forgejo forgejo-cli actions register - Idempotent registration of a runner using a shared secret
USAGE:
Forgejo forgejo-cli actions register [command options] [arguments...]
forgejo forgejo-cli actions register [command options] [arguments...]
OPTIONS:
--secret value the secret the runner will use to connect as a 40 character hexadecimal string
@ -139,10 +140,10 @@ OPTIONS:
```
NAME:
Forgejo web - Start the Forgejo web server
forgejo web - Start the Forgejo web server
USAGE:
Forgejo web command [command options] [arguments...]
forgejo web command [command options]
DESCRIPTION:
The Forgejo web server is the only thing you need to run,
@ -167,10 +168,10 @@ OPTIONS:
```
NAME:
Forgejo dump - Dump Forgejo files and database
forgejo dump - Dump Forgejo files and database
USAGE:
Forgejo dump command [command options] [arguments...]
forgejo dump command [command options]
DESCRIPTION:
Dump compresses all related files and database into zip file.
@ -203,10 +204,10 @@ OPTIONS:
```
NAME:
Forgejo admin - Command line interface to perform common administrative operations
forgejo admin - Perform common administrative operations
USAGE:
Forgejo admin command [command options] [arguments...]
forgejo admin command [command options]
COMMANDS:
user Modify users
@ -227,10 +228,10 @@ OPTIONS:
```
NAME:
Forgejo admin user - Modify users
forgejo admin user - Modify users
USAGE:
Forgejo admin user command [command options] [arguments...]
forgejo admin user command [command options]
COMMANDS:
create Create a new user in database
@ -252,10 +253,10 @@ OPTIONS:
```
NAME:
Forgejo admin user create - Create a new user in database
forgejo admin user create - Create a new user in database
USAGE:
Forgejo admin user create command [command options] [arguments...]
forgejo admin user create command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -271,7 +272,7 @@ OPTIONS:
--email value User email address
--admin User is an admin (default: false)
--random-password Generate a random password for the user (default: false)
--must-change-password Set this option to false to prevent forcing the user to change their password after initial login, (Default: true) (default: false)
--must-change-password Set this option to false to prevent forcing the user to change their password after initial login
--random-password-length value Length of the random password to be generated (default: 12)
--access-token Generate access token for the user (default: false)
--restricted Make a restricted user account (default: false)
@ -281,10 +282,10 @@ OPTIONS:
```
NAME:
Forgejo admin user list - List users
forgejo admin user list - List users
USAGE:
Forgejo admin user list command [command options] [arguments...]
forgejo admin user list command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -301,10 +302,10 @@ OPTIONS:
```
NAME:
Forgejo admin user change-password - Change a user's password
forgejo admin user change-password - Change a user's password
USAGE:
Forgejo admin user change-password command [command options] [arguments...]
forgejo admin user change-password command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -316,16 +317,17 @@ OPTIONS:
--work-path value, -w value Set Forgejo's working path (defaults to the directory of the Forgejo binary)
--username value, -u value The user to change password for
--password value, -p value New password to set for user
--must-change-password User must change password (default: true)
```
### admin user delete
```
NAME:
Forgejo admin user delete - Delete specific user by id, name or email
forgejo admin user delete - Delete specific user by id, name or email
USAGE:
Forgejo admin user delete command [command options] [arguments...]
forgejo admin user delete command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -345,10 +347,10 @@ OPTIONS:
```
NAME:
Forgejo admin user generate-access-token - Generate an access token for a specific user
forgejo admin user generate-access-token - Generate an access token for a specific user
USAGE:
Forgejo admin user generate-access-token command [command options] [arguments...]
forgejo admin user generate-access-token command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -368,10 +370,10 @@ OPTIONS:
```
NAME:
Forgejo admin user must-change-password - Set the must change password flag for the provided users or all users
forgejo admin user must-change-password - Set the must change password flag for the provided users or all users
USAGE:
Forgejo admin user must-change-password command [command options] [arguments...]
forgejo admin user must-change-password command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -390,10 +392,10 @@ OPTIONS:
```
NAME:
Forgejo admin repo-sync-releases - Synchronize repository releases with tags
forgejo admin repo-sync-releases - Synchronize repository releases with tags
USAGE:
Forgejo admin repo-sync-releases command [command options] [arguments...]
forgejo admin repo-sync-releases command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -409,10 +411,10 @@ OPTIONS:
```
NAME:
Forgejo admin regenerate - Regenerate specific files
forgejo admin regenerate - Regenerate specific files
USAGE:
Forgejo admin regenerate command [command options] [arguments...]
forgejo admin regenerate command [command options]
COMMANDS:
hooks Regenerate git-hooks
@ -430,10 +432,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth - Modify external auth providers
forgejo admin auth - Modify external auth providers
USAGE:
Forgejo admin auth command [command options] [arguments...]
forgejo admin auth command [command options]
COMMANDS:
add-oauth Add new Oauth authentication source
@ -459,10 +461,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth add-oauth - Add new Oauth authentication source
forgejo admin auth add-oauth - Add new Oauth authentication source
USAGE:
Forgejo admin auth add-oauth command [command options] [arguments...]
forgejo admin auth add-oauth command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -499,10 +501,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth update-oauth - Update existing Oauth authentication source
forgejo admin auth update-oauth - Update existing Oauth authentication source
USAGE:
Forgejo admin auth update-oauth command [command options] [arguments...]
forgejo admin auth update-oauth command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -540,10 +542,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth add-ldap - Add new LDAP (via Bind DN) authentication source
forgejo admin auth add-ldap - Add new LDAP (via Bind DN) authentication source
USAGE:
Forgejo admin auth add-ldap command [command options] [arguments...]
forgejo admin auth add-ldap command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -584,10 +586,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth update-ldap - Update existing LDAP (via Bind DN) authentication source
forgejo admin auth update-ldap - Update existing LDAP (via Bind DN) authentication source
USAGE:
Forgejo admin auth update-ldap command [command options] [arguments...]
forgejo admin auth update-ldap command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -629,10 +631,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth add-ldap-simple - Add new LDAP (simple auth) authentication source
forgejo admin auth add-ldap-simple - Add new LDAP (simple auth) authentication source
USAGE:
Forgejo admin auth add-ldap-simple command [command options] [arguments...]
forgejo admin auth add-ldap-simple command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -661,17 +663,17 @@ OPTIONS:
--public-ssh-key-attribute value The attribute of the users LDAP record containing the users public ssh key.
--skip-local-2fa Set to true to skip local 2fa for users authenticated by this source (default: false)
--avatar-attribute value The attribute of the users LDAP record containing the users avatar.
--user-dn value The users DN.
--user-dn value The user's DN.
```
### admin auth update-ldap-simple
```
NAME:
Forgejo admin auth update-ldap-simple - Update existing LDAP (simple auth) authentication source
forgejo admin auth update-ldap-simple - Update existing LDAP (simple auth) authentication source
USAGE:
Forgejo admin auth update-ldap-simple command [command options] [arguments...]
forgejo admin auth update-ldap-simple command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -701,17 +703,17 @@ OPTIONS:
--public-ssh-key-attribute value The attribute of the users LDAP record containing the users public ssh key.
--skip-local-2fa Set to true to skip local 2fa for users authenticated by this source (default: false)
--avatar-attribute value The attribute of the users LDAP record containing the users avatar.
--user-dn value The users DN.
--user-dn value The user's DN.
```
### admin auth add-smtp
```
NAME:
Forgejo admin auth add-smtp - Add new SMTP authentication source
forgejo admin auth add-smtp - Add new SMTP authentication source
USAGE:
Forgejo admin auth add-smtp command [command options] [arguments...]
forgejo admin auth add-smtp command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -738,10 +740,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth update-smtp - Update existing SMTP authentication source
forgejo admin auth update-smtp - Update existing SMTP authentication source
USAGE:
Forgejo admin auth update-smtp command [command options] [arguments...]
forgejo admin auth update-smtp command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -769,10 +771,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth list - List auth sources
forgejo admin auth list - List auth sources
USAGE:
Forgejo admin auth list command [command options] [arguments...]
forgejo admin auth list command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -793,10 +795,10 @@ OPTIONS:
```
NAME:
Forgejo admin auth delete - Delete specific auth source
forgejo admin auth delete - Delete specific auth source
USAGE:
Forgejo admin auth delete command [command options] [arguments...]
forgejo admin auth delete command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -813,10 +815,10 @@ OPTIONS:
```
NAME:
Forgejo admin sendmail - Send a message to all users
forgejo admin sendmail - Send a message to all users
USAGE:
Forgejo admin sendmail command [command options] [arguments...]
forgejo admin sendmail command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -835,10 +837,10 @@ OPTIONS:
```
NAME:
Forgejo migrate - Migrate the database
forgejo migrate - Migrate the database
USAGE:
Forgejo migrate command [command options] [arguments...]
forgejo migrate command [command options]
DESCRIPTION:
This is a command for migrating the database, so that you can run gitea admin create-user before starting the server.
@ -857,10 +859,13 @@ OPTIONS:
```
NAME:
Forgejo keys - This command queries the Forgejo database to get the authorized command for a given ssh key fingerprint
forgejo keys - (internal) Should only be called by SSH server
USAGE:
Forgejo keys command [command options] [arguments...]
forgejo keys command [command options]
DESCRIPTION:
Queries the Forgejo database to get the authorized command for a given ssh key fingerprint
COMMANDS:
help, h Shows a list of commands or help for one command
@ -880,10 +885,10 @@ OPTIONS:
```
NAME:
Forgejo doctor - Diagnose and optionally fix problems
forgejo doctor - Diagnose and optionally fix problems, convert or re-create database tables
USAGE:
Forgejo doctor command [command options] [arguments...]
forgejo doctor command [command options]
DESCRIPTION:
A command to diagnose problems with the current Forgejo instance according to the given configuration. Some problems can optionally be fixed by modifying the database or data storage.
@ -905,10 +910,10 @@ OPTIONS:
```
NAME:
Forgejo doctor check - Diagnose and optionally fix problems
forgejo doctor check - Diagnose and optionally fix problems
USAGE:
Forgejo doctor check command [command options] [arguments...]
forgejo doctor check command [command options]
DESCRIPTION:
A command to diagnose problems with the current Forgejo instance according to the given configuration. Some problems can optionally be fixed by modifying the database or data storage.
@ -934,10 +939,10 @@ OPTIONS:
```
NAME:
Forgejo doctor recreate-table - Recreate tables from XORM definitions and copy the data.
forgejo doctor recreate-table - Recreate tables from XORM definitions and copy the data.
USAGE:
Forgejo doctor recreate-table command [command options] [TABLE]... : (TABLEs to recreate - leave blank for all)
forgejo doctor recreate-table command [command options] [TABLE]... : (TABLEs to recreate - leave blank for all)
DESCRIPTION:
The database definitions Forgejo uses change across versions, sometimes changing default values and leaving old unused columns.
@ -961,10 +966,10 @@ OPTIONS:
```
NAME:
Forgejo doctor convert - Convert the database
forgejo doctor convert - Convert the database
USAGE:
Forgejo doctor convert command [command options] [arguments...]
forgejo doctor convert command [command options]
DESCRIPTION:
A command to convert an existing MySQL database from utf8 to utf8mb4 or MSSQL database from varchar to nvarchar
@ -983,10 +988,10 @@ OPTIONS:
```
NAME:
Forgejo manager - Manage the running forgejo process
forgejo manager - Manage the running forgejo process
USAGE:
Forgejo manager command [command options] [arguments...]
forgejo manager command [command options]
DESCRIPTION:
This is a command for managing the running forgejo process
@ -1011,10 +1016,10 @@ OPTIONS:
```
NAME:
Forgejo manager shutdown - Gracefully shutdown the running process
forgejo manager shutdown - Gracefully shutdown the running process
USAGE:
Forgejo manager shutdown command [command options] [arguments...]
forgejo manager shutdown command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1031,10 +1036,10 @@ OPTIONS:
```
NAME:
Forgejo manager restart - Gracefully restart the running process - (not implemented for windows servers)
forgejo manager restart - Gracefully restart the running process - (not implemented for windows servers)
USAGE:
Forgejo manager restart command [command options] [arguments...]
forgejo manager restart command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1051,10 +1056,10 @@ OPTIONS:
```
NAME:
Forgejo manager reload-templates - Reload template files in the running process
forgejo manager reload-templates - Reload template files in the running process
USAGE:
Forgejo manager reload-templates command [command options] [arguments...]
forgejo manager reload-templates command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1071,10 +1076,10 @@ OPTIONS:
```
NAME:
Forgejo manager flush-queues - Flush queues in the running process
forgejo manager flush-queues - Flush queues in the running process
USAGE:
Forgejo manager flush-queues command [command options] [arguments...]
forgejo manager flush-queues command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1093,10 +1098,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging - Adjust logging commands
forgejo manager logging - Adjust logging commands
USAGE:
Forgejo manager logging command [command options] [arguments...]
forgejo manager logging command [command options]
COMMANDS:
pause Pause logging (Forgejo will buffer logs up to a certain point and will drop them after that point)
@ -1118,10 +1123,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging pause - Pause logging (Forgejo will buffer logs up to a certain point and will drop them after that point)
forgejo manager logging pause - Pause logging (Forgejo will buffer logs up to a certain point and will drop them after that point)
USAGE:
Forgejo manager logging pause command [command options] [arguments...]
forgejo manager logging pause command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1138,10 +1143,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging resume - Resume logging
forgejo manager logging resume - Resume logging
USAGE:
Forgejo manager logging resume command [command options] [arguments...]
forgejo manager logging resume command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1158,10 +1163,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging release-and-reopen - Cause Forgejo to release and re-open files used for logging
forgejo manager logging release-and-reopen - Cause Forgejo to release and re-open files used for logging
USAGE:
Forgejo manager logging release-and-reopen command [command options] [arguments...]
forgejo manager logging release-and-reopen command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1178,10 +1183,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging remove - Remove a logger
forgejo manager logging remove - Remove a logger
USAGE:
Forgejo manager logging remove command [command options] [name] Name of logger to remove
forgejo manager logging remove command [command options] [name] Name of logger to remove
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1199,10 +1204,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging add - Add a logger
forgejo manager logging add - Add a logger
USAGE:
Forgejo manager logging add command [command options] [arguments...]
forgejo manager logging add command [command options]
COMMANDS:
file Add a file logger
@ -1220,10 +1225,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging add file - Add a file logger
forgejo manager logging add file - Add a file logger
USAGE:
Forgejo manager logging add file command [command options] [arguments...]
forgejo manager logging add file command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1255,10 +1260,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging add conn - Add a net conn logger
forgejo manager logging add conn - Add a net conn logger
USAGE:
Forgejo manager logging add conn command [command options] [arguments...]
forgejo manager logging add conn command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1287,10 +1292,10 @@ OPTIONS:
```
NAME:
Forgejo manager logging log-sql - Set LogSQL
forgejo manager logging log-sql - Set LogSQL
USAGE:
Forgejo manager logging log-sql command [command options] [arguments...]
forgejo manager logging log-sql command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1308,10 +1313,10 @@ OPTIONS:
```
NAME:
Forgejo manager processes - Display running processes within the current process
forgejo manager processes - Display running processes within the current process
USAGE:
Forgejo manager processes command [command options] [arguments...]
forgejo manager processes command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1333,10 +1338,10 @@ OPTIONS:
```
NAME:
Forgejo embedded - Extract embedded resources
forgejo embedded - Extract embedded resources
USAGE:
Forgejo embedded command [command options] [arguments...]
forgejo embedded command [command options]
DESCRIPTION:
A command for extracting embedded resources, like templates and images
@ -1358,10 +1363,10 @@ OPTIONS:
```
NAME:
Forgejo embedded list - List files matching the given pattern
forgejo embedded list - List files matching the given pattern
USAGE:
Forgejo embedded list command [command options] [arguments...]
forgejo embedded list command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1378,10 +1383,10 @@ OPTIONS:
```
NAME:
Forgejo embedded view - View a file matching the given pattern
forgejo embedded view - View a file matching the given pattern
USAGE:
Forgejo embedded view command [command options] [arguments...]
forgejo embedded view command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1398,10 +1403,10 @@ OPTIONS:
```
NAME:
Forgejo embedded extract - Extract resources
forgejo embedded extract - Extract resources
USAGE:
Forgejo embedded extract command [command options] [arguments...]
forgejo embedded extract command [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1422,10 +1427,10 @@ OPTIONS:
```
NAME:
Forgejo migrate-storage - Migrate the storage
forgejo migrate-storage - Migrate the storage
USAGE:
Forgejo migrate-storage command [command options] [arguments...]
forgejo migrate-storage command [command options]
DESCRIPTION:
Copies stored files from storage configured in app.ini to parameter-configured storage
@ -1438,7 +1443,7 @@ OPTIONS:
--custom-path value, -C value Set custom path (defaults to '{WorkPath}/custom')
--config value, -c value Set custom config file (defaults to '{WorkPath}/custom/conf/app.ini')
--work-path value, -w value Set Forgejo's working path (defaults to the directory of the Forgejo binary)
--type value, -t value Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log'
--type value, -t value Type of stored files to copy. Allowed types: 'attachments', 'lfs', 'avatars', 'repo-avatars', 'repo-archivers', 'packages', 'actions-log', 'actions-artifacts'
--storage value, -s value New storage type: local (default) or minio
--path value, -p value New storage placement if store is local (leave blank for default)
--minio-endpoint value Minio storage endpoint
@ -1456,10 +1461,10 @@ OPTIONS:
```
NAME:
Forgejo dump-repo - Dump the repository from git/github/gitea/gitlab
forgejo dump-repo - Dump the repository from git/github/gitea/gitlab
USAGE:
Forgejo dump-repo command [command options] [arguments...]
forgejo dump-repo command [command options]
DESCRIPTION:
This is a command for dumping the repository data.
@ -1488,10 +1493,10 @@ OPTIONS:
```
NAME:
Forgejo restore-repo - Restore the repository from disk
forgejo restore-repo - Restore the repository from disk
USAGE:
Forgejo restore-repo command [command options] [arguments...]
forgejo restore-repo command [command options]
DESCRIPTION:
This is a command for restoring the repository data.
@ -1516,10 +1521,10 @@ OPTIONS:
```
NAME:
Forgejo cert - Generate self-signed certificate
forgejo cert - Generate self-signed certificate
USAGE:
Forgejo cert [command options] [arguments...]
forgejo cert [command options] [arguments...]
DESCRIPTION:
Generate a self-signed X.509 certificate for a TLS server.
@ -1539,10 +1544,10 @@ OPTIONS:
```
NAME:
Forgejo generate secret - Generate a secret token
forgejo generate secret - Generate a secret token
USAGE:
Forgejo generate secret command [command options] [arguments...]
forgejo generate secret command [command options]
COMMANDS:
INTERNAL_TOKEN Generate a new INTERNAL_TOKEN

View file

@ -1,7 +1,7 @@
---
title: 'Configuration Cheat Sheet'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/config-cheat-sheet.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/config-cheat-sheet.en-us.md'
---
This is a cheat sheet for the Forgejo configuration file. It contains most of the settings
@ -209,10 +209,10 @@ The following configuration set `Content-Type: application/vnd.android.package-a
- `CODE_COMMENT_LINES`: **4**: Number of line of codes shown for a code comment.
- `DEFAULT_THEME`: **forgejo-auto**: \[forgejo-auto, forgejo-light, forgejo-dark, auto, gitea, arc-green\]: Set the default theme for the Forgejo install.
- `SHOW_USER_EMAIL`: **true**: Whether the email of the user should be shown in the Explore Users page.
- `THEMES`: **forgejo-auto,forgejo-light,forgejo-dark,auto,gitea,arc-green**: All available themes. Allow users select personalized themes.
- `THEMES`: **forgejo-auto, forgejo-light, forgejo-dark, gitea-auto, gitea-light, gitea-dark, forgejo-auto-deuteranopia-protanopia, forgejo-light-deuteranopia-protanopia, forgejo-dark-deuteranopia-protanopia, forgejo-auto-tritanopia, forgejo-light-tritanopia, forgejo-dark-tritanopia**: All available themes. Allow users select personalized themes.
regardless of the value of `DEFAULT_THEME`.
- `MAX_DISPLAY_FILE_SIZE`: **8388608**: Max size of files to be displayed (default is 8MiB)
- `REACTIONS`: All available reactions users can choose on issues/prs and comments
- `REACTIONS`: All available reactions users can choose on issues/PRs and comments
Values can be emoji alias (:smile:) or a unicode emoji.
For custom reactions, add a tightly cropped square image to public/assets/img/emoji/reaction_name.png
- `REACTION_MAX_USER_NUM`: **10**: Change the number of users that are displayed in reactions tooltip (triggered by mouse hover).
@ -356,7 +356,7 @@ The following configuration set `Content-Type: application/vnd.android.package-a
- `APP_DATA_PATH`: **data** (**/data/gitea** on docker): Default path for application data. Relative paths will be made absolute against _`AppWorkPath`_.
- `STATIC_CACHE_TIME`: **6h**: Web browser cache time for static resources on `custom/`, `public/` and all uploaded avatars. Note that this cache is disabled when `RUN_MODE` is "dev".
- `ENABLE_GZIP`: **false**: Enable gzip compression for runtime-generated content, static resources excluded.
- `ENABLE_PPROF`: **false**: Application profiling (memory and cpu). For "web" command it listens on `localhost:6060`. For "serv" command it dumps to disk at `PPROF_DATA_PATH` as `(cpuprofile|memprofile)_<username>_<temporary id>`
- `ENABLE_PPROF`: **false**: Application profiling (memory and cpu). For "web" command it listens on `localhost:6060`.
- `PPROF_DATA_PATH`: **_`AppWorkPath`_/data/tmp/pprof**: `PPROF_DATA_PATH`, use an absolute path when you start Forgejo as service
- `LANDING_PAGE`: **home**: Landing page for unauthenticated users \[home, explore, organizations, login, **custom**\]. Where custom would instead be any URL such as "/org/repo" or even `https://anotherwebsite.com`
- `LFS_START_SERVER`: **false**: Enables Git LFS support.
@ -406,15 +406,15 @@ The following configuration set `Content-Type: application/vnd.android.package-a
- Aliased names
- "ecdhe_rsa_with_chacha20_poly1305" is an alias for "ecdhe_rsa_with_chacha20_poly1305_sha256"
- "ecdhe_ecdsa_with_chacha20_poly1305" is alias for "ecdhe_ecdsa_with_chacha20_poly1305_sha256"
- `ENABLE_ACME`: **false**: Flag to enable automatic certificate management via an ACME capable Certificate Authority (CA) server (default: Lets Encrypt). If enabled, `CERT_FILE` and `KEY_FILE` are ignored, and the CA must resolve `DOMAIN` to this forgejo server. Ensure that DNS records are set and either port `80` or port `443` are accessible by the CA server (the public internet by default), and redirected to the appropriate ports `PORT_TO_REDIRECT` or `HTTP_PORT` respectively.
- `ACME_URL`: **\<empty\>**: The CA's ACME directory URL, e.g. for a self-hosted [smallstep CA server](https://github.com/smallstep/certificates), it can look like `https://ca.example.com/acme/acme/directory`. If left empty, it defaults to using Let's Encerypt's production CA (check `LETSENCRYPT_ACCEPTTOS` as well).
- `ACME_ACCEPTTOS`: **false**: This is an explicit check that you accept the terms of service of the ACME provider. The default is Lets Encrypt [terms of service](https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf).
- `ENABLE_ACME`: **false**: Flag to enable automatic certificate management via an ACME capable Certificate Authority (CA) server (default: Let's Encrypt). If enabled, `CERT_FILE` and `KEY_FILE` are ignored, and the CA must resolve `DOMAIN` to this Forgejo server. Ensure that DNS records are set and either port `80` or port `443` are accessible by the CA server (the public internet by default), and redirected to the appropriate ports `PORT_TO_REDIRECT` or `HTTP_PORT` respectively.
- `ACME_URL`: **\<empty\>**: The CA's ACME directory URL, e.g. for a self-hosted [smallstep CA server](https://github.com/smallstep/certificates), it can look like `https://ca.example.com/acme/acme/directory`. If left empty, it defaults to using Let's Encrypt's production CA (check `LETSENCRYPT_ACCEPTTOS` as well).
- `ACME_ACCEPTTOS`: **false**: This is an explicit check that you accept the terms of service of the ACME provider. The default is Let's Encrypt [terms of service](https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf).
- `ACME_DIRECTORY`: **https**: Directory that the certificate manager will use to cache information such as certs and private keys.
- `ACME_EMAIL`: **\<empty\>**: Email used for the ACME registration. Usually it is to notify about problems with issued certificates.
- `ACME_CA_ROOT`: **\<empty\>**: The CA's root certificate. If left empty, it defaults to using the system's trust chain.
- `ALLOW_GRACEFUL_RESTARTS`: **true**: Perform a graceful restart on SIGHUP
- `GRACEFUL_HAMMER_TIME`: **60s**: After a restart the parent process will stop accepting new connections and will allow requests to finish before stopping. Shutdown will be forced if it takes longer than this time.
- `STARTUP_TIMEOUT`: **0**: Shutsdown the server if startup takes longer than the provided time. On Windows setting this sends a waithint to the SVC host to tell the SVC host startup may take some time. Please note startup is determined by the opening of the listeners - HTTP/HTTPS/SSH. Indexers may take longer to startup and can have their own timeouts.
- `STARTUP_TIMEOUT`: **0**: Shuts down the server if startup takes longer than the provided time. On Windows setting this sends a waithint to the SVC host to tell the SVC host startup may take some time. Please note startup is determined by the opening of the listeners - HTTP/HTTPS/SSH. Indexers may take longer to startup and can have their own timeouts.
## Database (`database`)
@ -484,9 +484,9 @@ Configuration at `[queue]` will set defaults for queues with overrides for indiv
- `DATADIR`: **queues/common**: Base DataDir for storing level queues. `DATADIR` for individual queues can be set in `queue.name` sections. Relative paths will be made absolute against `%(APP_DATA_PATH)s`.
- `LENGTH`: **100000**: Maximal queue size before channel queues block
- `BATCH_LENGTH`: **20**: Batch data before passing to the handler
- `CONN_STR`: **redis://127.0.0.1:6379/0**: Connection string for the redis queue type. For `redis-cluster` use `redis+cluster://127.0.0.1:6379/0`. Options can be set using query params. Similarly, LevelDB options can also be set using: **leveldb://relative/path?option=value** or **leveldb:///absolute/path?option=value**, and will override `DATADIR`
- `QUEUE_NAME`: **\_queue**: The suffix for default redis and disk queue name. Individual queues will default to **`name`**`QUEUE_NAME` but can be overridden in the specific `queue.name` section.
- `SET_NAME`: **\_unique**: The suffix that will be added to the default redis and disk queue `set` name for unique queues. Individual queues will default to **`name`**`QUEUE_NAME`_`SET_NAME`_ but can be overridden in the specific `queue.name` section.
- `CONN_STR`: **redis://127.0.0.1:6379/0**: Connection string for the Redis queue type. For `redis-cluster` use `redis+cluster://127.0.0.1:6379/0`. Options can be set using query params. Similarly, LevelDB options can also be set using: **leveldb://relative/path?option=value** or **leveldb:///absolute/path?option=value**, and will override `DATADIR`
- `QUEUE_NAME`: **\_queue**: The suffix for default Redis and disk queue name. Individual queues will default to **`name`**`QUEUE_NAME` but can be overridden in the specific `queue.name` section.
- `SET_NAME`: **\_unique**: The suffix that will be added to the default Redis and disk queue `set` name for unique queues. Individual queues will default to **`name`**`QUEUE_NAME`_`SET_NAME`_ but can be overridden in the specific `queue.name` section.
- `MAX_WORKERS`: **(dynamic)**: Maximum number of worker go-routines for the queue. Default value is "CpuNum/2" clipped to between 1 and 10.
Forgejo creates the following non-unique queues:
@ -509,8 +509,14 @@ And the following unique queues:
- `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled
- `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations.
- `USER_DISABLED_FEATURES`: **_empty_** Disabled features for users, could be `deletion` and more features can be added in future.
- `USER_DISABLED_FEATURES`: **_empty_** Disabled features for users, could be `deletion`, `manage_ssh_keys`, `manage_gpg_keys` and more features can be added in future.
- `deletion`: User cannot delete their own account.
- `manage_ssh_keys`: User cannot configure ssh keys.
- `manage_gpg_keys`: User cannot configure gpg keys.
- `EXTERNAL_USER_DISABLE_FEATURES`: **_empty_**: Comma separated list of disabled features ONLY if the user has an external login type (eg. LDAP, Oauth, etc.), could be `deletion`, `manage_ssh_keys`, `manage_gpg_keys`. This setting is independent from `USER_DISABLED_FEATURES` and supplements its behavior.
- `deletion`: User cannot delete their own account.
- `manage_ssh_keys`: User cannot configure ssh keys.
- `manage_gpg_keys`: User cannot configure gpg keys.
- `SEND_NOTIFICATION_EMAIL_ON_NEW_USER`: **false**: enable email notifications to instance admins on new user sign-up. It requires `ENABLE_NOTIFY_MAIL` to be true.
## Security (`security`)
@ -518,7 +524,7 @@ And the following unique queues:
- `INSTALL_LOCK`: **false**: Controls access to the installation page. When set to "true", the installation page is not accessible.
- `SECRET_KEY`: **\<random at every install\>**: Global secret key. This key is VERY IMPORTANT, if you lost it, the data encrypted by it (like 2FA secret) can't be decrypted anymore.
- `SECRET_KEY_URI`: **\<empty\>**: Instead of defining SECRET_KEY, this option can be used to use the key stored in a file (example value: `file:/etc/forgejo/secret_key`). It shouldn't be lost like SECRET_KEY.
- `LOGIN_REMEMBER_DAYS`: **7**: Cookie lifetime, in days.
- `LOGIN_REMEMBER_DAYS`: **31**: Cookie lifetime, in days.
- `COOKIE_REMEMBER_NAME`: **gitea_incredible**: Name of cookie used to store authentication
information.
- `REVERSE_PROXY_AUTHENTICATION_USER`: **X-WEBAUTH-USER**: Header name for reverse proxy
@ -580,7 +586,7 @@ And the following unique queues:
## OpenID (`openid`)
- `ENABLE_OPENID_SIGNIN`: **false**: Allow authentication in via OpenID.
- `ENABLE_OPENID_SIGNIN`: **true**: Allow authentication in via OpenID.
- `ENABLE_OPENID_SIGNUP`: **! DISABLE_REGISTRATION**: Allow registering via OpenID.
- `WHITELISTED_URIS`: **\<empty\>**: If non-empty, list of POSIX regex patterns matching
OpenID URI's to permit.
@ -589,6 +595,8 @@ And the following unique queues:
## OAuth2 Client (`oauth2_client`)
**Note**: Please note that if `SAME_SITE` is set to `strict` then login via an external OAuth2 provider may be broken. - this is a [known bug](https://codeberg.org/forgejo/forgejo/issues/1205).
- `REGISTER_EMAIL_CONFIRM`: _[service]_ **REGISTER_EMAIL_CONFIRM**: Set this to enable or disable email confirmation of OAuth2 auto-registration. (Overwrites the REGISTER_EMAIL_CONFIRM setting of the `[service]` section)
- `OPENID_CONNECT_SCOPES`: **\<empty\>**: List of additional openid connect scopes. (`openid` is implicitly added)
- `ENABLE_AUTO_REGISTRATION`: **false**: Automatically create user accounts for new oauth2 users.
@ -654,7 +662,7 @@ And the following unique queues:
- `DEFAULT_ALLOW_CREATE_ORGANIZATION`: **true**: Allow new users to create organizations by default.
- `DEFAULT_USER_IS_RESTRICTED`: **false**: Give new users restricted permissions by default
- `DEFAULT_ENABLE_DEPENDENCIES`: **true**: Enable this to have dependencies enabled by default.
- `USER_LOCATION_MAP_URL`: **""**: A map service URL to show user's location on a map. The location will be appended to the URL as escaped query parameter.
- `USER_LOCATION_MAP_URL`: **""**: A map service URL to show user's location on a map. The location will be appended to the URL as escaped query parameter. In Forgejo, [OpenStreetMap](https://openstreetmap.org) is used by default.
- `ALLOW_CROSS_REPOSITORY_DEPENDENCIES` : **true** Enable this to allow dependencies on issues from any repository where the user is granted access.
- `ENABLE_USER_HEATMAP`: **true**: Enable this to display the heatmap on users profiles.
- `ENABLE_TIMETRACKING`: **true**: Enable Timetracking feature.
@ -758,6 +766,7 @@ Define allowed algorithms and their minimum key length (use -1 to disable a type
## Cache (`cache`)
- `ADAPTER`: **memory**: Cache engine adapter, either `memory`, `redis`, `redis-cluster`, `twoqueue` or `memcache`. (`twoqueue` represents a size limited LRU cache.)
- Refer to the [Recommended Settings](../recommendations/#cacheadapter) for more information about cache adapters.
- `INTERVAL`: **60**: Garbage Collection interval (sec), for memory and twoqueue cache only.
- `HOST`: **\<empty\>**: Connection string for `redis`, `redis-cluster` and `memcache`. For `twoqueue` sets configuration for the queue.
- Redis: `redis://:macaron@127.0.0.1:6379/0?pool_size=100&idle_timeout=180s`
@ -816,8 +825,8 @@ Default templates for project boards:
## Issue and pull request attachments (`attachment`)
- `ENABLED`: **true**: Whether issue and pull request attachments are enabled.
- `ALLOWED_TYPES`: **.csv,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.patch,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types.
- `MAX_SIZE`: **4**: Maximum size (MB).
- `ALLOWED_TYPES`: **.cpuprofile,.csv,.dmp,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.json,.jsonc,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.patch,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types.
- `MAX_SIZE`: **2048**: Maximum size (MB).
- `MAX_FILES`: **5**: Maximum number of attachments that can be uploaded at once.
Additional settings can be included in this section to specify where the data is stored, as [explained in detail in the storage documentation](../storage/).
@ -843,7 +852,7 @@ Additional settings can be included in this section to specify where the data is
- `ResponseWriter`: the responseWriter from the request.
- `RequestID`: the value matching REQUEST_ID_HEADERSdefault: `-`, if not matched.
- You must be very careful to ensure that this template does not throw errors or panics as this template runs outside the panic/recovery script.
- `REQUEST_ID_HEADERS`: **\<empty\>**: You can configure multiple values that are splited by comma here. It will match in the order of configuration, and the first match will be finally printed in the access log.
- `REQUEST_ID_HEADERS`: **\<empty\>**: You can configure multiple values that are split by comma here. It will match in the order of configuration, and the first match will be finally printed in the access log.
- e.g.
- In the Request Header: X-Request-ID: **test-id-123**
- Configuration in app.ini: REQUEST_ID_HEADERS = X-Request-ID
@ -1108,9 +1117,9 @@ This section only does "set" config, a removed config key from this section won'
## i18n (`i18n`)
- `LANGS`: **en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg,it-IT,fi-FI,fil,eo,tr-TR,cs-CZ,sl,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID,ml-IN**:
- `LANGS`: **en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg,it-IT,fi-FI,fil,eo,tr-TR,cs-CZ,sl,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID**:
List of locales shown in language selector. The first locale will be used as the default if user browser's language doesn't match any locale in the list.
- `NAMES`: **English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,Français,Nederlands,Latviešu,Русский,Українська,日本語,Español,Português do Brasil,Português de Portugal,Polski,Български,Italiano,Suomi,Filipino,Esperanto,Türkçe,Čeština,Slovenščina,Svenska,한국어,Ελληνικά,فارسی,Magyar nyelv,Bahasa Indonesia,മലയാളം**: Visible names corresponding to the locales
- `NAMES`: **English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,Français,Nederlands,Latviešu,Русский,Українська,日本語,Español,Português do Brasil,Português de Portugal,Polski,Български,Italiano,Suomi,Filipino,Esperanto,Türkçe,Čeština,Slovenščina,Svenska,한국어,Ελληνικά,فارسی,Magyar nyelv,Bahasa Indonesia**: Visible names corresponding to the locales
## Markup (`markup`)
@ -1158,7 +1167,7 @@ ALLOW_DATA_URI_IMAGES = true
- `ELEMENT`: The element this policy applies to. Must be non-empty.
- `ALLOW_ATTR`: The attribute this policy allows. Must be non-empty.
- `REGEXP`: A regex to match the contents of the attribute against. Must be present but may be empty for unconditional whitelisting of this attribute.
- `REGEXP`: A regex to match the contents of the attribute against. Must be present but may be empty for unconditional allowlisting of this attribute.
- `ALLOW_DATA_URI_IMAGES`: **false** Allow data uri images (`<img src="data:image/png;base64,..."/>`).
Multiple sanitisation rules can be defined by adding unique subsections, e.g. `[markup.sanitizer.TeX-2]`.
@ -1177,14 +1186,6 @@ If the rule is defined above the renderer ini section or the name does not match
- `DEFAULT_UI_LOCATION`: Default location of time on the UI, so that we can display correct user's time on UI. i.e. Asia/Shanghai
## Task (`task`)
Task queue configuration has been moved to `queue.task`. However, the below configuration values are kept for backwards compatibility:
- `QUEUE_TYPE`: **channel**: Task queue type, could be `channel` or `redis`.
- `QUEUE_LENGTH`: **1000**: Task queue length, available only when `QUEUE_TYPE` is `channel`.
- `QUEUE_CONN_STR`: **redis://127.0.0.1:6379/0**: Task queue connection string, available only when `QUEUE_TYPE` is `redis`. If redis needs a password, use `redis://123@127.0.0.1:6379/0` or `redis+cluster://123@127.0.0.1:6379/0`.
## Migrations (`migrations`)
- `MAX_ATTEMPTS`: **3**: Max attempts per http/https request on migrations.
@ -1286,7 +1287,7 @@ The settings for all these sections are [explained in detail in the storage docu
- `PROXY_URL`: **\<empty\>**: Proxy server URL, support http://, https//, socks5://, blank will follow environment http_proxy/https_proxy
- `PROXY_HOSTS`: **\<empty\>**: Comma separated list of host names requiring proxy. Glob patterns (\*) are accepted; use \*\* to match all hosts.
i.e.
For example, the following configuration can be used to proxy connections GitHub subdomains, such as api.github.com:
```ini
PROXY_ENABLED = true
@ -1294,6 +1295,14 @@ PROXY_URL = socks5://127.0.0.1:1080
PROXY_HOSTS = *.github.com
```
If you intend to proxy all connections to github.com, specify it's second-level domain too:
```
PROXY_HOSTS = github.com,*.github.com
```
Note that you may need to set `[migrations].ALLOW_LOCALNETWORKS` option to `true` in order to allow performing migrations via proxy.
## Actions (`actions`)
- `ENABLED`: **true**: Enable/Disable actions
@ -1302,7 +1311,7 @@ PROXY_HOSTS = *.github.com
- `ZOMBIE_TASK_TIMEOUT`: **10m**: Timeout to stop the task which have running status, but haven't been updated for a long time.
- `ENDLESS_TASK_TIMEOUT`: **3h**: Timeout to stop the tasks which have running status and continuous updates, but don't end for a long time.
- `ABANDONED_JOB_TIMEOUT`: **24h**: Timeout to cancel the jobs which have waiting status, but haven't been picked by a runner for a long time.
- `SKIP_WORKFLOW_STRINGS`: **[skip ci],[ci skip],[no ci],[skip actions],[actions skip]**: Strings committers can place inside a commit message to skip executing the corresponding actions workflow
- `SKIP_WORKFLOW_STRINGS`: **[skip ci],[ci skip],[no ci],[skip actions],[actions skip]**: Strings committers can place inside a commit message or pull request title to skip executing the corresponding actions workflow
## Other (`other`)

View file

@ -1,24 +1,47 @@
---
title: 'Database Preparation'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/installation/database-preparation.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/installation/database-preparation.en-us.md'
---
You need a database to use Forgejo. Forgejo supports PostgreSQL (>=12), MySQL (>=8.0) or MariaDB (>=10.0), and SQLite (builtin). This page will guide into preparing the database. Only PostgreSQL and MySQL/MariaDB will be covered here since those database engines are widely-used in production. If you plan to use SQLite, you can ignore this chapter.
You need a database to use Forgejo. The easiest option is SQLite which managed files next to Forgejo and does not require setting up a database server. However, if you plan to use Forgejo with several hundreds of users, or if you already run a databse server, you might want to choose another option.
Forgejo supports:
- MariaDB (>=10.0)
- MySQL (>=8.0)
- PostgreSQL (>=12)
- SQLite3
This page will guide into preparing the database. Also take a look at the [database section of the config cheat sheet](https://forgejo.org/docs/latest/admin/config-cheat-sheet/#database-database) for a detailed list of options in Forgejo.
Database instance can be on same machine as Forgejo (local database setup), or on different machine (remote database).
Note: All steps below requires that the database engine of your choice is installed on your system. For remote database setup, install the server application on database instance and client program on your Forgejo server. The client program is used to test connection to the database from Forgejo server, while Forgejo itself use database driver provided by Go to accomplish the same thing. In addition, make sure you use same engine version for both server and client for some engine features to work. For security reason, protect `root` (MySQL/MariaDB) or `postgres` (PostgreSQL) database superuser with secure password. The steps assumes that you run Linux for both database and Forgejo servers.
## SQLite
Forgejo distributes binaries that come with SQLite support and you don't need to install additional dependencies on your system.
> **Note:** If you build Forgejo from source, build with `make TAGS="sqlite sqlite_unlock_notify" build` to include SQLite support.
Choosing SQLite only requires setting the database type and optionally the path to a database file:
```
[database]
DB_TYPE = sqlite3
# optional if you want to specify another location
# by default, the database file will be stored relative to other data
PATH = data/forgejo.db
```
If you want to maximize performance, you might want to take a look at the `[database].SQLITE_JOURNAL_MODE` setting and consider using the [WAL mode](https://www.sqlite.org/wal.html).
## MySQL/MariaDB
1. For remote database setup, you will need to make MySQL/MariaDB listen to your IP address. Edit `bind-address` option on `/etc/mysql/my.cnf` on database instance to:
1. Install the MariaDB or MySQL server component on the system you would like to store the database on.
```ini
bind-address = 203.0.113.3
```
2. Protect the `root` user with a secure password or disable the login.
2. On database instance, login to database console as root:
3. On the database instance, login to database console as root:
```
mysql -u root -p
@ -26,16 +49,16 @@ Note: All steps below requires that the database engine of your choice is instal
Enter the password as prompted.
3. Create database user which will be used by Forgejo, authenticated by password. This example uses `'passw0rd'` as password. _Please use a secure password for your instance._
4. Create a new database user which will be used by Forgejo, authenticated by password. This example uses `'passw0rd'` as password. **Please use a secure password for your instance.**
For local database:
For a local database:
```sql
SET old_passwords=0;
CREATE USER 'forgejo'@'%' IDENTIFIED BY 'passw0rd';
```
For remote database:
If your database is hosted on another system than Forgejo (includes some containerized deployments):
```sql
SET old_passwords=0;
@ -46,7 +69,7 @@ Note: All steps below requires that the database engine of your choice is instal
Replace username and password above as appropriate.
4. Create database with UTF-8 charset and case-sensitive collation.
5. Create database with UTF-8 charset and case-sensitive collation.
`utf8mb4_bin` is a common collation for both MySQL/MariaDB.
When Forgejo starts, it will try to find a better collation (`utf8mb4_0900_as_cs` or `uca1400_as_cs`) and alter the database if it is possible.
@ -58,9 +81,9 @@ Note: All steps below requires that the database engine of your choice is instal
Replace database name as appropriate.
Using an accent- and case sensitive collation such as `utf8mb4_bin` is important, because Forgejo often relies on these sensitivities, and if those assumptions are broken, that may lead to internal server errors or other unexpected results.
**Using an accent- and case sensitive collation such as `utf8mb4_bin` is important**, because Forgejo often relies on these sensitivities, and if those assumptions are broken, that may lead to internal server errors or other unexpected results.
5. Grant all privileges on the database to database user created above.
6. Grant all privileges on the database to the database user created above.
For local database:
@ -76,9 +99,9 @@ Note: All steps below requires that the database engine of your choice is instal
FLUSH PRIVILEGES;
```
6. Quit from database console by `exit`.
7. Quit from database console by typing `exit`.
7. On your Forgejo server, test connection to the database:
8. Optional: On your Forgejo server, test connection to the database (requires that you have a client library installed. The client is not necessary for Forgejo itself):
```
mysql -u forgejo -h 203.0.113.3 -p forgejodb
@ -90,13 +113,11 @@ Note: All steps below requires that the database engine of your choice is instal
## PostgreSQL
1. For remote database setup, configure PostgreSQL on database instance to listen to your IP address by editing `listen_addresses` on `postgresql.conf` to:
1. Install the PostgreSQL server component on the system you would like to store the database on.
```ini
listen_addresses = 'localhost, 203.0.113.3'
```
2. Protect the `root` user with a secure password or disable the login.
2. PostgreSQL uses `md5` challenge-response encryption scheme for password authentication by default. Nowadays this scheme is not considered secure anymore. Use SCRAM-SHA-256 scheme instead by editing the `postgresql.conf` configuration file on the database server to:
3. If you use a PostgreSQL version lower than 14, the `md5` challenge-response encryption scheme for password authentication is used by default. Nowadays this scheme is not considered secure anymore. Use SCRAM-SHA-256 scheme instead by editing the `postgresql.conf` configuration file on the database server to:
```ini
password_encryption = scram-sha-256
@ -104,13 +125,13 @@ Note: All steps below requires that the database engine of your choice is instal
Restart PostgreSQL to apply the setting.
3. On the database server, login to the database console as superuser:
4. On the database server, login to the database console as superuser:
```
su -c "psql" - postgres
```
4. Create database user (role in PostgreSQL terms) with login privilege and password. _Please use a secure, strong password instead of `'passw0rd'` below:_
5. Create database user (role in PostgreSQL terms) with login privilege and password. _Please use a secure, strong password instead of `'passw0rd'` below:_
```sql
CREATE ROLE forgejo WITH LOGIN PASSWORD 'passw0rd';
@ -118,7 +139,7 @@ Note: All steps below requires that the database engine of your choice is instal
Replace username and password as appropriate.
5. Create database with UTF-8 charset and owned by the database user created earlier. Any `libc` collations can be specified with `LC_COLLATE` and `LC_CTYPE` parameter, depending on expected content:
6. Create database with UTF-8 charset and owned by the database user created earlier. Any `libc` collations can be specified with `LC_COLLATE` and `LC_CTYPE` parameter, depending on expected content:
```sql
CREATE DATABASE forgejodb WITH OWNER forgejo TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
@ -126,7 +147,7 @@ Note: All steps below requires that the database engine of your choice is instal
Replace database name as appropriate.
6. Allow the database user to access the database created above by adding the following authentication rules to `pg_hba.conf`.
7. Allow the database user to access the database created above by adding the following authentication rules to `pg_hba.conf`.
For local database:
@ -148,7 +169,7 @@ Note: All steps below requires that the database engine of your choice is instal
Restart PostgreSQL to apply new authentication rules.
7. On your Forgejo server, test connection to the database.
8. Optional: Test connection to the database from the Forgejo container.
For local database:

View file

@ -1,7 +1,7 @@
---
title: 'Email setup'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/email-setup.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/email-setup.en-us.md'
---
Forgejo can be set to send emails such as a registration confirmation, either with [Sendmail](https://man7.org/linux/man-pages/man8/sendmail.8.html) (or compatible MTAs like Postfix and msmtp) or by connecting to an SMTP server.

View file

@ -1,7 +1,7 @@
---
title: 'Incoming Email'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/incoming-email.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/incoming-email.en-us.md'
---
Forgejo supports the execution of several actions through incoming mails. This page describes how to set this up.

View file

@ -9,7 +9,7 @@ These documents are targeted to people who run Forgejo on their machines.
- [Introduction](./installation/)
- [With Docker](./installation-docker/)
- [From binary](./installation-binary/)
- [Database Preparation](./database-preparation/)
- [Database Preparation](./database-preparation/)
- [Configuration Cheat Sheet](./config-cheat-sheet/)
- [Storage settings](./storage/)
- [Upgrade guide](./upgrade/)

View file

@ -4,35 +4,41 @@ license: 'CC-BY-SA-4.0'
origin_url: 'https://github.com/DanielGibson/DanielGibson.github.io/blob/58362695f743a545d2530508ce42d5fe1eea84a9/content/post/setup-vps-with-wireguard-and-forgejo.md'
---
## Install Forgejo and git, create git user
## Install Forgejo and Git, create git user
> **NOTE:** this guide assumes that you'll host on the server with the domain git.example.com.
> **NOTE:** this guide uses git.example.com and x.y.z for illustrative purpose.
> Replace with your domain and the used Forgejo version as appropriate.
First, download the Forgejo binary for your CPU architecture and maybe verify the GPG signature,
First, download the Forgejo binary for your CPU architecture and verify the GPG signature,
as described on [the Forgejo download page](/download/).
Next, copy the downloaded Forgejo binary to `/usr/local/bin/` (renaming it to just "forgejo")
Next, copy the downloaded Forgejo binary to `/usr/local/bin/` (renaming it to "forgejo")
and make it executable:
> **NOTE:** when a line starts with #, it means the command 'foo --bar' must be run as root (or with sudo).
`# cp forgejo-7.0.0-linux-amd64 /usr/local/bin/forgejo`
`# chmod 755 /usr/local/bin/forgejo`
```
# cp forgejo-x.y.z-linux-amd64 /usr/local/bin/forgejo
# chmod 755 /usr/local/bin/forgejo
```
Make sure `git` and `git-lfs` are installed:
`# apt install git git-lfs`
Make sure `git` and `git-lfs` are installed on your system. On Debian GNU/Linux you can use:
Create a user `git` on the system. Forgejo will run as that user, and when accessing git through ssh
```
# apt install git git-lfs
```
Create a user `git` on the system. Forgejo will run as that user, and when accessing git through SSH
(which is the default), this user is part of the URL _(for example in
`git clone git@git.example.com:YourOrg/YourRepo.git` the `git` before the `@` is the user you'll create now)._
On **Debian, Ubuntu** and their derivates that's done with:
On **Debian, Ubuntu** and their derivatives that's done with:
```
# adduser --system --shell /bin/bash --gecos 'Git Version Control' \
--group --disabled-password --home /home/git git
--group --disabled-password --home /home/git git
```
On **Linux distributions not based on Debian/Ubuntu** (this should at least work with Red Hat derivates
On **Linux distributions not based on Debian/Ubuntu** (this should at least work with Red Hat derivatives
like Fedora, CentOS etc.), run this instead:
```
@ -44,32 +50,32 @@ like Fedora, CentOS etc.), run this instead:
## Create directories Forgejo will use
Now create the directories Forgejo will use and set access rights appropriately:
Now create the directories Forgejo will use and set access permissions appropriately:
```
# mkdir /var/lib/forgejo
# chown git:git /var/lib/forgejo && chmod 750 /var/lib/forgejo
```
This is the directory Forgejo will store its data in, including your git repos.
This is the directory Forgejo will store its data in, including your Git repositories.
```
# mkdir /etc/forgejo
# chown root:git /etc/forgejo && chmod 770 /etc/forgejo
```
This is the directory Forgejo's config, called `app.ini`, is stored in. Initially it needs to
be writable by Forgejo, but after the installation you can make it read-only for Forgejo because
This is the directory Forgejo's config, called `app.ini`, is stored in. **Initially it needs to
be writable by Forgejo**, but after the installation you can make it read-only for Forgejo because
then it shouldn't modify it anymore.
## Optional: Set up database
When using sqlite as Forgejos database, nothing needs to be done here.
When using sqlite as Forgejo's database, nothing needs to be done here.
If you need a more powerful database, you can use MySQL/MariaDB or PostgreSQL (apparently sqlite
is good enough for at least 10 users, but might even suffice for more).
See [Forgejos Database Preparation guide](../database-preparation/) for
See [Forgejo's Database Preparation guide](../database-preparation/) for
setup instructions.
## Install systemd service for Forgejo
@ -87,16 +93,20 @@ Now enable and start the Forgejo service, so you can go on with the installation
`# systemctl enable forgejo.service`
`# systemctl start forgejo.service`
## Forgejos web-based configuration
## Forgejo's web-based configuration
You should now be able to access Forgejo in your local web browser, so open http://git.example.com:3000/.
If it doesn't work:
- Make sure the forgejo service started successfully by checking the output of
`# systemctl status forgejo.service`
- Make sure the forgejo service started successfully by checking the output of:
```
# systemctl status forgejo.service
```
If that indicates an error but the log lines underneath are too incomplete to tell what caused it,
`# journalctl -n 100 --unit forgejo.service`
```
# journalctl -n 100 --unit forgejo.service
```
will print the last 100 lines logged by Forgejo.
You should be greeted by Forgejo's "Initial Configuration" screen.
@ -105,7 +115,7 @@ The settings should be mostly self-explanatory, some hints:
- Select the correct database (SQLite3, or if you configured something else in the
"Set up database" step above, select that and set the corresponding options)
- **Server Domain** should be `git.example.com` (or whatever you're actually using),
**Forgejo Base URL** should be `http://git.example.com:3000` (assuming you won't change HTTP_PORT a different value than 3000)
**Forgejo Base URL** should be `http://git.example.com:3000` (assuming you won't change `HTTP_PORT` to a different value than 3000)
- Check the **Server and Third-Party Service Settings** settings for settings that look relevant
for you.
- It may make sense to create the administrator account right now (**Administrator Account Settings**),
@ -116,16 +126,22 @@ Once you're done configuring, click `Install Forgejo` and a few seconds later yo
on the dashboard (if you created an administrator account) or at the login/register screen, where you
can create an account to then get to the dashboard.
So far, so good, but we're not quite done yet - some manual configuration in the app.ini is needed.
So far, so good, but we're not quite done yet - some manual configuration in the `app.ini` is needed.
## Further configuration in Forgejo's app.ini
Stop the forgejo service:
`# systemctl stop forgejo.service`
```
# systemctl stop forgejo.service
```
While at it, make `/etc/forgejo/` and the `app.ini` read-only for the git user (Forgejo doesn't
write to it after the initial configuration):
`# chmod 750 /etc/forgejo && chmod 640 /etc/forgejo/app.ini`
```
# chmod 750 /etc/forgejo && chmod 640 /etc/forgejo/app.ini
```
Now (as root) edit `/etc/forgejo/app.ini`
@ -136,7 +152,7 @@ Now (as root) edit `/etc/forgejo/app.ini`
The following changes are recommended if dealing with many large files:
- Forgejo allows uploading files to git repos through the web interface.
- Forgejo allows uploading files to Git repositories through the web interface.
By default the **file size for uploads**
is limited to 3MB per file, and 5 files at once. To increase it, under the `[repository]` section,
add a `[repository.upload]` section with a line like `FILE_MAX_SIZE = 4095`
@ -159,7 +175,7 @@ The following changes are recommended if dealing with many large files:
...
```
Similar restrictions restrictions exist for attachments to issues/pull requests, configured
Similar restrictions exist for attachments to issues/pull requests, configured
in the [`[attachment]` sections](../config-cheat-sheet/#issue-and-pull-request-attachments-attachment)
`MAX_SIZE` (default 4MB) and `MAX_FILES` (default 5) settings.
@ -196,14 +212,17 @@ The following changes are recommended if dealing with many large files:
PROTOCOL = sendmail
FROM = "Forgejo Git" <noreply@yourdomain.com>
```
- By default Forgejo will listen to the port 3000 but that can be [changed to 80 with HTTP_PORT](../config-cheat-sheet/) like this:
- By default Forgejo will listen to the port 3000 but that can be [changed to 80 with `HTTP_PORT`](../config-cheat-sheet/) like this:
```ini
[server]
HTTP_PORT = 80
```
When you're done editing the app.ini, save it and start the forgejo service again:
`# systemctl start forgejo.service`
```
# systemctl start forgejo.service
```
You can test sending a mail by clicking the user button on the upper right of the Forgejo page
("Profile and Settings"), then `Site Administration`, then `Configuration` and under
@ -215,15 +234,23 @@ Sometimes you may want/need to use the Forgejo
[command line interface](../command-line/).
Keep in mind that:
- You need to **run it as `git` user**, for example with `$ sudo -u git forgejo command --argument`
- You need to **run it as the `git` user**, for example with:
```
$ sudo -u git forgejo command --argument
```
- You need to specify the **Forgejo work path**, either with the `--work-path /var/lib/forgejo`
(or `-w /var/lib/forgejo`) commandline option or by setting the `FORGEJO_WORK_DIR` environment variable
(`$ export FORGEJO_WORK_DIR=/var/lib/forgejo`) before calling `forgejo`
(or `-w /var/lib/forgejo`) commandline option or by setting the `FORGEJO_WORK_DIR` environment variable before calling `forgejo`:
```
$ export FORGEJO_WORK_DIR=/var/lib/forgejo
```
- You need to specify the path to the config (app.ini) with `--config /etc/forgejo/app.ini`
(or `-c /etc/forgejo/app.ini`).
So all in all your command might look like:
`$ sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user list`
```
$ sudo -u git forgejo -w /var/lib/forgejo -c /etc/forgejo/app.ini admin user list
```
> **_For convenience_**, you could create a `/usr/local/bin/forgejo.sh` with the following contents:
>
@ -233,13 +260,22 @@ So all in all your command might look like:
> ```
>
> and make it executable:
> `# chmod 755 /usr/local/bin/forgejo.sh`
>
> ```
> # chmod 755 /usr/local/bin/forgejo.sh
> ```
>
> Now if you want to call `forgejo` on the commandline (for the default system-wide installation
> in `/var/lib/forgejo`), just use e.g. `$ forgejo.sh admin user list` instead of the long
> line shown above.
> in `/var/lib/forgejo`), instead of the long line shown above, use:
>
> ```
> $ forgejo.sh admin user list
> ```
You can always call forgejo and its subcommands with `-h` or `--help` to make it output usage
information like available options and (sub)commands, for example
`$ forgejo admin user -h`
to show available subcommands to administrate users on the commandline.
information like available options and (sub)commands, for example to show available subcommands
to administrate users on the commandline:
```
$ forgejo admin user -h
```

View file

@ -6,12 +6,12 @@ license: 'CC-BY-SA-4.0'
Forgejo provides [container images](https://codeberg.org/forgejo/-/packages/container/forgejo/versions) for use with Docker or other containerization tools.
```shell
docker pull codeberg.org/forgejo/forgejo:7.0.0
docker pull codeberg.org/forgejo/forgejo:7.0.3
```
If `codeberg.org` can not be accessed you can replace every mention of `codeberg.org` with `code.forgejo.org` to use our mirror.
The **7** tag is set to be the latest minor release, starting with **7.0.0**. The **7** tag will then be equal to **7.0.0** when it is released and so on.
The **7** tag is set to be the latest minor release, starting with **7.0.3**. The **7** tag will then be equal to **7.0.3** when it is released and so on.
Upgrading from **X** to **X+1** (for instance from **7** to **8**) requires a [manual operation and human verification](../upgrade/). However it is possible to use the **X** tag (for instance **7**) to get the latest minor release automatically.
@ -67,89 +67,7 @@ ENABLE_PUSH_CREATE_USER = true
> **NOTE:** it is not possible to use environment variables to remove an existing value, it must be done by editing the `app.ini` file.
> **NOTE:** in case you are in a selinux environment check the audit logs if you are having issues with containers.
## Rootless
Forgejo also supports a rootless Docker image.
With this image, the Docker container can run as an unprivileged user, which means that an attacker will not have root privileges on the server even when they gain access to the container.
This configuration is slightly more involved because we need to prepare our data folders.
To do so, we create a `data` folder with permissions for the user with `UID` and `GID` 1000.
This is the user which should **not** have root privileges.
```sh
#!/usr/bin/env bash
set -e
mkdir -p work
mkdir -p work/data
chown -R 1000:1000 work/data
chmod 775 work/data
chmod g+s work/data
```
```yaml
version: '3'
networks:
forgejo:
external: false
services:
gitea:
image: 'codeberg.org/forgejo/forgejo:1.21-rootless'
container_name: 'forgejo'
environment:
USER_UID: '1000'
USER_GID: '1000'
FORGEJO_WORK_DIR: '/var/lib/forge'
user: '1000:1000'
networks:
- forgejo
ports:
- '3000:3000'
- '222:22'
volumes:
- ./forgejo:/data:rw'
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
# Right side of this mount depends on the `FORGEJO_WORK_DIR` var above.
- ./work:/var/lib/forge:rw
logging:
driver: 'json-file'
options:
max-size: '10m'
max-file: '10'
restart: 'unless-stopped'
```
To also mount a locally defined `app.ini`, add
```yaml
- ./app.ini:/etc/gitea/app.ini
```
to `volumes`.
Next, run this with
```sh
docker compose up
```
To, for example, add an admin user from the command line, use:
```sh
docker exec -ti forgejo /bin/bash
```
and
```sh
forgejo admin user create --username <USERNAME> --password <PASSWORD> --email <EMAIL> --admin
```
> **NOTE:** in case you are in a SELinux environment check the audit logs if you are having issues with containers.
## Databases
@ -266,7 +184,7 @@ An important assumption for the Forgejo image to make is to own the folders it w
and reads from. This is naturally an issue since file-system permissions are a machine-local
concept and don't translate over the network easily.
We assume that a server with the hostname `server` is accessible which has a folder `/respositories`
We assume that a server with the hostname `server` is accessible which has a folder `/repositories`
shared via NFS. Append an entry to your `/etc/exports` like
```shell
@ -286,7 +204,7 @@ Four aspects to consider:
Effectively we are now able to write and create files and folders on the remote share. With the `all_squash` setting, we map
all users to one user, hence all data writable by one user is writable by all users, implying all files have a `drwxrwxrwx`
setting (abreviated "`0777` permissions"). We can also "fake-own" data, since all `chown` calls are now mapped to the anonymous user. This is an
setting (abbreviated "`0777` permissions"). We can also "fake-own" data, since all `chown` calls are now mapped to the anonymous user. This is an
important behaviour.
We now mount this folder on the `client` which will host Forgejo to a folder `/mnt/repositories`...
@ -319,9 +237,8 @@ services:
- image: codeberg.org/forgejo/forgejo:7
+ image: codeberg.org/forgejo/forgejo:7-rootless
container_name: forgejo
environment:
+ - USER_UID=1024
+ - USER_GID=100
+ user: "1024:100"
- environment:
- - USER_UID=1000
- - USER_GID=1000
@ -330,7 +247,7 @@ services:
- forgejo
volumes:
- - ./forgejo:/data
+ - /mnt/repositories/data:/data
+ - /mnt/repositories/data:/var/lib/gitea
+ - /mnt/repositories/conf:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
@ -340,7 +257,7 @@ services:
```
This will write the configuration into our created `conf` folder and all other data into the `data` folder.
Make sure that `USER_UID` and `USER_GID` match the `anonuid` and `anongid` setting
Make sure that `1024` and `100` match the `anonuid` and `anongid` setting
in the NFS server setting here such that the Forgejo user sees files and folders with the same UID and GID
in the respective folders and thus identifies itself as the sole owner of the folder structure.

View file

@ -1,7 +1,7 @@
---
title: 'Logging Configuration'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/logging-config.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/logging-config.en-us.md'
---
The logging configuration of Forgejo mainly consists of 3 types of components:

View file

@ -7,7 +7,7 @@ Moderation tools are meant to help the Forgejo users and admins cope
with spam bots and undesirable interactions.
`[admin].SEND_NOTIFICATION_EMAIL_ON_NEW_USER` can be set to `true` on
small Fogejo instances with an open registration. Such instances are
small Forgejo instances with an open registration. Such instances are
subject to occasional spam bots registrations and saves the admin the
trouble to check on a regular basis. Read more in the [config cheat
sheet](../config-cheat-sheet/#security-security).

View file

@ -3,13 +3,9 @@ title: 'OAuth2 provider'
license: 'CC-BY-SA-4.0'
---
Forgejo can act as an instance wide OAuth2 provider. To achieve that, OAuth2 applications must be created in the `/admin/applications` page.
> **NOTE:** Third party applications obtaining a token for a user via such an application will have administrative rights. OAuth2 scopes are not yet implemented.
## Pre-registered applications
The following OAuth2 applications are pre-registered beause it is generally useful for Forgejo to be an OAuth2 provider for the corresponding third party software. Their usage is explained in the [Forgejo user guide](../../user/oauth2-provider/).
The following OAuth2 applications are pre-registered because it is generally useful for Forgejo to be an OAuth2 provider for the corresponding third party software. Their usage is explained in the [Forgejo user guide](../../user/oauth2-provider/).
- **git-credential-manager** is the name of the OAuth2 application for the [Git Credential Manager](https://github.com/git-ecosystem/git-credential-manager) (a Git [credential helper](https://git-scm.com/docs/gitcredentials#_custom_helpers))
- **git-credential-oauth** is the name of the OAuth2 application for the [git-credential-oauth](https://github.com/hickford/git-credential-oauth) (a Git [credential helper](https://git-scm.com/docs/gitcredentials#_custom_helpers))

View file

@ -42,6 +42,13 @@ If your instance does not see much activity, it is recommended to change this va
If your instance sees a lot of activity, it is recommended to change this value to **redis** or **memcache**. In that case, caching is outsourced to third-party software designed to cache items. Keep in mind that you will probably also need to modify `[cache].HOST` to configure the use of this software.
The **redis** adapter should support most software that works with a limited subset of the [Redis Go Client](https://github.com/redis/go-redis) APIs. In particular, Forgejo has integration tests against:
- [Redis](https://redis.io/) v7.2; higher versions will not be officially supported due to licensing concerns,
- [Redict](https://redict.io/), a fork of Redis v7.2 licensed under the Lesser GNU General Public license (`LGPL-3.0-only`),
- [Valkey](https://valkey.io/), a fork of Redis v7.2 stewarded by the Linux Foundation, and
- [Garnet](https://microsoft.github.io/garnet), an independently implemented cache-store using [Redis's RESP](https://redis.io/docs/latest/develop/reference/protocol-spec/).
### `[repository.signing].DEFAULT_TRUST_MODEL`
When Forgejo needs to verify a GPG or SSH signed commit on a repository, it checks who it can trust to have a verified commit on that repository. The default value for this setting is that Forgejo trusts only contributors to that repository to have signed commits, this can cause unexpected behavior for those used to GitHub when hosting repositories that anyone can contribute to, because non-collaborators with signed commits on that repository are shown as unverified.
@ -50,7 +57,7 @@ If your instance expects users to contribute to other repositories within your i
### `[security].LOGIN_REMEMBER_DAYS`
When a user logs in with the remember option enabled, they receive a long-term authentication cookie that is remembered for a number of days, determined by this setting. The default setting is seven days, which is much less than other major services and can be frustrating for the user to log in every week.
When a user logs in with the remember option enabled, they receive a long-term authentication cookie that is remembered for a number of days, determined by this setting. The default value is one month, which may be less than other services and could be frustrating for the user to log in every month.
If your instance does not need to adhere to a security policy that mandates a different value, it is recommended that you change this value to **365**. In that case, the long-term authentication cookie will be stored on the user's device for one year.
@ -78,4 +85,4 @@ AcceptEnv GIT_PROTOCOL
### Database performance
When trying to undertand poor database performance in conjunction with Forgejo, it is useful to set `[database].SLOW_QUERY_THRESHOLD` to a value lower than the default (5 seconds). This ensures that SQL queries that are slow, but not too slow to meet the default value, are logged and can provide insight into what kind of SQL queries are slow, moreover, this is useful information for Forgejo contributors to find the code where this SQL query is executed and understand the context.
When trying to understand poor database performance in conjunction with Forgejo, it is useful to set `[database].SLOW_QUERY_THRESHOLD` to a value lower than the default (5 seconds). This ensures that SQL queries that are slow, but not too slow to meet the default value, are logged and can provide insight into what kind of SQL queries are slow, moreover, this is useful information for Forgejo contributors to find the code where this SQL query is executed and understand the context.

View file

@ -1,9 +1,242 @@
---
title: 'Reverse proxy'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/authentication.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/authentication.en-us.md'
---
Forgejo can live standalone, or behind a [reverse proxy](https://en.wikipedia.org/wiki/Reverse_proxy).
You may want this for scenarios like:
- Subpath mapping.
If you want Forgejo at something like `https://example.com/code/` or `https://example.com/repositories/` instead of the default `https://example.com`.
- Port mapping.
If you want to run Forgejo on the standard port, and that port is already taken by another web server.
I.e. as `https://example.com` instead of as `https://example.com:3000`.
- Proxy authentication.
Using an external login service.
_Forgejo usually does not need a proxy for this, as it can be configured to talk to many login services directly._
Forgejo does not need the help of a proxy to do HTTPS, it can do it directly.
Set in `SERVER` section of the configuration `PROTOCOL=https` and either set `CERT_FILE` and `KEY_FILE` or let Forgejo manage the certificates with `ENABLE_ACME=true`
## nginx
### Basic HTTP
To set up a basic HTTP reverse proxy in nginx, create a file `forgejo.conf` in `/etc/nginx/conf.d` and add the following configuration:
```nginx
server {
listen 80; # Listen on IPv4 port 80
listen [::]:80; # Listen on IPv6 port 80
server_name git.example.com; # Change this to the server domain name.
location / {
proxy_pass http://127.0.0.1:3000; # Port 3000 is the default Forgejo port
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 512M;
}
}
```
Make sure to reload/restart nginx after changing the configuration.
### HTTP with a subpath
If you want to serve Forgejo on a subpath, e.g. on `http://example.com/code`, use the following configuration:
```nginx
server {
listen 80; # Listen on IPv4 port 80
listen [::]:80; # Listen on IPv6 port 80
server_name example.com; # Change this to the server domain name.
location /code/ { # Replace /code here with your subpath
rewrite ^ $request_uri;
rewrite ^/code(/.*) $1 break;
return 400;
proxy_pass http://127.0.0.1:3000$uri;
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 512M;
}
}
```
Make sure to set the Forgejo `ROOT_URL` configuration key to the URL _with_ the subpath, otherwise links generated by Forgejo will be broken.
### HTTPS
When using a reverse proxy, it's usually easier to let the proxy handle HTTPS. It's easy to set up HTTPS on nginx.
#### HTTPS with Certbot
To set up HTTPS with Certbot, first set up an HTTP reverse proxy with the configuration above and ensure that it works as expected. To use HTTPS you need to have a domain name.
Then, install [certbot](https://certbot.eff.org/). When running certbot, select the domain name that your Forgejo instance is hosted under, and choose automatic installation. This should automatically set up HTTPS on port 443 and a redirect on the old port 80.
You may wish to change the `ROOT_URL` configuration key to the HTTPS protocol so links generated by Forgejo automatically use HTTPS.
#### HTTPS with manually installed certificates
If you have obtained certificates from elsewhere or have chosen not to let certbot automatically install them, make the following changes to the configuration file:
**Change the listening ports**
Change the lines
```nginx
listen 80;
listen [::]:80;
```
to
```nginx
listen 443 ssl http2;
listen [::]:443 ssl http2;
```
**Add the SSL certificate information**
Generate an SSL configuration at [mozilla](https://ssl-config.mozilla.org/#server=nginx), and add the SSL parameters to your configuration file. Make sure to replace the paths in the example with paths to your certificate files.
**Add a redirect from HTTP**
Outside the server block, add this redirection block:
```nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
return 301 https://$host$request_uri;
}
}
```
This will redirect anyone visiting the HTTP site to the HTTPS site.
## Apache
### Basic HTTP
To set up a basic HTTP proxy in Apache, create a file `100-forgejo.conf` in `/etc/apache2/sites-available` and add the following configuration:
```apache
<VirtualHost *:80>
ServerName git.example.com
ProxyPreserveHost On
ProxyRequests off
AllowEncodedSlashes NoDecode
ProxyPass / http://127.0.0.1:3000/ nocanon
</VirtualHost>
```
Next, enable the site with `a2ensite 100-forgejo.conf` and enable the proxy modules with `a2enmod proxy proxy_http`. Finally, restart the apache server.
### HTTP with a subpath
If you want to serve Forgejo on a subpath, e.g. on `http://example.com/code`, use the following configuration:
```apache
<VirtualHost *:80>
ServerName example.com
ProxyPreserveHost On
ProxyRequests off
AllowEncodedSlashes NoDecode
ProxyPass /code http://127.0.0.1:3000/ nocanon # Change /code here to your desired subpath.
</VirtualHost>
```
Make sure to set the Forgejo `ROOT_URL` configuration key to the URL _with_ the subpath, otherwise links generated by Forgejo will be broken.
### HTTPS
When using a reverse proxy, it's usually easier to let the proxy handle HTTPS. It's easy to set up HTTPS on apache.
#### HTTPS with Certbot
To set up HTTPS with Certbot, first set up an HTTP reverse proxy with the configuration above and ensure that it works as expected. To use HTTPS you need to have a domain name.
Then, install [certbot](https://certbot.eff.org/). When running certbot, select the domain name that your Forgejo instance is hosted under, and choose automatic installation. This should automatically set up HTTPS on port 443 and a redirect on the old port 80.
You may wish to change the `ROOT_URL` configuration key to the HTTPS protocol so links generated by Forgejo automatically use HTTPS.
#### HTTPS with manually installed certificates
If you have obtained certificates from elsewhere or have chosen not to let certbot automatically install them, make the following changes to the configuration file:
**Change the listening ports**
Change `<VirtualHost *:80>` to `<VirtualHost *:443>`.
**Add the SSL certificate information**
Generate an SSL configuration at [mozilla](https://ssl-config.mozilla.org/#server=apache), and add the SSL parameters to your configuration file. Make sure to replace the paths in the example with paths to your certificate files.
**Add a redirect from HTTP**
Outside the `VirtualHost *:443`, add this configuration:
```apache
<VirtualHost *:80>
ServerName git.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =git.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
```
This will redirect anyone visiting the HTTP site to the HTTPS site.
## Caddy
### HTTPS
To set up basic HTTPS proxy in Caddy with Caddyfile create a file `forgejo` in `/etc/caddy/conf.d` and add the following configuration:
```Caddyfile
git.example.com {
reverse_proxy 127.0.0.1:3000
}
```
Caddy will automatically get certificates for the domain.
### HTTPS with a subpath
If you want to serve Forgejo on a subpath, e.g. on https://example.com/code, use the following configuration:
```Caddyfile
example.com {
reverse_proxy /code* 127.0.0.1:3000
}
```
Make sure to set the Forgejo ROOT_URL configuration key to the URL with the subpath, otherwise links generated by Forgejo will be broken.
## Proxy Authentication
Forgejo supports Reverse Proxy Header authentication, it will read headers as a trusted login user name or user email address. This hasn't been enabled by default, you can enable it with
```ini
@ -24,5 +257,5 @@ Notice: Reverse Proxy Auth doesn't support the API. You still need an access tok
## Docker / Container Registry
The container registry uses a fixed sub-path `/v2` which can't be changed.
Even if you deploy Gitea with a different sub-path, `/v2` will be used by the `docker` client.
Even if you deploy Forgejo with a different sub-path, `/v2` will be used by the `docker` client.
Therefore you may need to add an additional route to your reverse proxy configuration.

View file

@ -1,7 +1,7 @@
---
title: 'Search Engines Indexation'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/search-engines-indexation.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/search-engines-indexation.en-us.md'
---
## Search engines indexation of your Forgejo installation

View file

@ -1,7 +1,7 @@
---
title: 'Seek Assistance'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/help/seek-help.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/help/support.en-us.md'
---
- [Chatroom](https://matrix.to/#/#forgejo-chat:matrix.org)
@ -36,7 +36,7 @@ origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb7
3. Any error messages you are seeing.
4. If you meet slow/hanging/deadlock problems, please report the stack trace when the problem occurs:
1. Enable pprof in `app.ini` and restart Forgejo
1. Enable pprof in `app.ini` and restart Forgejo.
```ini
[server]
@ -45,4 +45,4 @@ origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb7
2. Trigger the bug, when Forgejo gets stuck, use curl or browser to visit: `http://127.0.0.1:6060/debug/pprof/goroutine?debug=1` (IP must be `127.0.0.1` and port must be `6060`).
3. If you are using Docker, please use `docker exec -it <container-name> curl "http://127.0.0.1:6060/debug/pprof/goroutine?debug=1"`.
4. Report the output (the stack trace doesn't contain sensitive data)
4. Report the output (the stack trace doesn't contain sensitive data).

View file

@ -1,7 +1,7 @@
---
title: 'GPG Commit Signatures'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/signing.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/signing.en-us.md'
---
Forgejo will verify GPG commit signatures in the provided tree by
@ -54,7 +54,7 @@ There are three main options:
- `none` - this prevents Forgejo from signing any commits
- `default` - Forgejo will default to the key configured within `git config`
- `KEYID` - Forgejo will sign commits with the gpg key with the ID
- `KEYID` - Forgejo 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.
@ -120,7 +120,7 @@ The possible options are:
- `never`: Never sign
- `pubkey`: Only sign if the user has a public key
- `twofa`: Only sign if the user logs in with two-factor authentication
- `basesigned`: Only sign if the parent commit in the base repo is signed.
- `basesigned`: Only sign if the parent commit in the base repository is signed.
- `headsigned`: Only sign if the head commit in the head branch is signed.
- `commitssigned`: Only sign if all the commits in the head branch to the merge point are signed.
- `approved`: Only sign approved merges to a protected branch.

View file

@ -84,6 +84,22 @@ the `forgejo` bucket, LFS to `lfs/` in the `forgejo` bucket etc.
> **NOTE:** `MINIO_BASE_PATH` must not be set in the `[storage]` section.
The configuration option `MINIO_USE_SSL` defaults to `false` to maintain compatibility with locally hosted MinIO instances. If an external S3 provider is intended to be used, this option should be set to `true`.
For instance, assuming a MinIO instance at `https://minio.example.com`:
```
[storage]
STORAGE_TYPE = minio
MINIO_USE_SSL = true
MINIO_ENDPOINT = minio.example.com
MINIO_ACCESS_KEY_ID = [redacted]
MINIO_SECRET_ACCESS_KEY = [redacted]
MINIO_BUCKET = bucket
MINIO_LOCATION = us-east-1
```
## Storage settings for a single subsystem
It is possible to configure some subsystems to use S3 storage and others to use local
@ -166,6 +182,7 @@ connect to a S3 compatible server:
- `MINIO_LOCATION`: **us-east-1**: S3 location to create bucket.
- `MINIO_USE_SSL`: **false**: S3 enabled ssl.
- `MINIO_INSECURE_SKIP_VERIFY`: **false**: S3 skip SSL verification.
- `MINIO_CHECKSUM_ALGORITHM`: Minio checksum algorithm: **default** (for MinIO, garage or AWS S3) or **md5** (for Cloudflare or Backblaze)
When used in the `[storage]` section they apply to all
subsystems. When used in the section specific to a subsystem (see the table in the introduction), they
@ -184,6 +201,7 @@ MINIO_BUCKET_LOOKUP = auto
MINIO_LOCATION = us-east-1
MINIO_USE_SSL = false
MINIO_INSECURE_SKIP_VERIFY = false
MINIO_CHECKSUM_ALGORITHM = md5
[lfs]
STORAGE_TYPE = minio
@ -218,7 +236,7 @@ within the `forgejo` bucket instead of the `lfs/` directory
Although the S3 storage type is named `minio` it does not rely on any
[MinIO](https://min.io/) specific features. The S3 storage type is
[tested](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/upgrades/test-upgrade.sh) to be compatible with:
[tested](https://code.forgejo.org/forgejo/end-to-end/src/commit/9cfd043b8af18ce0df48fa6e44772d9bd521cab4/storage/storage.sh) to be compatible with:
- [MinIO](https://min.io/) 2021.3.17 and 2023-08-23
- [garage](https://garagehq.deuxfleurs.fr/) v0.8.2

View file

@ -17,7 +17,7 @@ To be notified in advance of security releases, watch or subscribe to the RSS fe
## Semantic version compliance
Forgejo is compliant with [semantic versioning](https://semver.org/spec/v2.0.0.html) as of 7.0.0. In a nutshell it means that there is no breaking change unless the first number changes (e.g. when 8.0.0 is published it will contain breaking changes compared to 7.0.0). The release notes document those breaking changes and theey may require manual intervention depending on the Forgejo installation.
Forgejo is compliant with [semantic versioning](https://semver.org/spec/v2.0.0.html) as of 7.0.0. In a nutshell it means that there is no breaking change unless the first number changes (e.g. when 8.0.0 is published it will contain breaking changes compared to 7.0.0). The release notes document those breaking changes and they may require manual intervention depending on the Forgejo installation.
In versions prior to 7.0.0, the releases 1.19, 1.20 and 1.21 all contained breaking changes and the versioning scheme was not compliant with semantic versioning.
@ -48,8 +48,7 @@ It is **critical** to verify that Forgejo works very carefully. Restoring the ba
- Manually analyze (reading the patches to the sources of the template directory) and update the customized CSS / content.
- Do not use `forgejo help` to figure out the location of `CustomPath`, look at the configuration tab of the `Site administration` panel when logged in as an admin.
- `forgejo manager flush-queues`. If it timesout, run it again with a more generous `--timeout` argument. It is important because the queues contain serialized data that is not guaranteed to be backward compatible between versions.
- Go to the `Site administration` panel and pause all queues
- `forgejo manager flush-queues`. If it times out, run it again with a more generous `--timeout` argument. It is important because the queues contain serialized data that is not guaranteed to be backward compatible between versions.
Note: Forgejo requires [docker >= 20.10.6](https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0) otherwise mysterious problems will happen (mysterious in the sense that the problem will about something unrelated to the Docker version").
@ -95,10 +94,16 @@ The database version is stored in the database and used to prevent an accidental
- Any version before [Gitea 1.17](https://github.com/go-gitea/gitea/releases/tag/v1.17.4)
- preserve a custom gitconfig: [episode 1](https://web.archive.org/web/20240313092747/https://gna.org/blog/1-17-breaking-episode-1/), [episode 2](https://web.archive.org/web/20240313092759/https://gna.org/blog/1-17-breaking-episode-2/)
- [Gitea 1.13.0](https://blog.gitea.io/2020/12/gitea-1.13.0-is-released/)
- The Webhook shared secret inside the webhook payload has been deprecated and will be removed in 1.14.0: https://github.com/go-gitea/gitea/issues/11755 please use the secret header that uses an hmac signature to validate the webhook payload.
- Git hooks now default to `off`! ([#13058](https://github.com/go-gitea/gitea/pull/13058))
In your config, you can check the security section for `DISABLE_GIT_HOOKS`. To enable them again, you must set the setting to `false`.
- From an instance originally installed with gogs, even if migrated later to Gitea or Forgejo because database columns are not automatically removed by migrations.
- Drop the `created` column from the `issue` table while Forgejo is not running. It will be re-created:
- SQLite `ALTER TABLE `issue`DROP`created``
- MySQL/MariaDB/PostgreSQL `ALTER TABLE `issue`DROP COLUMN`created``
### Only when upgrading to a specific version
- From [v1.19] to a version greater or equal to than [1.20](https://forgejo.org/2023-07-release-v1/)
@ -122,7 +127,7 @@ The database version is stored in the database and used to prevent an accidental
- Gogs from before September 2015 migrated to Forgejo v1.18 may have a [dangling `pull_repo` table](https://web.archive.org/web/20230207122019/https://forum.gna.org/t/gitea-upgrade-from-gogs-to-1-16-8-unmigrated-pull-repo-table/73) and the corresponding pull requests will be removed by `gitea doctor check --fix --all`.
[From the 1.11.3 release notes](https://blog.gitea.io/2020/03/gitea-1.11.3-and-1.10.6-released/):
[From the 1.11.3 release notes](https://blog.gitea.com/release-of-1.11.3/):
- v1.10.0, v1.10.1, v1.10.2, v1.10.3, v1.10.4, v1.11.0, and v1.11.1 **do not use** any of these versions, as a bug in the upgrade process will delete attachments from the releases on your repositories.
- v1.11.2 (now replaced by 1.11.3) was mistakenly compiled with Go 1.14, which Gitea is not currently fully tested with and its known to cause [a few issues](https://github.com/go-gitea/gitea/issues/10661).

View file

@ -9,4 +9,4 @@ The Forgejo [domains](https://codeberg.org/forgejo/meta/issues/41) are owned by
## Forgejo Governance
Forgejo was bootstraped in November 2022 and defines [its governance](https://codeberg.org/forgejo/governance/src/branch/main/README.md) in a [dedicated repository](https://codeberg.org/forgejo/governance).
Forgejo was bootstrapped in November 2022 and defines [its governance](https://codeberg.org/forgejo/governance/src/branch/main/README.md) in a [dedicated repository](https://codeberg.org/forgejo/governance).

View file

@ -7,18 +7,18 @@ license: 'CC-BY-SA-4.0'
Forgejo stable releases are published on a fixed schedule, every quarter.
| **Date** | **Version** | **Release date** | **End Of Life** |
| -------- | ---------------------- | ---------------- | ---------------- |
| 2024 Q1 | 7.0.0+LTS-gitea-1.22.0 | 23 April 2024 | **16 July 2025** |
| 2024 Q2 | X.Y.Z+gitea-A.B.C | 17 July 2024 | 16 October 2024 |
| 2024 Q3 | X.Y.Z+gitea-A.B.C | 16 October 2024 | 15 January 2025 |
| 2024 Q4 | X.Y.Z+gitea-A.B.C | 15 January 2025 | 16 April 2025 |
| 2025 Q1 | X.Y.Z+LTS-gitea-A.B.C | 16 April 2025 | **14 July 2026** |
| 2025 Q2 | X.Y.Z+gitea-A.B.C | 16 July 2025 | 15 October 2025 |
| 2025 Q3 | X.Y.Z+gitea-A.B.C | 15 October 2025 | 14 January 2026 |
| 2025 Q4 | X.Y.Z+gitea-A.B.C | 14 January 2026 | 15 April 2026 |
| 2026 Q1 | X.Y.Z+LTS-gitea-A.B.C | 15 April 2026 | **14 July 2027** |
| 2026 Q2 | X.Y.Z+gitea-A.B.C | 15 July 2026 | 14 October 2026 |
| **Date** | **Version** | **Feature freeze** | **Release date** | **End Of Life** |
| -------- | -------------------- | ------------------ | ---------------- | ---------------- |
| 2024 Q1 | 7.0+gitea-1.21 (LTS) | | 23 April 2024 | **16 July 2025** |
| 2024 Q2 | 8.0+gitea-1.22 | 1 July 2024 | 17 July 2024 | 16 October 2024 |
| 2024 Q3 | 9.0+gitea-A.B | 25 September 2024 | 16 October 2024 | 15 January 2025 |
| 2024 Q4 | X.Y+gitea-A.B | 25 December 2024 | 15 January 2025 | 16 April 2025 |
| 2025 Q1 | X.Y+gitea-A.B (LTS) | 26 March 2025 | 16 April 2025 | **14 July 2026** |
| 2025 Q2 | X.Y+gitea-A.B | 25 June 2025 | 16 July 2025 | 15 October 2025 |
| 2025 Q3 | X.Y+gitea-A.B | 24 September 2025 | 15 October 2025 | 14 January 2026 |
| 2025 Q4 | X.Y+gitea-A.B | 24 December 2025 | 14 January 2026 | 15 April 2026 |
| 2026 Q1 | X.Y+gitea-A.B (LTS) | 25 March 2026 | 15 April 2026 | **14 July 2027** |
| 2026 Q2 | X.Y+gitea-A.B | 24 June 2026 | 15 July 2026 | 14 October 2026 |
### Stable release support
@ -40,16 +40,13 @@ Experimental releases are published daily in [forgejo-experimental](https://code
The Forgejo release numbers are compliant with [Semantic Versioning](https://semver.org/). They are followed by the Gitea release number with which it is compatible. For instance:
- Forgejo **v7.1.0+gitea-1.22.0** is compatible with Gitea **v1.22.0**.
- Forgejo **v7.0.5+gitea-1.21.0** is compatible with Gitea **v1.21.0**.
Long term support releases have the `LTS` string in their metadata. For instance:
The release candidates are built of the stable branch and published with the **-test** suffix:
- Forgejo **v7.0.0+LTS-gitea-1.22.0** is a long term support release compatible with Gitea **v1.22.0**.
The release candidates are composed by adding the `-rc` suffix. For instance:
- Forgejo **v7.1.0-rc0+gitea-1.22.0**
- Forgejo **v7.1.0-rc1+gitea-1.22.0**
- Forgejo **v7.0-test**
- Forgejo **v8.0-test**
- Forgejo **v8.1-test**
- etc.
## Stable release process
@ -69,36 +66,11 @@ The TL;DR: to publish a vX.Y.Z release is to:
### Feature freeze
- Two weeks before the release date only bug fixes can be merged
- Three weeks before the release date only bug fixes can be merged
### Cutting a release
When a new `vX.Y.Z` release is ready to enter the release candidate stages:
- Verify in the Makefile that the variable GITEA_COMPATIBILITY is set to the right version.
- Create a new `vX.Y/forgejo` branch from the `forgejo` branch.
- Add a `backport/vX.Y` label in the [issue tracker](https://codeberg.org/forgejo/forgejo/issues).
- Set a `v(X+1).0.0-dev` tag on the forgejo branch and make sure it is at least one commit ahead of the `vX.Y/forgejo` branch so they do not conflict.
- Push the `v(X+1).0.0-dev` tag to the https://codeberg.org/forgejo/forgejo repository
- Push the `v(X+1).0.0-dev` tag to the https://codeberg.org/forgejo-integration/forgejo repository and cancel the build release job
- Add add a `vX.Y/forgejo` branch protection rule https://codeberg.org/forgejo/forgejo/settings/branches
- Trigger a mirror workflow in https://codeberg.org/forgejo/forgejo and verify the `X.Y-test` and `(X+1).0-test` releases are published in https://codeberg.org/forgejo-experimental
- Update end-to-end to [know about the new release](https://code.forgejo.org/forgejo/end-to-end/pulls/139). It must be done after the first `(X+1).0-test` release is available in experimental otherwise it will fail to find it and will block the automated release process in the forgejo-integration repository
### Release Notes
- Add an entry in RELEASE-NOTES.md
The dependencies where user visible changes should be harvested when they are upgraded are:
- [Alpine](https://www.alpinelinux.org/)
- [git](https://pkgs.alpinelinux.org/packages?name=git)
- [gnupg](https://pkgs.alpinelinux.org/packages?name=gnupg)
- [sqlite](https://pkgs.alpinelinux.org/packages?name=sqlite)
- [openssh](https://pkgs.alpinelinux.org/packages?name=openssh)
- [Gitea](https://github.com/go-gitea/gitea)
- [chroma](https://github.com/alecthomas/chroma/) - syntax highlight
- [go-enry](https://github.com/go-enry/go-enry) & [linguist](https://github.com/github-linguist/linguist) - language detection
Create a new issue based on the checklist of the previous release ([for instance v8.0.0](https://codeberg.org/forgejo/forgejo/issues/4153)).
### Forgejo release building and testing
@ -133,16 +105,50 @@ Reach out to packagers and users to manually verify the release works as expecte
It will trigger a workflow to:
- Push the vX.Y.Z tag to https://codeberg.org/forgejo/forgejo
- Downoad Binaries from https://codeberg.org/forgejo-experimental, sign them and copy them to https://codeberg.org/forgejo
- Download Binaries from https://codeberg.org/forgejo-experimental, sign them and copy them to https://codeberg.org/forgejo
- Copy container images from https://codeberg.org/forgejo-experimental to https://codeberg.org/forgejo
### Forgejo release mirror
### Website update
- Restart the last CI build at https://codeberg.org/forgejo/website/src/branch/main/
- Verify [https://forgejo.org/download/](/download/) points to the expected release
- Manually try the instructions to work
### DNS update
- Update the `release.forgejo.org` TXT record that starts with `forgejo_versions=` to be `forgejo_versions=vX.Y.Z`
## LTS toolchain upgrades
The Forgejo toolchain relies on Go OCI images based on
Alpine. Only the [last two Alpine versions are
supported](https://github.com/docker-library/golang/commit/cf7a37dedf1fd5a25ca72075645368d1e3c30c4a)
and will be EOL before the Forgejo LTS. In order to receive security
updates the toolchain needs to be upgraded to a supported Alpine and
Go version because it goes EOL.
## Automated experimental releases
The Forgejo development and stable branches are [pushed daily to the
forgejo-integration](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/workflows/mirror.yml).
It triggers the [release build
workflow](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/workflows/build-release.yml)
which creates a new release for each updated branch, based on their latest commit:
- the `forgejo` branch creates the `X.Y-test` release where `X.Y` is based on the most recent tag. For instance:
- the tag `v8.0.0-dev` will create the `8.0-test` release
- the tag `v8.1.0-dev` will create the `8.1-test` release
- the `v*/forgejo` branches create `X.Y-test` releases where `X.Y` is based on their name. For instance:
- the branch `v7.0/forgejo` will create the `7.0-test` release
- the branch `v7.1/forgejo` will create the `7.1-test` release
## Forgejo release mirror
The https://code.forgejo.org/forgejo/forgejo repository is a read-only
mirror [updated daily](https://code.forgejo.org/forgejo/forgejo/src/branch/main/.forgejo/workflows) with the release assets
and the branches from https://codeberg.org/forgejo/forgejo.
### Forgejo runner publication
## Forgejo runner publication
- Push the vX.Y.Z tag to https://code.forgejo.org/forgejo/runner
@ -150,8 +156,8 @@ The release is built on https://code.forgejo.org/forgejo-integration/runner, whi
The release is published on
https://forgejo.octopuce.forgejo.org/forgejo/runner, which is a mirror
of https://code.forgejo.org/forgejo-integration/runner. It is behind a
VPN and its role is to copy and sign release artifacts.
of https://code.forgejo.org/forgejo-integration/runner. It has no public IP
and its role is to copy and sign release artifacts.
- Binaries are downloaded from https://code.forgejo.org/forgejo-integration/runner, signed and copied to https://code.forgejo.org/forgejo/runner.
- Container images are copied from https://code.forgejo.org/forgejo-integration to https://code.forgejo.org/forgejo
@ -167,47 +173,14 @@ If publishing the release needs debug, it can be done manually:
It can also be done from the CLI with `forgejo-runner exec` and
providing the secrets from the command line.
### Securing the release token and cryptographic keys
For both the Forgejo runner and Forgejo itself, copying and signing the release artifacts (container images and binaries) happen on a Forgejo isntance running [behind a VPN](../infrastructure/#octopuce) to safeguard the token that has write access to the Forgejo repository as well as the cryptographic key used to sign the releases.
### Website update
- Restart the last CI build at https://codeberg.org/forgejo/website/src/branch/main/
- Verify [https://forgejo.org/download/](/download/) points to the expected release
- Manually try the instructions to work
### DNS update
- Update the `release.forgejo.org` TXT record that starts with `forgejo_versions=` to be `forgejo_versions=vX.Y.Z`
### Standard toot
The following toot can be re-used to announce a minor release at `https://floss.social/@forgejo`. For more significant releases it is best to consider a dedicated and non-standard toot.
```
#Forgejo vX.Y.Z was just released! This is a minor patch. Check out the release notes and download it at https://forgejo.org/releases/. If you experience any issues with this release, please report to https://codeberg.org/forgejo/forgejo/issues.
```
## Experimental releases
The Forgejo development and stable branches are [pushed daily to the
forgejo-integration](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/workflows/mirror.yml).
It triggers the [release build
workflow](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/workflows/build-release.yml)
which creates a new release for each updated branch, based on their latest commit:
- the `forgejo` branch creates the `X.Y-test` release where `X.Y` is based on the most recent tag. For instance:
- the tag `v8.0.0-dev` will create the `8.0-test` release
- the tag `v8.1.0-dev` will create the `8.1-test` release
- the `v*/forgejo` branches create `X.Y-test` releases where `X.Y` is based on their name. For instance:
- the branch `v7.0/forgejo` will create the `7.0-test` release
- the branch `v7.1/forgejo` will create the `7.1-test` release
## Release signing keys management
A GPG master key with no expiration date is created and shared with members of the Owners team via encrypted email. A subkey with a one year expiration date is created and stored in the secrets repository (`openpgp/20??-release-team.gpg`), to be used by the release pipeline. The public master key is stored in the secrets repository and published where relevant (keys.openpgp.org for instance).
### Securing the release token and cryptographic keys
For both the Forgejo runner and Forgejo itself, copying and signing the release artifacts (container images and binaries) happen on a Forgejo instance [not publicly accessible](../infrastructure/#octopuce) to safeguard the token that has write access to the Forgejo repository as well as the cryptographic key used to sign the releases.
### Master key creation
- gpg --expert --full-generate-key

View file

@ -1,7 +1,7 @@
---
title: 'Interface customization'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/administration/customizing-gitea.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/customizing-gitea.en-us.md'
---
This sections documents the Forgejo interface customization that requires an intimate knowledge of the underlying codebase. The user interface customization documented and supported for Forgejo admins to use [is found in the corresponding administrator guide section](../../admin/customization/).
@ -20,8 +20,10 @@ binary.
Application settings can be found in file `CustomConf` which is by default,
`$FORGEJO_CUSTOM/conf/app.ini` but may be different if your build has set this differently.
Again `forgejo help` will allow you review this variable and you can override it using the
`--config` option on the `forgejo` binary.
If you are having difficulty with finding the `CustomConf` directory, you can identify
the variable using `forgejo help` or in the logs. This variable can be overridden using
the `--config` option on the `forgejo` binary.
**Note:** Forgejo must perform a full restart to see configuration changes.

View file

@ -9,15 +9,87 @@ Forgejo relies on hundreds of Free Software components and they all need to be u
Software referenced by a release (even if such a release is the hash of a commit). They are listed in the [dependency dashboard](https://codeberg.org/forgejo/forgejo/issues/2779) which is updated by [renovate](https://github.com/renovatebot/renovate) from [the renovate.json configuration file](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/renovate.json).
Pull [requests are opened](https://codeberg.org/forgejo/forgejo/pulls?poster=165503) when an upgrade is available and the decision to merge (positive review) or not (request for change review) depends on what the upgrade offers.
## Decision to upgrade
An upgrade is justified if:
- it is beneficial to Forgejo
- the risk of regression is low compared to the benefit
There is no need to upgrade if there is no indication that it is beneficial to Forgejo.
## Reviewing renovate pull requests
Pull [requests are opened](https://codeberg.org/forgejo/forgejo/pulls?poster=165503) when an upgrade is available and the decision to merge (positive review) or not (request for change review) depends on what the upgrade offers. The history of past upgrades can be browsed by looking for PR with the same title (e.g. [happy-dom upgrades](https://codeberg.org/forgejo/forgejo/pulls?q=Update+dependency+happy-dom)).
- The PR contains information about the release. If it does not, it has detailed references that can be used to browse the commits in the dependency source repository and figure out what the changes are.
- The comment of the review:
- explains the decision (needed, not needed)
- explains why the change has an impact on Forgejo
- If the upgrade is needed, user visible changes must be included in the draft release notes for the upcoming release.
- If the upgrade is needed, user visible changes must be included in the draft release notes for the upcoming release. See [this upgrade for an example](https://codeberg.org/forgejo/forgejo/pulls/3724/files).
- Security fix and important bug fixes are backported to the stable releases.
- Set the dependency label
Note that renovate will keep a few (see `prConcurrentLimit` in [renovate.json](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/renovate.json)) pull request open at any given time. If no decision is made, newer upgrades will accumulate in the backlog visible in the [dashboard](https://codeberg.org/forgejo/forgejo/issues/2779).
The [release team](https://codeberg.org/forgejo/governance/src/branch/main/TEAMS.md#releases) looks after the pull requests, to the extent that they can be tested automatically. If manual testing is required (because there is no test coverage for the part of the code that would be impacted by an upgrade), a review will be requested from the people who have the required expertise to either improve the test coverage or come up with a manual test procedure to be repeated.
## Tuning a software upgrade
There is no uniformity in how software is released and they call for different strategies to deal with upgrades:
- **grouping related software**.
When the decision to upgrade applies to a number of related software, it is less noisy to have them all upgraded in a single PR rather than a number of individual PRs. Such dependencies can be grouped together.
- **using a renovate [group preset](https://docs.renovatebot.com/presets-group/):** e.g. `group:linters` include `eslint`, `eslint-plugin-array-func`, `eslint-plugin-github` etc. See also [an example PR](https://codeberg.org/forgejo/forgejo/pulls/3921).
- **creating a new group:**
```json
{
"description": "Group golang packages",
"matchDepNames": [
"go",
"golang",
"docker.io/golang",
"docker.io/library/golang"
],
"groupName": "golang packages"
},
```
- **release on every commit or so**.
There are usually no release notes and there is no notion of release ([monaco-editor](https://github.com/microsoft/monaco-editor/tags)) which may lead to frequent proposals to upgrade. It is similar to software that it tagged with a commit hash instead of a version, either because it does not publish versions ([go-ap](https://github.com/go-ap/activitypub)) or because a particular bug fix is needed before the release is available ([go-rpmutils](github.com/sassoftware/go-rpmutils)).
- control the upgrade frequency with `schedule` (e.g. `schedule:quarterly` for [pprof](https://github.com/google/pprof)).
- impose a delay with `minimumReleaseAge` (e.g. `monaco-editor` upgrades are considered no more frequently than once a month).
- require dashboard approval with `dependencyDashboardApproval` (e.g. `go-ap` upgrades will never be proposed unless manually required from the [dashboard](https://codeberg.org/forgejo/forgejo/issues/2779).
- **automerge CI dependencies**.
The dependencies that are exclusively used in the CI and demonstrated to work as expected when it passes can be merged automatically. They are listed in [renovate.json](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/renovate.json)) in the `Automerge some packages when CI succeeds` stanza as follows.
- **extends:** if the software is included in a known renovate package preset (e.g. ["packages:linters"](https://docs.renovatebot.com/presets-packages/#packageslinters)). Figuring out if that is the case requires looking at the output of a renovate run and analyzing the debug logs.
- **matchDepNames:** to explicitly list the dependency (e.g. `markdownlint-cli`).
- **matchPackagePrefixes:** if a range of CI related dependency happen to share the same prefix (e.g. `@playwright/`)
- **automerge patch releases**.
When a software is known to be good at publishing quality patch releases (in the [semver](https://semver.org/spec/v2.0.0.html) sense), the proposed upgrades can be merged automatically. This can be done in a way similar to `vue` in [renovate.json](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/renovate.json)).
```json
{
"matchDepNames": [
"vue"
],
"separateMinorPatch": true
},
{
"matchDepNames": ["vue"],
"matchUpdateTypes": ["patch"],
"automerge": true
},
```
# Soft forks

View file

@ -29,3 +29,85 @@ Do you know how to configure it properly? Why not document that here?
Vim has [a Go plugin](https://github.com/fatih/vim-go) that can likely be used to work on Forgejo's code base.
Do you know how to configure it properly? Why not document that here?
## Neovim
Here's a minimal example that configures `gopls` and `golangci_lint_ls` using
the `Lazy.nvim` plugin manager.
<details>
<summary>init.lua</summary>
```lua
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
"neovim/nvim-lspconfig",
{
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim",
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
cond = vim.fn.executable("make") == 1,
},
},
},
})
vim.g.mapleader = " "
vim.g.maplocalleader = " "
local on_attach = function(client, bufno)
-- depricated since neovim 0.10
-- vim.api.nvim_buf_set_option(bufno, "omnifunc", "v:lua.vim.lsp.omnifunc")
vim.api.nvim_set_option_value("omnifunc", "v:lua.vim.lsp.omnifunc", { buf = bufno })
local ts = require("telescope.builtin")
local opts = { buffer = bufno }
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float)
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, opts)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "gtd", vim.lsp.buf.type_definition, opts)
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
vim.keymap.set("n", "gu", ts.lsp_references, opts)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("n", "<leader>cl", vim.lsp.codelens.run, opts)
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, opts)
vim.keymap.set("n", "<leader>f", function()
vim.lsp.buf.format({ async = true })
end, opts)
end
local capabilities = vim.lsp.protocol.make_client_capabilities()
require("lspconfig")["gopls"].setup({
capabilities = capabilities,
settings = {},
on_attach = on_attach,
})
require("lspconfig")["golangci_lint_ls"].setup({
capabilities = capabilities,
settings = {},
on_attach = on_attach,
})
```
</details>

View file

@ -1,7 +1,7 @@
---
title: 'Compiling from source'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/installation/from-source.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/installation/from-source.en-us.md'
---
## Installation from source
@ -21,7 +21,7 @@ version is 20.
necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory
on the executable path.
**Note 2**: Go version 1.21 or higher is required. However, it is recommended to
**Note 2**: Go version 1.22 or higher is required. However, it is recommended to
obtain the same version as the [continuous integration](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/.forgejo/workflows/testing.yml).
**Note 3**: If you want to avoid installing build dependencies manually,
@ -44,24 +44,24 @@ To work with tagged releases, the following commands can be used:
```bash
git branch -a
git checkout v1.21.2-0
git checkout v7.0.3
```
To build Forgejo from source at a specific tagged release (like v1.21.2-0), list the
To build Forgejo from source at a specific tagged release (like v7.0.3), list the
available tags and check out the specific tag.
List available tags with the following.
```bash
git tag -l
git checkout v1.21.2-0
git checkout v7.0.3
```
### Build
To build from source, the following programs must be present on the system:
- `go` v1.21 or higher, see [here](https://golang.org/dl/)
- `go` v1.22 or higher, see [here](https://golang.org/dl/)
- `node` 20 or higher with `npm`, see [here](https://nodejs.org/en/download/current)
- `make`
@ -102,16 +102,16 @@ TAGS="bindata" make build
```
In the default release build of the continuous integration system, the build
tags are: `TAGS="bindata sqlite sqlite_unlock_notify"`. The simplest
tags are: `TAGS="bindata timetzdata sqlite sqlite_unlock_notify"`. The simplest
recommended way to build from source is therefore:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
TAGS="bindata timetzdata sqlite sqlite_unlock_notify" make build
```
The `build` target is split into two sub-targets:
- `make backend` which requires [Go v1.21](https://golang.org/dl/) or greater.
- `make backend` which requires [Go v1.22](https://golang.org/dl/) or greater.
- `make frontend` which requires [Node.js 20](https://nodejs.org/en/download/current) or greater.
If pre-built frontend files are present it is possible to only build the backend:
@ -136,4 +136,4 @@ You can also supply a tag during the build process with the `-t` option, to make
### Testing
See [the section dedicated to testing](./testing/).
See [the section dedicated to testing](../testing/).

View file

@ -146,7 +146,7 @@ resource r0 {
volume 0 {
# device name
device /dev/drbd0;
# specify disk to be used for devide above
# specify disk to be used for device above
disk /dev/nvme0n1p5;
# where to create metadata
# specify the block device name when using a different disk
@ -267,6 +267,8 @@ IP allocated to the LXC container running the web service:
```
server {
listen 80;
listen [::]:80;
server_name code.forgejo.org;
@ -319,6 +321,8 @@ It hosts LXC containers setup with [lxc-helpers](https://code.forgejo.org/forgej
bash -x /home/debian/run-forgejo.sh
docker logs -n 200 -f forgejo
```
- Rotating 30 days backups happen daily `/etc/cron.daily/forgejo-code-backup.sh`
- Add code.forgejo.org to the forgejo.org SPF record
- `forgejo-next` on hetzner02
@ -335,7 +339,6 @@ It hosts LXC containers setup with [lxc-helpers](https://code.forgejo.org/forgej
sudo mv /srv/forgejo /srv/forgejo.old
bash -x /home/debian/run-forgejo.sh
```
and create a user with the CLI using the example from `/home/debian/run-forgejo.sh`
- `/home/debian/next.nftables`
```
add table ip next;
@ -346,9 +349,49 @@ It hosts LXC containers setup with [lxc-helpers](https://code.forgejo.org/forgej
ip daddr 65.21.67.65 tcp dport { 2020 } dnat to 10.6.83.213;
};
```
- Add to `iface enp5s0 inet static` in `/etc/network/interfaces`
```
up nft -f /home/debian/next.nftables
```
```
- `/etc/nginx/sites-available/next.forgejo.org` same as `/etc/nginx/sites-available/code.forgejo.org`
Rotating 30 days backups happen daily `/etc/cron.daily/forgejo-code-backup.sh`
```
- `forgejo-v7` on hetzner02
Dedicated to https://v7.next.forgejo.org
- LXC creation same as code.forgejo.org
- `/etc/cron.hourly/forgejo-upgrade` runs `/home/debian/run-forgejo.sh > /home/debian/run-forgejo-$(date +%d).log`
- Reset everything
```sh
docker stop forgejo
docker rm forgejo
sudo rm -fr /srv/forgejo.old
sudo mv /srv/forgejo /srv/forgejo.old
bash -x /home/debian/run-forgejo.sh
```
- `/home/debian/v7.nftables`
```
add table ip v7;
flush table ip v7;
add chain ip v7 prerouting {
type nat hook prerouting priority 0;
policy accept;
ip daddr 65.21.67.65 tcp dport { 2070 } dnat to 10.6.83.179;
};
```
- Add to `iface enp5s0 inet static` in `/etc/network/interfaces`
```
up nft -f /home/debian/v7.nftables
```
```
- `/etc/nginx/sites-available/v7.forgejo.org` same as `/etc/nginx/sites-available/code.forgejo.org`
```
- `runner-forgejo-helm` on hetzner03
@ -360,6 +403,22 @@ The website https://forgejo.org is hosted at
https://uberspace.de/. The https://codeberg.org/forgejo/website/ CI
has credentials to push HTML pages there.
## ubuntu-runner.forgejo.org
The ubuntu-runner.forgejo.org virtual machine is hosted in the OVH
public cloud under the same account as the domain names. It is
dedicated to a [Forgejo runner for the benefit of the snap package](https://codeberg.org/forgejo-contrib/snap/issues/9) of
Forgejo.
As of April 2024 it is unclear how to run snapd in an LXC nested
container. When [this is resolved](https://code.forgejo.org/forgejo/lxc-helpers/issues/24), the machine can be destroyed and the
runner moved to an LXC container instead.
Forgejo contributors with SSH access to this machine are:
- https://codeberg.org/popey
- https://codeberg.org/earl-warren
## Installing Forgejo runners
### Preparing the LXC hypervisor
@ -383,7 +442,7 @@ lxc-helpers.sh lxc_container_run forgejo-runners -- sudo --user debian bash
sudo apt-get update
sudo apt-get install -y wget emacs-nox
lxc-helpers.sh lxc_prepare_environment
sudo wget -O /usr/local/bin/forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
sudo wget -O /usr/local/bin/forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.4.1/forgejo-runner-3.4.1-linux-amd64
sudo chmod +x /usr/local/bin/forgejo-runner
echo 'export TERM=vt100' >> .bashrc
```
@ -391,7 +450,7 @@ echo 'export TERM=vt100' >> .bashrc
### Creating a runner
Multiple runners can co-exist on the same machine. To keep things
organized they are located in a directtory that is the same as the url
organized they are located in a directory that is the same as the url
from which the token is obtained. For instance
DIR=codeberg.org/forgejo-integration means that the token was obtained from the
https://codeberg.org/forgejo-integration organization.

View file

@ -13,16 +13,20 @@ Weblate is [configured to propose pull requests](https://translate.codeberg.org/
to the Forgejo repository with new translations. These pull requests should be **squash merged** into the Forgejo
development branch as follows:
- announce 15 minutes before in the chatroom `@room the translations will be locked for maintenance in 15 minutes, make sure you don't try to save a translation when that happens as it will be lost.`
- announce in the chatroom: `@room the translations will be locked for maintenance in about 15 minutes. Make sure you don't try to save a translation when that happens as it will be lost.`
- go to the [Weblate repository admin page](https://translate.codeberg.org/projects/forgejo/forgejo/#repository)
- click lock
- click `Commit`. This is done optionally to make tests run before interrupting anyone, to reduce the total maintenance time
- post an [announcement in Weblate](https://translate.codeberg.org/projects/forgejo/#announcement): `The translations will be locked for maintenance soon. Make sure you don't try to save a translation when that happens as it will be lost.`
- wait 15 minutes
- click `Lock`
- reload the page
- check the number of commits
- verify there are 0 pending changes
- go to the pull request and wait until it is rebased and has the same number of commits
- squash merge the pending `[I18N]` pull request ([similar to this example](https://codeberg.org/forgejo/forgejo/pulls/2317))
- click reset
- click unlock
- squash-merge the pending `[I18N]` pull request ([similar to this example](https://codeberg.org/forgejo/forgejo/pulls/2317))
- click `Reset`
- click `Unlock`
- remove Weblate announcement
## Merging a pull request that changes translations
@ -34,5 +38,54 @@ are merged as explained above. Only the end of the sequence changes:
- squash merge the pending `[I18N]` pull request ([similar to this example](https://codeberg.org/forgejo/forgejo/pulls/2317))
- merge the PR (after resolving conflicts due to the merge of the Weblate changes)
- click reset
- click unlock
- click `Reset`
- click `Unlock`
## Resolving failures
### Weblate locked due to network error
Sometimes a connectivity error with Codeberg or it's unavailability can cause Weblate to lock. The lock error looks like this:
```
kex_exchange_identification: Connection closed by remote host
Connection closed by 217.197.91.145 port 22
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
(128)
```
Weblate will retry connection attempts but it takes hours before it does that. If Codeberg is currently [available](https://status.codeberg.eu/) and working, the project can simply be unlocked manually to allow the translators to keep working.
### Weblate was not reset before unlocking
If Weblate was not reset after a translation squash-merge was performed, and it already has new edits, the following steps must be taken to resolve failing rebase and save the new edits:
1. Lock Weblate if it didn't lock itself yet due to a rebase error
2. Make sure there are no [pending changes](https://translate.codeberg.org/projects/forgejo/forgejo/#repository). If there are, click `Commit`
3. Download current [translation files](https://translate.codeberg.org/download/forgejo/forgejo/?format=zip) just in case something goes wrong
4. Add internal Weblate git repository to your remotes and fetch it: `git remote add weblate https://translate.codeberg.org/git/forgejo/forgejo`, `git fetch -u weblate`
5. Checkout into it's branch to see which commits it contains: `git checkout weblate/forgejo`. Identify the new commits that were not squash-merged into the Forgejo repository yet
6. Checkout a new branch from `forgejo` branch: `git switch forgejo`, `git checkout -b i18n-weblate-recovery`
7. Cherry-pick the new commits into this new branch: `git cherry-pick <commit>`
8. Publish this branch and open a PR
9. Wait for the PR to be merged
10. Click `Reset`
11. Click `Update`
12. Click unlock
### Commit changing non-base locales was merged before Weblate
If a commit changing translation files other than `en_US.ini` was merged before all changes from Weblate were merged, it could have caused Weblate to lock itself due to failed rebase.
If the rebase did succeed, everything is ok and no steps need to be taken, just be more cautious with merges next time.
If Weblate failed to rebase, the following steps must be taken:
1. Make a PR that reverts the commit that caused the breakage
2. Merge this PR
3. Make Weblate commit and push all changes
4. Merge the Weblate PR
5. Rebase the commit(s) of the PR that caused the breakage on top of the new Weblate commit, open a new PR
Alternatively the same steps as in `Weblate was not reset before unlocking` can be taken, except that the conflicts must be resolved with Weblate commits instead of the breaking PR commits.

View file

@ -9,11 +9,11 @@ Forgejo base localization is English. This means that all translations are deriv
English localization strings are stored in the file `options/locale/locale_en-US.ini`. Strings are [translated](../localization) on Weblate and string management is partially done by it.
When a new string needs to be added to Forgejo, it must be added to the base language to be picked up by Weblate. Optionally, if the author knows other languages, string translations for other languages can be added so they don't need to be translated for those languages after the PR is merged. This is not necessary and translation can be delegated to the translators at Weblate.
When a new string needs to be added to Forgejo, it must be added to the base language to be picked up by Weblate.
When a string key needs to be changed, it must be mass-changed for all languages into which the string has already been translated, so that existing translations aren't lost.
When a string needs to be deleted, it should only be deleted for the base language. Weblate will delete strings for other languages after the PR is merged.
When an unused string needs to be deleted, it should be only deleted for the base language to avoid merge conflicts. The string will disappear from all translations automatically after the PR is merged.
## Localization style

View file

@ -7,20 +7,10 @@ _This is the developer documentation for Forgejo Next, covering technical
details for Forgejo contributors.
[Go to end-user documentation for service overview.](../../user/forgejo-next/)_
https://next.forgejo.org, also known as Forgejo Next, is Forgejo's
official testing and demonstration instance. The specific version of
Forgejo running on this instance varies depending on the status of the
latest release branch.
The Forgejo instances running under the `next.forgejo.org` domain are official testing and demonstration instance. They are updated daily. The data they contain may be wiped out without notice.
Typically, the instance will be running the daily build straight from the
`forgejo` branch, meaning it contains experimental code that will be
included in the next major version of Forgejo.
- https://next.forgejo.org runs the tip of the [forgejo branch](https://codeberg.org/forgejo/forgejo/src/branch/forgejo).
- https://v7.next.forgejo.org runs from the [codeberg.org/forgejo-experimental/forgejo:7](https://codeberg.org/forgejo-experimental/-/packages/container/forgejo/7) OCI image. It is built from the latest commit of the most recent branch.
When a release branch is created and release candidates are posted,
Forgejo Next will be switched to the latest release candidate. Release
candidates are to be deployed until a stable release is
available. next.forgejo.org will then be upgraded back to the
`forgejo` branch.
For details on the hardward from which it is running, [checkout the section in the
For details on the hardware from which it is running, [checkout the section in the
infrastructe documentation](../infrastructure/#containers).

View file

@ -1,5 +1,5 @@
---
title: 'Forgejo v1.21 documentation'
title: 'Forgejo v7.0 documentation'
---
- [What is Forgejo?](/)

View file

@ -6,16 +6,16 @@
"workflow": "",
"run_id": "20",
"run_number": "1",
"actor": "root",
"actor": "forgejo-actions",
"repository": "root/example-cron",
"event_name": "schedule",
"sha": "a61b6b1baff658c1041bcf57f313b04ff60331d7",
"sha": "0412071265e064ae61c8ede383688fe228f85562",
"ref": "main",
"ref_name": "main",
"ref_type": "",
"head_ref": "",
"base_ref": "",
"token": "ea82f423023b55bde6f24c584a3a63576f8acfd7",
"token": "ab87ba96d44ac8a1b9a86e140d2ba9c8582f605c",
"workspace": "/workspace/root/example-cron",
"action": "1",
"action_path": "",
@ -27,7 +27,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -20,8 +20,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -38,7 +38,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -48,20 +48,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -75,6 +75,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -91,23 +92,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92"
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2024-03-20T14:49:23Z",
"diff_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1.diff",
"created_at": "2024-05-03T07:26:39Z",
"diff_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1.diff",
"due_date": null,
"head": {
"label": "main",
@ -122,8 +123,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/fork-org/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/fork-org/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -140,25 +141,25 @@
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "http://10.201.14.201:3000/fork-org/example-pull-request",
"html_url": "http://10.201.14.125:3000/fork-org/example-pull-request",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/fork-org/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/fork-org/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-03-20T14:49:22Z",
"avatar_url": "http://10.201.14.125:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-05-03T07:26:38Z",
"description": "",
"email": "",
"followers_count": 0,
@ -172,6 +173,7 @@
"login": "fork-org",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "fork-org",
@ -188,8 +190,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -206,7 +208,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -216,20 +218,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -243,6 +245,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -259,11 +262,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -277,22 +280,22 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:fork-org/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:fork-org/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/fork-org/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/fork-org/example-pull-request",
"watchers_count": 1,
"website": ""
},
"repo_id": 15,
"sha": "739902bec4dc793848c0ca5dc490e671245614b2"
"sha": "f6b554eba3180ac2e5e10c863df13d2a4fe7217a"
},
"html_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1",
"html_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1",
"id": 1,
"is_locked": false,
"labels": [],
"merge_base": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"merge_base": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -300,19 +303,19 @@
"merged_by": null,
"milestone": null,
"number": 1,
"patch_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1.patch",
"patch_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1.patch",
"pin_order": 0,
"requested_reviewers": null,
"state": "open",
"title": "PR from fork",
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1",
"user": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -324,6 +327,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -341,8 +345,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -359,7 +363,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -369,20 +373,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -396,6 +400,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -412,11 +417,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -425,10 +430,10 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -440,6 +445,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -454,13 +460,13 @@
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request",
"sha": "739902bec4dc793848c0ca5dc490e671245614b2",
"sha": "f6b554eba3180ac2e5e10c863df13d2a4fe7217a",
"ref": "refs/pull/1/head",
"ref_name": "1",
"ref_type": "",
"head_ref": "main",
"base_ref": "main",
"token": "e9ef4f834b358f3a20cef42d395a7d07e1697f1a",
"token": "56b81ae8f5c555c297f5665fc3163f0d5f1a9b5c",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -472,7 +478,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -20,8 +20,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -38,7 +38,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -48,20 +48,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -75,6 +75,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -91,23 +92,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92"
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2024-03-20T14:49:23Z",
"diff_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1.diff",
"created_at": "2024-05-03T07:26:39Z",
"diff_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1.diff",
"due_date": null,
"head": {
"label": "main",
@ -122,8 +123,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/fork-org/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/fork-org/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -140,25 +141,25 @@
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "http://10.201.14.201:3000/fork-org/example-pull-request",
"html_url": "http://10.201.14.125:3000/fork-org/example-pull-request",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/fork-org/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/fork-org/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-03-20T14:49:22Z",
"avatar_url": "http://10.201.14.125:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-05-03T07:26:38Z",
"description": "",
"email": "",
"followers_count": 0,
@ -172,6 +173,7 @@
"login": "fork-org",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "fork-org",
@ -188,8 +190,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -206,7 +208,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -216,20 +218,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -243,6 +245,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -259,11 +262,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -277,22 +280,22 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:fork-org/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:fork-org/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/fork-org/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/fork-org/example-pull-request",
"watchers_count": 1,
"website": ""
},
"repo_id": 15,
"sha": "739902bec4dc793848c0ca5dc490e671245614b2"
"sha": "f6b554eba3180ac2e5e10c863df13d2a4fe7217a"
},
"html_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1",
"html_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1",
"id": 1,
"is_locked": false,
"labels": [],
"merge_base": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"merge_base": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -300,19 +303,19 @@
"merged_by": null,
"milestone": null,
"number": 1,
"patch_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1.patch",
"patch_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1.patch",
"pin_order": 0,
"requested_reviewers": null,
"state": "open",
"title": "PR from fork",
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/root/example-pull-request/pulls/1",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/root/example-pull-request/pulls/1",
"user": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -324,6 +327,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -341,8 +345,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -359,7 +363,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -369,20 +373,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -396,6 +400,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -412,11 +417,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:22Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:38Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -425,10 +430,10 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -440,6 +445,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -454,13 +460,13 @@
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request_target",
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "main",
"base_ref": "main",
"token": "6fefcc78c1a2afc1d7a8ad4cd27fea3e065c0fd4",
"token": "c0efdade281003d077596e6e356a05d582da3207",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -472,7 +478,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -20,8 +20,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -38,7 +38,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -48,20 +48,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -75,6 +75,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -91,23 +92,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92"
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2024-03-20T14:49:23Z",
"diff_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2.diff",
"created_at": "2024-05-03T07:26:39Z",
"diff_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2.diff",
"due_date": null,
"head": {
"label": "other",
@ -122,8 +123,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -140,7 +141,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -150,20 +151,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -177,6 +178,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -193,23 +195,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "46f117e9893723b589812ffc3627b5106b0db81b"
"sha": "d9c67148a7e8f091909c8393fcfba2246f78b53f"
},
"html_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2",
"html_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2",
"id": 2,
"is_locked": false,
"labels": [],
"merge_base": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"merge_base": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -217,19 +219,19 @@
"merged_by": null,
"milestone": null,
"number": 2,
"patch_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2.patch",
"patch_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2.patch",
"pin_order": 0,
"requested_reviewers": null,
"state": "open",
"title": "PR same repo",
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2",
"user": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -241,6 +243,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -258,8 +261,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -276,7 +279,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -286,20 +289,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 2,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -313,6 +316,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -329,11 +333,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -342,10 +346,10 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -357,6 +361,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -371,13 +376,13 @@
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request",
"sha": "46f117e9893723b589812ffc3627b5106b0db81b",
"sha": "d9c67148a7e8f091909c8393fcfba2246f78b53f",
"ref": "refs/pull/2/head",
"ref_name": "2",
"ref_type": "",
"head_ref": "other",
"base_ref": "main",
"token": "eee7081f79fd86a9c8cd7d8dd34c8fffd5f75cab",
"token": "8616dccba92591ababcd087fe5fe6374e2257c46",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -389,7 +394,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -20,8 +20,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -38,7 +38,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -48,20 +48,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -75,6 +75,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -91,23 +92,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92"
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2024-03-20T14:49:23Z",
"diff_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2.diff",
"created_at": "2024-05-03T07:26:39Z",
"diff_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2.diff",
"due_date": null,
"head": {
"label": "other",
@ -122,8 +123,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -140,7 +141,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -150,20 +151,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 1,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -177,6 +178,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -193,23 +195,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 14,
"sha": "46f117e9893723b589812ffc3627b5106b0db81b"
"sha": "d9c67148a7e8f091909c8393fcfba2246f78b53f"
},
"html_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2",
"html_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2",
"id": 2,
"is_locked": false,
"labels": [],
"merge_base": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"merge_base": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -217,19 +219,19 @@
"merged_by": null,
"milestone": null,
"number": 2,
"patch_url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2.patch",
"patch_url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2.patch",
"pin_order": 0,
"requested_reviewers": null,
"state": "open",
"title": "PR same repo",
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/root/example-pull-request/pulls/2",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/root/example-pull-request/pulls/2",
"user": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -241,6 +243,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -258,8 +261,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-pull-request.git",
"created_at": "2024-03-20T14:49:22Z",
"clone_url": "http://10.201.14.125:3000/root/example-pull-request.git",
"created_at": "2024-05-03T07:26:38Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -276,7 +279,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-pull-request",
"html_url": "http://10.201.14.125:3000/root/example-pull-request",
"id": 14,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -286,20 +289,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-pull-request",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 2,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -313,6 +316,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -329,11 +333,11 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.201.14.201:root/example-pull-request.git",
"ssh_url": "forgejo@10.201.14.125:root/example-pull-request.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:49:23Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2024-05-03T07:26:39Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -342,10 +346,10 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -357,6 +361,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -371,13 +376,13 @@
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request_target",
"sha": "69b4e387ae2f39cddace8eb1091f7798b79adf92",
"sha": "08664a8624d2dbe0a88b0d583224c07bcc5007ae",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "other",
"base_ref": "main",
"token": "3a1cccaab5ad5a5933df3e6fd44cbb5d482584c5",
"token": "65bc5f5257526adee897d4a05a5da8efed13d53a",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -389,7 +394,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -1,6 +1,6 @@
{
"event": {
"after": "a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"after": "10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"before": "0000000000000000000000000000000000000000",
"commits": [
{
@ -17,16 +17,16 @@
"name": "username",
"username": "root"
},
"id": "a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"id": "10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-03-20T14:48:32Z",
"url": "http://10.201.14.201:3000/root/example-push/commit/a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"timestamp": "2024-05-03T07:25:52Z",
"url": "http://10.201.14.125:3000/root/example-push/commit/10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"verification": null
}
],
"compare_url": "http://10.201.14.201:3000/",
"compare_url": "http://10.201.14.125:3000/",
"head_commit": {
"added": [
".forgejo/workflows/test.yml"
@ -41,20 +41,20 @@
"name": "username",
"username": "root"
},
"id": "a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"id": "10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-03-20T14:48:32Z",
"url": "http://10.201.14.201:3000/root/example-push/commit/a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"timestamp": "2024-05-03T07:25:52Z",
"url": "http://10.201.14.125:3000/root/example-push/commit/10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"verification": null
},
"pusher": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -66,6 +66,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -83,8 +84,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-push.git",
"created_at": "2024-03-20T14:48:32Z",
"clone_url": "http://10.201.14.125:3000/root/example-push.git",
"created_at": "2024-05-03T07:25:52Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -101,7 +102,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-push",
"html_url": "http://10.201.14.125:3000/root/example-push",
"id": 10,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -111,20 +112,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-push/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-push/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-push",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -138,6 +139,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -154,21 +156,21 @@
"release_counter": 0,
"repo_transfer": null,
"size": 25,
"ssh_url": "forgejo@10.201.14.201:root/example-push.git",
"ssh_url": "forgejo@10.201.14.125:root/example-push.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:48:32Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-push",
"updated_at": "2024-05-03T07:25:53Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-push",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -180,6 +182,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -195,13 +198,13 @@
"actor": "root",
"repository": "root/example-push",
"event_name": "push",
"sha": "a1df68fd4f222d745ebf3a78ee63d182338d4bf2",
"sha": "10cf39c7b1bc4ffccafd1dc68e0c98e4042a6d0c",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "",
"base_ref": "",
"token": "bf0701d0998ed222c2523b87a800eaf60b254d13",
"token": "ca8a7ad801950850bc2d3ede539cfc2b52b40d90",
"workspace": "/workspace/root/example-push",
"action": "0",
"action_path": "",
@ -213,7 +216,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -1,9 +1,9 @@
{
"event": {
"after": "c5fa6406c732cab23a32815ee5f699ba68a43443",
"after": "8ed35c4bdee3b164a7f9670cc4c20e5d7d09d702",
"before": "0000000000000000000000000000000000000000",
"commits": [],
"compare_url": "http://10.201.14.201:3000/root/example-tag/compare/0000000000000000000000000000000000000000...c5fa6406c732cab23a32815ee5f699ba68a43443",
"compare_url": "http://10.201.14.125:3000/root/example-tag/compare/0000000000000000000000000000000000000000...8ed35c4bdee3b164a7f9670cc4c20e5d7d09d702",
"head_commit": {
"added": [
".forgejo/workflows/test.yml",
@ -19,20 +19,20 @@
"name": "username",
"username": "root"
},
"id": "c5fa6406c732cab23a32815ee5f699ba68a43443",
"id": "8ed35c4bdee3b164a7f9670cc4c20e5d7d09d702",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-03-20T14:48:37Z",
"url": "http://10.201.14.201:3000/root/example-tag/commit/c5fa6406c732cab23a32815ee5f699ba68a43443",
"timestamp": "2024-05-03T07:25:58Z",
"url": "http://10.201.14.125:3000/root/example-tag/commit/8ed35c4bdee3b164a7f9670cc4c20e5d7d09d702",
"verification": null
},
"pusher": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -44,6 +44,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -61,8 +62,8 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.201.14.201:3000/root/example-tag.git",
"created_at": "2024-03-20T14:48:38Z",
"clone_url": "http://10.201.14.125:3000/root/example-tag.git",
"created_at": "2024-05-03T07:25:58Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
@ -79,7 +80,7 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.201.14.201:3000/root/example-tag",
"html_url": "http://10.201.14.125:3000/root/example-tag",
"id": 11,
"ignore_whitespace_conflicts": false,
"internal": false,
@ -89,20 +90,20 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.201.14.201:3000/api/v1/repos/root/example-tag/languages",
"languages_url": "http://10.201.14.125:3000/api/v1/repos/root/example-tag/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "example-tag",
"object_format_name": "",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 0,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
@ -116,6 +117,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -132,21 +134,21 @@
"release_counter": 0,
"repo_transfer": null,
"size": 26,
"ssh_url": "forgejo@10.201.14.201:root/example-tag.git",
"ssh_url": "forgejo@10.201.14.125:root/example-tag.git",
"stars_count": 0,
"template": false,
"updated_at": "2024-03-20T14:48:38Z",
"url": "http://10.201.14.201:3000/api/v1/repos/root/example-tag",
"updated_at": "2024-05-03T07:25:58Z",
"url": "http://10.201.14.125:3000/api/v1/repos/root/example-tag",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"sender": {
"active": false,
"avatar_url": "http://10.201.14.201:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-03-20T14:45:23Z",
"avatar_url": "http://10.201.14.125:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-05-03T07:20:44Z",
"description": "",
"email": "root@noreply.10.201.14.201",
"email": "root@noreply.10.201.14.125",
"followers_count": 0,
"following_count": 0,
"full_name": "",
@ -158,6 +160,7 @@
"login": "root",
"login_name": "",
"prohibit_login": false,
"pronouns": "",
"restricted": false,
"starred_repos_count": 0,
"username": "root",
@ -173,13 +176,13 @@
"actor": "root",
"repository": "root/example-tag",
"event_name": "push",
"sha": "c5fa6406c732cab23a32815ee5f699ba68a43443",
"sha": "8ed35c4bdee3b164a7f9670cc4c20e5d7d09d702",
"ref": "refs/tags/v1.1",
"ref_name": "v1.1",
"ref_type": "tag",
"head_ref": "",
"base_ref": "",
"token": "1a141a578c7d3e896321369ccbcf74883fb3d58e",
"token": "c52d9ad082448d478a896f03cc9407075925eec3",
"workspace": "/workspace/root/example-tag",
"action": "0",
"action_path": "",
@ -191,7 +194,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.201.14.201:3000",
"api_url": "http://10.201.14.201:3000/api/v1",
"server_url": "http://10.201.14.125:3000",
"api_url": "http://10.201.14.125:3000/api/v1",
"graphql_url": ""
}

View file

@ -1 +1 @@
7.0-test
7.0.2

View file

@ -1,7 +1,7 @@
---
title: 'Forgejo Actions user guide'
license: 'CC-BY-SA-4.0'
similar: 'https://github.com/go-gitea/gitea/blob/main/docs/content/doc/usage/actions/faq.en-us.md https://docs.github.com/en/actions'
similar: 'https://github.com/go-gitea/gitea/blob/main/docs/content/usage/actions/faq.en-us.md https://docs.github.com/en/actions'
---
`Forgejo Actions` provides Continuous Integration driven from the files in the `.forgejo/workflows` directory of a repository, with a web interface to show the results. The syntax and semantics of the `workflow` files will be familiar to people used to [GitHub Actions](https://docs.github.com/en/actions) but **they are not and will never be identical**.
@ -27,6 +27,13 @@ The following guide explains key **concepts** to help understand how `workflows`
- Click on the workflow link to see the details and the job execution logs.
![actions results](../_images/user/actions/workflow-demo.png)
## Hierarchy
In Forgejo terminology a `workflow` is a `.yml` file in the
`.forgejo/workflows` directory of the repository. A `workflow` has `jobs` with
`steps` to be executed by a Action runner. See the [Glossary](#glossary) for
more descriptions of key terms.
## Actions
An `Action` is a repository that contains the equivalent of a function in any programming language. It comes in two flavors, depending on the file found at the root of the repository:
@ -159,10 +166,13 @@ by using the https://code.forgejo.org/actions/cache action.
There is no guarantee that the cache is populated, even when two `jobs`
run in sequence. It is not a substitute for `artifacts`.
Note that [actions/cache](https://code.forgejo.org/actions/cache) has `zstd`
as a dependency for creating tar archives in the runner.
See also the [set of examples](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-cache/.forgejo/workflows/).
## Auto cancelation of workflows
> **NOTE:** [actions/cache](https://code.forgejo.org/actions/cache) will us `zstd` if present when compressing files to be sent to the cache. It is faster than the default compression.
> **NOTE:** if the runner is not configured to provide a cache, [actions/cache](https://code.forgejo.org/actions/cache) will fail with the following error: `Cache action is only supported on GHES version >= 3.5`.
## Auto cancellation of workflows
When a new commit is pushed to a branch, the workflows that are were
triggered by parent commits are canceled.
@ -200,7 +210,7 @@ A list of command and arguments, equivalent to [[COMMAND] [ARG...]](https://docs
A string of additional options, as documented [docker run](https://docs.docker.com/engine/reference/commandline/run/). For instance: "--workdir /myworkdir --ulimit nofile=1024:1024".
> **NOTE:** the `--volume` option is restricted to a whitelist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
> **NOTE:** the `--volume` option is restricted to a allowlist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
### username
@ -315,13 +325,13 @@ A context is an object that contains information relevant to a `workflow` run. F
### secrets
A map of the respository secrets. It is empty if the `event` that triggered the `workflow` is `pull_request` and the head is from a fork of the repository.
A map of the repository secrets. It is empty if the `event` that triggered the `workflow` is `pull_request` and the head is from a fork of the repository.
Example: `${{ secrets.MYSECRETS }}`
### vars
A map of the respository variables.
A map of the repository variables.
Example: `${{ vars.MYVARIABLE }}`
@ -546,6 +556,28 @@ on:
> **NOTE:** combining `tags` with `paths` or `branches` is unspecified.
### `on.issues`
Trigger the workflow when an event happens on an issue or a pull request, as
specified with the `types` event parameter. It defaults to `[opened, edited]` if not specified.
- `opened` the issue or pull request was created.
- `reopened` the closed issue or pull request was reopened.
- `closed` the issue or pull request was closed or merged.
- `labeled` a label was added.
- `unlabeled` a label was removed.
- `assigned` an assignee was added.
- `unassigned` an assignee was removed.
- `edited` the body, title or comments of the issue or pull request were modified.
```yaml
on:
issues:
types: [opened, edited]
```
[Check out the example](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-issue/.forgejo/workflows/test.yml).
### `on.pull_request`
Trigger the workflow when an event happens on a pull request, as
@ -595,7 +627,7 @@ requests are ignored.
The scheduled time is specified using
the [POSIX cron syntax](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07).
See also the [crontab(5)](https://linux.die.net/man/5/crontab) manual page for a more information and some examples.
See also the [crontab(5)](https://man.archlinux.org/man/crontab.5) manual page for a more information and some examples.
```yaml
on:
@ -640,7 +672,7 @@ jobs:
runs-on: docker
```
means that the `Forgejo runner` that claims to provide a kind of machine labelled `docker` will be selected by `Forgejo` and sent the job to be run.
means that the `Forgejo runner` that claims to provide a kind of machine labeled `docker` will be selected by `Forgejo` and sent the job to be run.
The actual machine provided by the runner **entirely depends on how the `Forgejo runner` was registered** (see the [Forgejo Actions administrator guide](../../admin/actions/) for more information).
@ -669,8 +701,8 @@ jobs:
runs-on: self-hosted
strategy:
matrix:
variant: ["bookworm", "bullseye"]
node: ["18", "20"]
variant: ['bookworm', 'bullseye']
node: ['18', '20']
```
Will create four jobs where:
@ -697,7 +729,7 @@ steps:
### `jobs.<job_id>.container.image`
- **Docker or Podman:**
If the default image is unsuitable, a job can specify an alternate container image with `container:`, [as shown in this example](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-container/.forgejo/workflows/test.yml). For instance the following will ensure the job is run using [Alpine 3.18](https://hub.docker.com/_/alpine/tags?name=3.18).
If the default image is unsuitable, a job can specify an alternate container image with `container:`, [as shown in this example](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-container/.forgejo/workflows/test.yml). If not specified, the shell defaults to `sh`. For instance the following will ensure the job is run using [Alpine 3.18](https://hub.docker.com/_/alpine/tags?name=3.18).
```yaml
runs-on: docker
@ -742,7 +774,7 @@ container:
Set the volumes for the container to use, as if provided with the `--volume` argument of the `docker run` command.
> **NOTE:** the `--volume` option is restricted to a whitelist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
> **NOTE:** the `--volume` option is restricted to a allowlist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
> **NOTE:** ignored if `jobs.<job_id>.runs-on` is an LXC container.
@ -752,7 +784,7 @@ Set the volumes for the container to use, as if provided with the `--volume` arg
A string of additional options, as documented in [docker run](https://docs.docker.com/engine/reference/commandline/run/). For instance: "--workdir /myworkdir --ulimit nofile=1024:1024".
> **NOTE:** the `--volume` option is restricted to a whitelist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
> **NOTE:** the `--volume` option is restricted to a allowlist of volumes configured in the runner executing the task. See the [Forgejo Actions administrator guide](../../admin/actions/) for more information.
> **NOTE:** ignored if `jobs.<job_id>.runs-on` is an LXC container.
@ -818,7 +850,7 @@ jobs:
steps:
- run: |
grep Alpine /etc/os-release
echo SUCESS
echo SUCCESS
```
[Check out the example](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-container/.forgejo/workflows/test.yml)
@ -834,12 +866,41 @@ The working directory from which the script specified with `jobs.<job_id>.step[*
### `jobs.<job_id>.steps[*].shell`
The shell used to run the script specified with `jobs.<job_id>.step[*].run`. For instance:
The shell used to run the script specified with `jobs.<job_id>.step[*].run`. If not specified it defaults to `bash`.
For instance:
```yaml
steps:
- shell: bash
run: echo $PATH
jobs:
test:
runs-on: docker
steps:
- run: echo using bash here
```
Or to specify that `sh` must be used instead:
```yaml
jobs:
test:
runs-on: docker
steps:
- shell: sh
run: echo using sh here
```
If `jobs.<job_id>.container.image` is set and the shell is not specified, it defaults to `sh`.
For instance:
```yaml
jobs:
test:
runs-on: docker
container:
image: alpine:3.20
steps:
- run: echo using sh here
```
[Check out the example](https://code.forgejo.org/forgejo/end-to-end/src/branch/main/actions/example-pull-request/.forgejo/workflows/test.yml)
@ -1031,13 +1092,14 @@ test "KEY2=$KEY2" = "KEY2=value2"
## Glossary
- **action:** a repository that can be used in a way similar to a function in any programming language to run a single **step**.
- **artifact** is a file or collection of files produced during a **workflow** run.
- **automatic token** is the token created at the begining of each **workflow**.
- **context** is a top level object available in an expression that contains information about the running workflow.
- **artifact:** a file or collection of files produced during a **workflow** **run**.
- **automatic token:** the unique token created during each **run** by the **runner**.
- **context:** top level objects containing the current state of a **run** containing information about the **workflow** and the **runner** handling the **job**.
- **expression:** a string enclosed in `${{ ... }}` and evaluated at runtime.
- **job:** a sequential set of **steps**.
- **label** the kind of machine that is matched against the value of `runs-on` in a **workflow**.
- **runner:** the [Forgejo runner](https://code.forgejo.org/forgejo/runner) daemon tasked to execute the **workflows**.
- **label:** the kind of machine that is matched against the value of `runs-on` in a **workflow**.
- **run:** the execution of a **job**.
- **runner:** the [Forgejo runner](https://code.forgejo.org/forgejo/runner) daemon created to execute the **workflows**.
- **step:** a command the **runner** is required to carry out.
- **workflow or task:** a file in the `.forgejo/workflows` directory that contains **jobs**.
- **workspace** is the directory where the files of the **job** are stored and shared between all **step**s.
- **workflow:** a file in the `.forgejo/workflows` directory containing **jobs**.
- **workspace:** the directory where the files of the **job** are stored and shared between all **step**s.

View file

@ -1,7 +1,7 @@
---
title: 'AGit Workflow Usage'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/agit-support.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/agit-support.en-us.md'
---
Forgejo ships with limited support for [AGit-Flow](https://git-repo.info/en/2020/03/agit-flow-and-git-repo/). It was originally introduced in Gitea `1.13`.
@ -45,6 +45,24 @@ This can be **any** markdown content.\n
- [x] Ok"
```
To be able to easily push new commits to your pull request, you first need to switch the [default push method](https://git-scm.com/docs/git-config#Documentation/git-config.txt-pushdefault) to "upstream":
```shell
# To only set this option for this specific repository
git config push.default upstream
# Or run this instead if you want to set this option globally
git config --global push.default upstream
```
Then, run the following command:
```shell
git config branch.local-branch.merge refs/for/main/topic-branch
```
After doing so, you can now simply run `git push` to push commits to your pull request, without having to specify the refspec.
This also will allow you to pull, fetch, rebase, etc. from the AGit pull request by default.
#### A More Complex Example
Suppose that the currently checked out branch in your local repository is `main`, yet you would like to submit a Pull Request meant for a remote branch called `remote-branch`.

View file

@ -1,7 +1,7 @@
---
title: 'API Usage'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/development/api-usage.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/development/api-usage.en-us.md'
---
The Forgejo API for all versions that have the same major number
@ -9,7 +9,7 @@ The Forgejo API for all versions that have the same major number
are breaking changes (e.g. removal of an API endpoint) when the major
number changes and the release notes of this major version provide
explanations to help developers upgrade their software
accordingly. Read more about the [Forgejo numbering scheme](./versions/).
accordingly. Read more about the [Forgejo numbering scheme](../versions/).
## Enabling/configuring API access

View file

@ -1,7 +1,7 @@
---
title: 'Authentication'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/authentication.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/authentication.en-us.md'
---
## LDAP (Lightweight Directory Access Protocol)

View file

@ -1,7 +1,7 @@
---
title: 'Blame File View'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/blame.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/blame.en-us.md'
---
Forgejo supports viewing the line-by-line revision history for a file also known as blame view.

View file

@ -3,7 +3,7 @@ title: Blocking a user
license: 'CC-BY-SA-4.0'
---
Blocking another user is desirable if they are acting maliciously or are spamming your repository. For such cases, Forgejo provides the functionality to block other users. When you block a user, Forgejo does not explicitly notify them, but they may learn through an interaction with you that is blocked.
Blocking another user is desirable if they are acting maliciously or are spamming your repository (for instance by adding unsolicited comments in issues). For such cases, Forgejo provides the functionality to block other users. When you block a user, Forgejo does not explicitly notify them, but they may learn through an interaction with you that is blocked.
## How to block someone

View file

@ -24,7 +24,7 @@ Here's an explanation of the form's fields:
- **Owner** Here, you can specify whether you want this to be your own personal project or whether you want it to be part of an organization that you're a part of
- **Repository name** A name for your repository (which will also be part of its path, in this case `https://codeberg.org/knut/foobar`)
- **Visibility** Repositories are either _public_ or _private_, where public means that everyone will be able to access your repository, while your private repositories can only be accessed by you and your collaborators (see [Invite Collaborators](../invite-collaborators))
- **Visibility** Repositories are either _public_ or _private_, where public means that everyone will be able to access your repository, while your private repositories can only be accessed by you and your collaborators (see [Invite Collaborators](https://docs.codeberg.org/collaborating/invite-collaborators/))
- **Description** A short description that appears next to your repository's name where appropriate
- **Template** Occasionally you may want to generate your repository from an existing template. In that case, you can specify that template here. Otherwise, simply leave this field empty.
- **Issue Labels** If you want to initialize your project's issue tracker with a set of labels that you can use to categorize issues, you can choose one here. You don't have to choose this right away though, as you can choose and modify issue labels at a later time as well.
@ -33,6 +33,7 @@ Here's an explanation of the form's fields:
- **README** is the first file one should read when accessing a repository. It's also the first file displayed when accessing a repository, a bit like the "homepage" of your repository. On Forgejo, this is interpreted as a [Markdown](/markdown/) file.
- **Initialize repository** In order to add the `LICENSE`, `README` and `.gitignore` files mentioned above to your new repository, make sure you tick this box.
- **Default branch** Using this field, you can choose how to name the default branch of your Git repository. We recommend you use the predefined default.
- **Object format** is the repository's object format. We recommend SHA1 as it's the most compatible. It cannot be changed later once the repository has been created.
It's okay to only specify owner and repository name, if you want to get started quickly.
After filling out the fields, click the green "Create Repository" button on the bottom of the page.
@ -44,11 +45,11 @@ You should now see a screen similar to the one below. If you haven't chosen to g
Here's what the most important buttons do:
- **Repository Settings (1)** is where you can make adjustments to your repository settings, such as setting a project website, changing the repository description, enabling/disabling a wiki and issue tracker or deleting the repository. You may want to give this page a visit right now, to get an overview of your options.
- **The Watch, Star and Fork buttons (2)** allow you to interact with other people's repositories. While they don't do much for your own repository, when visiting another user's repository, you can click on "Watch" to get notified about everything important happening in that repository, "Star" to show the user your appreciation (and to help other users find interesting projects more quickly) and "Fork" to create your own copy of the repository, for example to make modifications that you want to share with the original author.
- **The Repository Tabs (3)** contain links to every important feature within this repository:
- **The RSS, Watch, Star and Fork buttons (2)** allow you to interact with other people's repositories. While they don't do much for your own repository, when visiting another user's repository, you can click on "Watch" to get notified about everything important happening in that repository, "Star" to show the user your appreciation (and to help other users find interesting projects more quickly) and "Fork" to create your own copy of the repository, for example to make modifications that you want to share with the original author. You can also use the RSS button to get the RSS feed of the repository.
- **The Repository Tabs (3)** contain links to every important feature within this repository (some may not be visible by default):
- **Code** lets you browse through all versions of this repository's code.
- **Issues** is a very important communication tool between the author, their users and their contributors. Think of it as part bug-tracker, part forum.
For more information on this, have a look at [The Basics of Issue Tracking](/getting-started/issue-tracking-basics/)
For more information on this, have a look at [The Basics of Issue Tracking](../issue-tracking-basics/)
- **Pull Requests** is where other users can ask the author to "pull" in code, from a fork into the author's program.
- **Releases** is a space where the author can upload finished versions of their program, e.g. binaries
- **Wiki** is a basic wiki feature built into Forgejo.

View file

@ -11,4 +11,4 @@ bugs, or even casually host a project.
Please make sure you have a mirror or backup of any important data uploaded
to Forgejo Next! It won't be reset unless there is a need to, but this instance is
running potentially unstable code, so don't use it as your only storage for
irreplacable valuable data.
irreplaceable valuable data.

18
docs/user/incoming.md Normal file
View file

@ -0,0 +1,18 @@
---
title: Comment on issues and pull requests via email
license: 'CC-BY-SA-4.0'
---
> **NOTE:** this feature is not enabled by default, the [`[email.incoming].ENABLED`](../../admin/config-cheat-sheet/) setting must be set.
When receiving a notification it is possible to reply to the email instead of using the web interface. The content of the reply will be stripped of the quoted text (lines starting with greater than `>`) and used as the content of the comment. The attachments from the reply will be added as attachments to the comment.
It will be taken into account when receiving a notification email about:
- A newly created issue
- A newly created pull request
- A comment added to a specific line of code in a pull request review
- A comment to an existing issue
- A comment to an existing pull request
> **NOTE:** the reply address contains a unique token to match the response with the issue or pull request and looks like this: `forgejo+ABCDE@example.com`. In some mail clients, such as Thunderbird, using this reply address may require using the `Reply List` button rather than the `Reply` button.

View file

@ -32,6 +32,7 @@ involved in running it on their machines.
- [README badges](./readme-badges/)
- Advanced Usage
- [Issue and Pull Request Templates](./issue-pull-request-templates/)
- [Comment on issues and pull requests via email](./incoming/)
- [Actions](./actions/)
- [Merge Message templates](./merge-message-templates/)
- [Webhooks](./webhooks/)
@ -47,6 +48,7 @@ involved in running it on their machines.
- [Forgejo versions](./versions/)
- [Reference](https://codeberg.org/api/swagger)
- [Migrating Repositories](https://docs.codeberg.org/advanced/migrating-repos/)
- [Repository Mirrors](./repo-mirror/)
- [Push to create](./push-to-create/)
- [AGit Workflow Usage](./agit-support/)
- [Packages](./packages/)

View file

@ -1,7 +1,7 @@
---
title: 'Issue and Pull Request Templates'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/issue-pull-request-templates.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/issue-pull-request-templates.en-us.md'
---
Some projects have a standard list of questions that users need to answer
@ -9,9 +9,30 @@ when creating an issue or pull request. Forgejo supports adding templates to the
**default branch of the repository** so that they can autopopulate the form when users are
creating issues and pull requests. This will cut down on the initial back and forth
of getting some clarifying details.
It is currently not possible to provide generic issue/pull-request templates globally.
Additionally, the New Issue page URL can be suffixed with `?title=Issue+Title&body=Issue+Text` and the form will be populated with those strings. Those strings will be used instead of the template if there is one.
## Directory names
Users can create multiple issue templates inside a special directory and allow users to choose one that more specifically
addresses their problem.
Forgejo will look for template files in the following directories:
- `ISSUE_TEMPLATE`
- `issue_template`
- `.forgejo/ISSUE_TEMPLATE`
- `.forgejo/issue_template`
- `.gitea/ISSUE_TEMPLATE`
- `.gitea/issue_template`
- `.github/ISSUE_TEMPLATE`
- `.github/issue_template`
- `.gitlab/ISSUE_TEMPLATE`
- `.gitlab/issue_template`
Inside the directory can be multiple markdown (`.md`) or yaml (`.yaml`/`.yml`) issue templates of the form.
## File names
Possible file names for issue templates:
@ -22,29 +43,11 @@ Possible file names for issue templates:
- `issue_template.md`
- `issue_template.yaml`
- `issue_template.yml`
- `.gitea/ISSUE_TEMPLATE.md`
- `.gitea/ISSUE_TEMPLATE.yaml`
- `.gitea/ISSUE_TEMPLATE.yml`
- `.gitea/issue_template.md`
- `.gitea/issue_template.yaml`
- `.gitea/issue_template.yml`
- `.github/ISSUE_TEMPLATE.md`
- `.github/ISSUE_TEMPLATE.yaml`
- `.github/ISSUE_TEMPLATE.yml`
- `.github/issue_template.md`
- `.github/issue_template.yaml`
- `.github/issue_template.yml`
Possible file names for issue config:
- `.gitea/ISSUE_TEMPLATE/config.yaml`
- `.gitea/ISSUE_TEMPLATE/config.yml`
- `.gitea/issue_template/config.yaml`
- `.gitea/issue_template/config.yml`
- `.github/ISSUE_TEMPLATE/config.yaml`
- `.github/ISSUE_TEMPLATE/config.yml`
- `.github/issue_template/config.yaml`
- `.github/issue_template/config.yml`
- `config.yaml`
- `config.yml`
Possible file names for PR templates:
@ -54,36 +57,6 @@ Possible file names for PR templates:
- `pull_request_template.md`
- `pull_request_template.yaml`
- `pull_request_template.yml`
- `.gitea/PULL_REQUEST_TEMPLATE.md`
- `.gitea/PULL_REQUEST_TEMPLATE.yaml`
- `.gitea/PULL_REQUEST_TEMPLATE.yml`
- `.gitea/pull_request_template.md`
- `.gitea/pull_request_template.yaml`
- `.gitea/pull_request_template.yml`
- `.github/PULL_REQUEST_TEMPLATE.md`
- `.github/PULL_REQUEST_TEMPLATE.yaml`
- `.github/PULL_REQUEST_TEMPLATE.yml`
- `.github/pull_request_template.md`
- `.github/pull_request_template.yaml`
- `.github/pull_request_template.yml`
## Directory names
Alternatively, users can create multiple issue templates inside a special directory and allow users to choose one that more specifically
addresses their problem.
Possible directory names for issue templates:
- `ISSUE_TEMPLATE`
- `issue_template`
- `.gitea/ISSUE_TEMPLATE`
- `.gitea/issue_template`
- `.github/ISSUE_TEMPLATE`
- `.github/issue_template`
- `.gitlab/ISSUE_TEMPLATE`
- `.gitlab/issue_template`
Inside the directory can be multiple markdown (`.md`) or yaml (`.yaml`/`.yml`) issue templates of the form.
## Syntax for markdown template
@ -114,11 +87,21 @@ This example YAML configuration file defines an issue form using several inputs
name: Bug Report
about: File a bug report
title: '[Bug]: '
ref: 'main'
labels:
- bug
- 'help needed'
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
# some markdown that will only be visible once the issue has been created
- type: markdown
attributes:
value: |
This issue was created by an issue **template** :)
visible: [content]
- type: input
id: contact
attributes:
@ -170,11 +153,16 @@ body:
options:
- label: I agree to follow this project's Code of Conduct
required: true
- label: I have also read the CONTRIBUTION.MD
required: true
visible: [form]
- label: This is a TODO only visible after issue creation
visible: [content]
```
### Markdown
You can use a `markdown` element to display Markdown in your form that provides extra context to the user, but is not submitted.
You can use a `markdown` element to display Markdown in your form that provides extra context to the user, but is not submitted by default.
Attributes:
@ -182,6 +170,8 @@ Attributes:
| ----- | ------------------------------------------------------------ | -------- | ------ | ------- | ------------ |
| value | The text that is rendered. Markdown formatting is supported. | Required | String | - | - |
visible: Default is **[form]**
### Textarea
You can use a `textarea` element to add a multi-line text field to your form. Contributors can also attach files in `textarea` fields.
@ -202,6 +192,8 @@ Validations:
| -------- | ---------------------------------------------------- | -------- | ------- | ------- | ------------ |
| required | Prevents form submission until element is completed. | Optional | Boolean | false | - |
visible: Default is **[form, content]**
### Input
You can use an `input` element to add a single-line text field to your form.
@ -217,11 +209,13 @@ Attributes:
Validations:
| Key | Description | Required | Type | Default | Valid values |
| --------- | ----------------------------------------------------------------------------------------- | -------- | ------- | ------- | -------------------------------------------------------------------------------------------------------------------- |
| required | Prevents form submission if the input is empty. | Optional | Boolean | false | - |
| is_number | Prevents form submission if the value of the input is not a number. | Optional | Boolean | false | - |
| regex | Prevents form submission if the value of the input does not match the regular expression. | Optional | String | - | a [JavaScript regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions) |
| Key | Description | Required | Type | Default | Valid values |
| --------- | ------------------------------------------------------------------------------------------------ | -------- | ------- | ------- | ------------------------------------------------------------------------ |
| required | Prevents form submission until element is completed. | Optional | Boolean | false | - |
| is_number | Prevents form submission until element is filled with a number. | Optional | Boolean | false | - |
| regex | Prevents form submission until element is filled with a value that match the regular expression. | Optional | String | - | a [regular expression](https://en.wikipedia.org/wiki/Regular_expression) |
visible: Default is **[form, content]**
### Dropdown
@ -242,6 +236,8 @@ Validations:
| -------- | ---------------------------------------------------- | -------- | ------- | ------- | ------------ |
| required | Prevents form submission until element is completed. | Optional | Boolean | false | - |
visible: Default is **[form, content]**
### Checkboxes
You can use the `checkboxes` element to add a set of checkboxes to your form.
@ -256,10 +252,13 @@ Attributes:
For each value in the options array, you can set the following keys.
| Key | Description | Required | Type | Default | Options |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | ------- | ------- |
| label | The identifier for the option, which is displayed in the form. Markdown is supported for bold or italic text formatting, and hyperlinks. | Required | String | - | - |
| required | Prevents form submission until element is completed. | Optional | Boolean | false | - |
| Key | Description | Required | Type | Default | Options |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------ | ------- | ------- |
| label | The identifier for the option, which is displayed in the form. Markdown is supported for bold or italic text formatting, and hyperlinks. | Required | String | - | - |
| required | Prevents form submission until element is completed. | Optional | Boolean | false | - |
| visible | Whether a specific checkbox appears in the form only, in the created issue only, or both. Valid options are "form" and "content". | Optional | String array | false | - |
visible: Default is **[form, content]**
## Syntax for issue config

View file

@ -24,7 +24,7 @@ You can switch between issues that are still open, and those that are already re
Some projects define milestones **(4)**, to which issues can be assigned. They are good for
visualizing the progress of a project's development.
You can create an issue by clicking on the green "New Issue" button **(5)** at the top left
You can create an issue by clicking on the orange "New Issue" button **(5)** at the top right
of the issues list.
Issues in the issue tracker are public, and everyone is able to read and answer them.

View file

@ -1,7 +1,7 @@
---
title: 'Labels'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/labels.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/labels.en-us.md'
---
You can use labels to classify issues and pull requests and to improve your overview over them.
@ -27,13 +27,12 @@ When you create a repository (or an organization), you can ensure certain labels
## Archiving Labels
When a label is no longer useful but needs to be kept around because
it is still associated with existing pull requests or issues, it can
be archived.
it is still associated with existing pull requests or issues, it can be archived.
- The label won't show up as a suggestion when you're adding/editing labels.
- The label cannot be assigned to a new issues or pull requests.
To archive a label, edit the label an click the `Archive` checkbox.
To archive a label, edit the label and click the `Archive` checkbox.
![archive a label](../_images/user/labels/label-archive.png)
@ -45,10 +44,14 @@ Scoped labels are used to ensure at most a single label with the same scope is a
A scoped label must contain `/` in its name (not at either end of the name). The scope of a label is determined based on the **last** `/`, so for example the scope of label `scope/subscope/item` is `scope/subscope`.
## Applying labels
Labels can be applied to issues or pull requests on their pages by clicking on `Labels`. In the dropdown menu, labels can be added or removed. Of a set of scoped labels with the same scope, only one can be selected. Archived labels are disabled for addition.
![apply labels](../_images/user/labels/label-apply.png)
## Filtering by Label
Issue and pull request lists can be filtered by label. Selecting multiple labels shows issues and pull requests that have all selected labels assigned.
By holding alt to click the label, issues and pull requests with the chosen label are excluded from the list.
![list of labels](../_images/user/labels/label-apply.png)

View file

@ -38,7 +38,7 @@ Please consult the [enry][enry] or [linguist][linguist] documentation for more d
## Adjusting the language detection
Sometimes the programming language of a file is not recognized properly, or it is miscategorized. Forgejo provides a mechanism where the language detection can be told about the language of a file, and its category can be adjusted aswell. The same mechanism can also force a file to be considered for language statistics, regardless of its category - or the opposite, too: to tell Forgejo never to consider it.
Sometimes the programming language of a file is not recognized properly, or it is miscategorized. Forgejo provides a mechanism where the language detection can be told about the language of a file, and its category can be adjusted as well. The same mechanism can also force a file to be considered for language statistics, regardless of its category - or the opposite, too: to tell Forgejo never to consider it.
The way to do this is via a [`.gitattributes`][gitattributes] file. This file has a simple syntax where each line is made up of a pattern, followed by a space separated list of attributes. There are many attributes that git itself supports, but we're only going to talk about the custom attributes for language detection. All of these have a `linguist-` prefix, as that is where they originate from.

View file

@ -1,7 +1,7 @@
---
title: 'Automatically Linked References in Issues, Pull Requests and Commit Messages'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/linked-references.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/linked-references.en-us.md'
---
When an issue, pull request or comment is posted, the text description is parsed
@ -65,7 +65,7 @@ Example:
There are some restrictions in place:
- Code linked in private repositories will not be displayed if the current viewer has insufficent permissions.
- Code linked in private repositories will not be displayed if the current viewer has insufficient permissions.
- It can only ever be a permalink; means linking to files by a branch or tag will not result in a preview.
- There is a maximum amount of lines that will be rendered. By default this is 50.
- Only permalinks to the current instance will work.

View file

@ -1,7 +1,7 @@
---
title: 'Merge Message templates'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/merge-message-templates.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/merge-message-templates.en-us.md'
---
## File names
@ -37,4 +37,4 @@ You can use the following variables enclosed in `${}` inside these templates whi
When rebasing without a merge commit, `REBASE_TEMPLATE.md` modifies the message of the last commit. The following additional variables are available in this template:
- CommitTitle: Commit's title
- CommitBody: Commits's body text
- CommitBody: Commit's body text

View file

@ -1,11 +1,17 @@
---
title: 'OAuth2 provider'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/development/oauth2-provider.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/development/oauth2-provider.en-us.md'
---
Forgejo supports acting as an OAuth2 provider to allow third party applications to access its resources with the user's consent.
> **NOTE:** scoped tokens or personal access tokens are entirely different from OAuth2, see the [Access Token scope](../token-scope/) section for more information.
Forgejo can act as an instance wide OAuth2 provider. To achieve that, OAuth2 applications must be created in the `/admin/applications` page.
> **NOTE:** Third party applications obtaining a token for a user via such an application will have administrative rights. OAuth2 scopes are not yet implemented.
## Endpoints
| Endpoint | URL |
@ -25,10 +31,6 @@ At the moment Forgejo only supports the [**Authorization Code Grant**](https://t
To use the Authorization Code Grant as a third party application it is required to register a new application via the "Settings" (`/user/settings/applications`) section of the settings. To test or debug you can use the web-tool https://oauthdebugger.com/.
## Scoped Tokens
See the [Access Token scope](../token-scope/) section for more information.
## Client types
Forgejo supports both confidential and public client types, [as defined by RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).
@ -53,7 +55,7 @@ to authenticate on https://code.forgejo.org:
- [download the binary tarball](https://github.com/hickford/git-credential-oauth/releases/download/v0.11.0/git-credential-oauth_0.11.0_linux_amd64.tar.gz)
- extract the binary in `/usr/local/bin/git-credential-oauth`
- verify it is found with `git credential-oauth`
- add the following to `~/gitconfig` (note that `a4792ccc-144e-407e-86c9-5e7d8d9c3269` is a hardcoded value that is identical for all Forgejo instances)
- add the following to `~/.gitconfig` (note that `a4792ccc-144e-407e-86c9-5e7d8d9c3269` is a hardcoded value that is identical for all Forgejo instances)
```ini
[credential]
helper = cache --timeout 7200
@ -66,14 +68,53 @@ to authenticate on https://code.forgejo.org:
- `git clone https://code.forgejo.org/earl-warren/test`
- `git push` will open new page on the default browser, looking like this:
![git-credential-oauth OAuth2 grant page](../_images/user/oauth2-provider/oauth-git-credential-client.png)
- subsequent `git push` will re-use the token obtained from OAuth2 as long as it remains in the [git credential-cache](https://git-scm.com/docs/git-credential-cache) (i.e. 2h / 7200s)
- subsequent `git push` will reuse the token obtained from OAuth2 as long as it remains in the [git credential-cache](https://git-scm.com/docs/git-credential-cache) (i.e. 2h / 7200s)
> **NOTE:** Scopes are not implemented for OAuth2 tokens and they can be used to execute any actions on behalf the user, not just git related actions. Scoped applications tokens or SSH keys limited to interactions with the repository should be prefered in environments where security is a concern.
> **NOTE:** Scopes are not implemented for OAuth2 tokens and they can be used to execute any actions on behalf the user, not just git related actions. Scoped applications tokens or SSH keys limited to interactions with the repository should be preferred in environments where security is a concern.
It is possible for any user to manually register a new OAuth2 application in the `/user/settings/applications` page for the purpose of using a Git [credential helpers](https://git-scm.com/docs/gitcredentials#_custom_helpers) different from the pre-registered ones. In that case the `~/gitconfig` setting (`oauthClientId` etc.) needs to be adapted accrodingly
It is possible for any user to manually register a new OAuth2 application in the `/user/settings/applications` page for the purpose of using a Git [credential helpers](https://git-scm.com/docs/gitcredentials#_custom_helpers) different from the pre-registered ones. In that case the `~/.gitconfig` setting (`oauthClientId` etc.) needs to be adapted accordingly
## Examples
### Using Codeberg as an authentication source
In this example https://v7.next.forgejo.org will be configured to add the option to delegate user registration to https://codeberg.org.
![Login page with Codeberg authentication source](../_images/user/oauth2-provider/authsource-intro-login-page.png)
> **NOTE:** in the OAuth2 jargon, https://v7.next.forgejo.org is the OAuth2 client and Codeberg is the OAuth2 provider
- Choose an arbitrary but distinctive name for the OAuth2 provider: (e.g. **Codeberg**).
- Choose an existing Codeberg user to create the OAuth2 application. It does not need to be a user with elevated privileges. (e.g. **user-for-oauth-application**)
- On https://codeberg.org, login as **user-for-oauth-application**
- Visit https://codeberg.org/user/settings/applications and create a new OAuth2 application. There needs to be only one redirect URI, composed with the abitrary name that was chosen above: https://v7.next.forgejo.org/user/oauth2/Codeberg/callback.
![Create a new OAuth2 application](../_images/user/oauth2-provider/authsource-provider-create.png)
- When created, the OAuth2 application is given a **Client ID** and a **Client secret** that https://v7.next.forgejo.org will need to let https://codeberg.org know it is an authorized OAuth2 client.
![Client ID and secret of a new OAuth2 application](../_images/user/oauth2-provider/authsource-provider-show.png)
- On https://v7.next.forgejo.org, login as a user with admin privileges
- Create a new authentication source on https://v7.next.forgejo.org, the Forgejo instance that is going to act as the OAuth2 client, allowing its users to register using the account they have on https://codeberg.org.
- Visit https://v7.next.forgejo.org/admin/auths/new to create the authentication source with:
- **Authentication type:** OAuth2
- **Authentication name:** the abitrary name that was chosen above (e.g. **Codeberg**)
- **OAuth2 provider:** OpenID Connect
- **Client ID:** copy/pasted from the OAuth2 application created on Codebeg
- **Client Secret:** copy/pasted from the OAuth2 application created on Codebeg
- **Icon URL:** https://design.codeberg.org/logo-kit/icon.svg
- **OpenID Connect Auto Discovery URL:** https://codeberg.org/.well-known/openid-configuration
- Leave all other fields to their default values
![Create a new OAuth2 authentication soure](../_images/user/oauth2-provider/authsource-client-create.png)
- It will show in the list of authentication sources at https://v7.next.forgejo.org/admin/auths.
![List of OAuth2 authentication soure](../_images/user/oauth2-provider/authsource-client-list.png)
- On https://v7.next.forgejo.org, not logged in
- Visit https://v7.next.forgejo.org/user/login
![Login page with Codeberg authentication source](../_images/user/oauth2-provider/authsource-intro-login-page.png)
- Click on **Sign in with Codeberg** to be redirected to Codeberg and authorize https://v7.next.forgejo.org to obtain the details of your account (user name, email, etc.). If you are not already logged in Codeberg, you will need to before this authorization request is presented to you.
![Authorizing v7.next.forgejo.org](../_images/user/oauth2-provider/authsource-intro-login-confirm.png)
- Review the pre-filled information that will be used to create your account on https://v7.next.forgejo.org.
![Filling account information](../_images/user/oauth2-provider/authsource-intro-login-create.png)
- You are redirected to the home page of the newly created account.
![User home page](../_images/user/oauth2-provider/authsource-intro-login-home.png)
### Confidential client
**Note:** This example does not use PKCE.

View file

@ -1,7 +1,7 @@
---
title: 'Alpine Packages Repository'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/alpine.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/alpine.en-us.md'
---
Publish [Alpine](https://pkgs.alpinelinux.org/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Cargo Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/cargo.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/cargo.en-us.md'
---
Publish [Cargo](https://doc.rust-lang.org/stable/cargo/) packages for your user or organization.
@ -16,7 +16,7 @@ The following section describes how to create it.
## Index Repository
Cargo stores informations about the available packages in a package index stored in a git repository.
Cargo stores information about the available packages in a package index stored in a git repository.
In Forgejo this repository has the special name `_cargo-index`.
After a package was uploaded, its metadata is automatically written to the index.
The content of this repository should not be manually modified.

View file

@ -1,7 +1,7 @@
---
title: 'Chef Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/chef.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/chef.en-us.md'
---
Publish [Chef](https://chef.io/) cookbooks for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Composer Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/composer.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/composer.en-us.md'
---
Publish [Composer](https://getcomposer.org/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Conan Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/conan.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/conan.en-us.md'
---
Publish [Conan](https://conan.io/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Conda Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/conda.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/conda.en-us.md'
---
Publish [Conda](https://docs.conda.io/en/latest/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Container Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/container.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/container.en-us.md'
---
Publish [Open Container Initiative](https://opencontainers.org/) compliant images for your user or organization.
@ -37,7 +37,7 @@ docker build -t {registry}/{owner}/{image}:{tag} .
docker tag {some-existing-image}:{tag} {registry}/{owner}/{image}:{tag}
```
where your registry is the domain of your gitea instance (e.g. gitea.example.com).
where your registry is the domain of your forgejo instance (e.g. forgejo.example.com).
For example, these are all valid image names for the owner `testuser`:
`forgejo.example.com/testuser/myimage`

View file

@ -1,7 +1,7 @@
---
title: 'CRAN Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/cran.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/cran.en-us.md'
---
Publish [R](https://www.r-project.org/) packages to a [CRAN](https://cran.r-project.org/)-like registry for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Debian Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/debian.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/debian.en-us.md'
---
Publish [Debian](https://www.debian.org/distrib/packages) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Generic Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/generic.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/generic.en-us.md'
---
Publish generic files, like release binaries or other output, for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Go Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/go.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/go.en-us.md'
---
Publish Go packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Helm Chart Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/helm.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/helm.en-us.md'
---
Publish [Helm](https://helm.sh/) charts for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/storage.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/storage.en-us.md'
---
## Supported package managers
@ -96,12 +96,12 @@ Previously published packages are not deleted by disabling the Package Registry.
## Deduplication
The package registry has a build-in deduplication of uploaded blobs.
The package registry has a built-in deduplication of uploaded blobs.
If two identical files are uploaded only one blob is saved on the filesystem.
This ensures no space is wasted for duplicated files.
If two packages are uploaded with identical files, both packages will display the same size but on the filesystem they require only half of the size.
Whenever a package gets deleted only the references to the underlaying blobs are removed.
Whenever a package gets deleted only the references to the underlying blobs are removed.
The blobs get not removed at this moment, so they still require space on the filesystem.
When a new package gets uploaded the existing blobs may get referenced again.
@ -145,7 +145,7 @@ The patterns are case-insensitive which matches the behaviour of the package reg
### How the cleanup rules work
The cleanup rules are part of the [clean up job]../../admin/config-cheat-sheet/#cron---cleanup-expired-packages-croncleanup_packages) and run periodically.
The cleanup rules are part of the [clean up job](../../admin/config-cheat-sheet/#cron---cleanup-expired-packages-croncleanup_packages) and run periodically.
The cleanup rule:

View file

@ -1,7 +1,7 @@
---
title: 'Maven Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/maven.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/maven.en-us.md'
---
Publish [Maven](https://maven.apache.org) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'npm Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/npm.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/npm.en-us.md'
---
Publish [npm](https://www.npmjs.com/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'NuGet Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/nuget.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/nuget.en-us.md'
---
Publish [NuGet](https://www.nuget.org/) packages for your user or organization. The package registry supports the V2 and V3 API protocol and you can work with [NuGet Symbol Packages](https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg) too.

View file

@ -1,7 +1,7 @@
---
title: 'Pub Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/pub.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/pub.en-us.md'
---
Publish [Pub](https://dart.dev/guides/packages) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'PyPI Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/pypi.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/pypi.en-us.md'
---
Publish [PyPI](https://pypi.org/) packages for your user or organization.

View file

@ -1,7 +1,7 @@
---
title: 'RPM Package Registry'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/d3982bcd814bac93e3cbce1c7eb749b17e413fbd/docs/content/usage/packages/rpm.en-us.md'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/usage/packages/rpm.en-us.md'
---
Publish [RPM](https://rpm.org/) packages for your user or organization.

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