The code deployed to Codeberg. If you want to deploy Forgejo yourself or work on the code, check out: https://codeberg.org/forgejo/forgejo
  • Go 77.3%
  • go-html-template 10.9%
  • Roff 4.3%
  • JavaScript 2.7%
  • CSS 2%
  • Other 2.6%
Mathieu Fenniak 5e0b41b3cb
CB/bp: fix: allow Actions runner to recover tasks lost during fetching from intermittent errors (#11401)
Probably fixes (or improves, at least) https://code.forgejo.org/forgejo/runner/issues/1391, paired with the runner implementation https://code.forgejo.org/forgejo/runner/pulls/1393.

When the FetchTask() API is invoked to create a task, unpreventable environmental errors may occur; for example, network disconnects and timeouts. It's possible that these errors occur after the server-side has assigned a task to the runner during the API call, in which case the error would cause that task to be lost between the two systems -- the server will think it's assigned to the runner, and the runner never received it.  This can cause jobs to appear stuck at "Set up job".

The solution implemented here is idempotency in the FetchTask() API call, which means that the "same" FetchTask() API call is expected to return the same values. Specifically, the runner creates a unique identifier which is transmitted to the server as a header `x-runner-request-key` with each FetchTask() invocation which defines the sameness of the call, and the runner retains the value until the API call receives a successful response. The server implementation returns the same tasks back if a second (or Nth) call is received with the same `x-runner-request-key` header.  In order to accomplish this is records the `x-runner-request-key` value that is used with each request that assigns tasks.

As a complication, the Forgejo server is unable to return the same `${{ secrets.forgejo_token }}` for the task because the server stores that value in a one-way hash in the database.  To resolve this, the server regenerates the token when retrieving tasks for a second time.

Reviewed-on: forgejo/forgejo#11401
Reviewed-by: Andreas Ahlenstorf <aahlenst@noreply.codeberg.org>
Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net>
Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>

(cherry picked from commit 0ae62353862472ebd6bb2bdb44a8cc8354e89c27)
2026-02-27 03:00:04 +01:00
.devcontainer Update Node.js to v24 (forgejo) (#10091) 2025-11-12 19:41:48 +01:00
.forgejo Update https://data.forgejo.org/forgejo/forgejo-build-publish action to v5.5.1 (v14.0/forgejo) (#10983) 2026-01-22 11:36:45 +01:00
assets [v14.0/forgejo] fix: migrations/github: Wait & retry when primary rate limit is hit (#11054) 2026-01-26 20:05:04 +01:00
build feat(issue-search): support query syntax (#9109) 2025-11-19 16:05:42 +01:00
cmd CB/fix: continue on error for avatar strip exif 2026-02-25 01:34:59 +01:00
contrib CB/contrib: Change default label set 2026-02-25 01:03:22 +01:00
custom/conf [v14.0/forgejo] feat: enable SQLite WAL by default (#11069) 2026-01-27 16:57:36 +01:00
docker bugfix check for alternate ssh host certificate location (#34146) 2025-04-14 15:53:35 +02:00
models CB/bp: fix: allow Actions runner to recover tasks lost during fetching from intermittent errors (#11401) 2026-02-27 03:00:04 +01:00
modules CB/feat: allow disabling working on a queue 2026-02-25 01:03:24 +01:00
options CB/contrib: Change default label set 2026-02-25 01:03:22 +01:00
public CB/ui: Codeberg Custom footer 2026-02-25 01:03:22 +01:00
release-notes [v14.0/forgejo]: chore(release): delete previously announced release notes (#10835) 2026-01-14 17:06:35 +01:00
release-notes-published chore(release-notes): Forgejo v11.0.8 (#10201) 2025-11-21 12:02:51 +01:00
releases/images [DOCS] RELEASE-NOTES.md 2024-02-05 14:44:32 +01:00
routers CB/bp: fix: allow Actions runner to recover tasks lost during fetching from intermittent errors (#11401) 2026-02-27 03:00:04 +01:00
services CB/bp: fix: allow Actions runner to recover tasks lost during fetching from intermittent errors (#11401) 2026-02-27 03:00:04 +01:00
templates CB/fix: patch out retry button 2026-02-27 02:46:02 +01:00
tests CB/bp: feat: filter action runs by Git reference (#11013) 2026-02-25 01:03:24 +01:00
tools chore: remove gopls in Makefile (#8205) 2025-06-17 08:28:26 +02:00
web_src CB/ui: Update link color in homepage about box (!125) 2026-02-25 01:03:24 +01:00
.air.toml chore: rename 'migrations' to 'gitea_migrations' 2025-10-14 14:40:49 -06:00
.deadcode-out [v14.0/forgejo] fix: decrease watch count when blocking user (#11060) 2026-01-27 13:57:57 +01:00
.dockerignore fix: Dockerfile should re-use bindata files when possible 2025-06-13 14:00:57 +02:00
.editorconfig Cover go.mod and go.sum in .editorconfig (#33960) 2025-04-01 02:28:02 +02:00
.envrc.example Make direnv optional to let developers use their own direnv configuration 2024-11-06 20:34:49 +01:00
.gitattributes Add interface{} to any replacement to make fmt, exclude *.pb.go (#30461) 2024-04-15 20:01:36 +02:00
.gitignore feat(build): improve lint-locale-usage further (#8736) 2025-08-27 23:47:34 +02:00
.gitmodules cleanup(tests): remove manual testing submodule 2024-04-21 10:13:51 +02:00
.gitpod.yml Remove sqlite-viewer and using database client (#31223) 2024-06-09 11:13:39 +02:00
.golangci.yml chore(lint): Add exceptions for dbfs_model and unittest (#10275) 2025-12-09 14:34:06 +01:00
.ignore Add /options/license and /options/gitignore to .ignore (#30219) 2024-04-07 15:40:31 +02:00
.mailmap Add .mailmap with aliases for Unknwon (github.com/Unknwon) 2024-08-14 08:26:16 -04:00
.markdownlint.yaml Update JS dependencies (#28537) 2023-12-30 05:29:03 +00:00
.node-version Update Node.js to v24.12.0 (forgejo) (#10400) 2025-12-18 15:19:32 +01:00
.npmrc Upgrade to npm lockfile v3 and explicitely set it (#23561) 2023-03-18 19:38:10 +01:00
.release-notes-assistant.yaml chore: release-notes-assistant: there may be three supported releases (#9480) 2025-09-30 14:20:22 +02:00
.spectral.yaml Add spectral linter for Swagger (#20321) 2022-07-11 18:07:16 -05:00
.yamllint.yaml fully replace drone with actions (#27556) 2023-10-11 06:39:32 +00:00
BSDmakefile feat: Makefile & BSDmakefile changes (#7455) 2025-04-27 10:04:32 +00:00
CODEOWNERS add myself to CODEOWNERS for the API (#10160) 2025-11-18 23:19:39 +01:00
CONTRIBUTING.md docs: replace Developer Guide link with the new Contributor Guide one. 2024-08-26 13:22:39 +03:00
DCO Remove address from DCO (#22595) 2023-01-24 18:52:38 +00:00
Dockerfile Update data.forgejo.org/oci/alpine Docker tag to v3.23 (forgejo) (#10326) 2025-12-18 15:21:39 +01:00
Dockerfile.rootless Update data.forgejo.org/oci/alpine Docker tag to v3.23 (forgejo) (#10326) 2025-12-18 15:21:39 +01:00
eslint.config.mjs feat(ui): replace Monaco with CodeMirror (#10559) (#10697) 2026-01-05 06:26:42 +01:00
flake.lock chore: bump nixpkgs in flake.lock (#10128) 2025-11-16 01:18:26 +01:00
flake.nix refactor: Simplify flake.nix (#9805) 2025-10-22 19:09:11 +02:00
go.mod CB/feat: better metrics 2026-02-25 01:03:24 +01:00
go.sum CB/feat: better metrics 2026-02-25 01:03:24 +01:00
LICENSE Forgejo v9.0 is GPLv3+ 2024-08-22 09:09:29 +02:00
main.go fix: do not mix urfave v2 with urfave v3 (#8168) 2025-06-12 15:38:03 +02:00
Makefile CB/fix: Drop forgejo Makefile dependency 2026-02-25 01:03:23 +01:00
manifest.scm Add a GNU Guix manifest (#8038) 2025-06-03 08:08:17 +02:00
package-lock.json Update dependency webpack to v5.104.1 [SECURITY] (v14.0/forgejo) (#11398) 2026-02-22 09:13:22 +01:00
package.json Update dependency webpack to v5.104.1 [SECURITY] (v14.0/forgejo) (#11398) 2026-02-22 09:13:22 +01:00
playwright.config.ts chore: remove webkit and mobile safari from playwright (#10103) 2025-11-13 17:23:08 +01:00
README.md CB/meta: Improve custom theme explanation in README (!123) 2026-02-25 01:03:24 +01:00
release-notes-assistant.sh chore: improve the wording of the "not worth a release note" category (#8542) 2025-07-18 07:19:15 +02:00
RELEASE-NOTES.md chore(release-notes): fix release notes of chroma update in v8.0.0 2025-10-05 17:10:38 +05:00
renovate.json feat(ui): replace Monaco with CodeMirror (#10559) (#10697) 2026-01-05 06:26:42 +01:00
shell.nix chore: use interactive sqlite via nix (#10439) 2025-12-17 13:20:33 +01:00
stylelint.config.js Merge pull request 'Port "Enable declaration-block-no-redundant-longhand-properties (#30950)' (#3769) from beowulf/gitea-port-pull-30950 into forgejo 2024-05-14 22:23:54 +00:00
tailwind.config.js fix: Do not scan all Go files for tailwind classes 2024-08-24 15:45:50 +02:00
tsconfig.json feat(ui): replace Monaco with CodeMirror (#10559) (#10697) 2026-01-05 06:26:42 +01:00
vitest.config.ts feat(ui): replace Monaco with CodeMirror (#10559) (#10697) 2026-01-05 06:26:42 +01:00
webpack.config.js CB/ui: Landingpage renovation (!35) 2026-02-25 01:03:22 +01:00

Forgejo (Codeberg)

Codeberg's fork of Forgejo, a self-hosted lightweight software forge.

Some changes made to Forgejo's source code are:

  • Codeberg-specific themes
  • Codeberg's custom landing page
  • Codeberg's custom footer
  • Various optimizations necessary for running a large instance
  • Dirty hacks that we needed to deploy as soon as possible

Some of our patches may be helpful if you wish to operate a large Forgejo instance. However, this repository as a whole contains a custom version of Forgejo that is explicitly not intended for private use.

Codeberg and Forgejo work together, but, as projects, they remain separate. For more information about Forgejo and its relationship with Codeberg, take a look at Forgejo's FAQ.

Reporting Issues

If you wish to report an issue for the changes that Codeberg has made or are not sure where you should open an issue for a service hosted by Codeberg, please create an issue on Codeberg/Community.

Additionally, Forgejo maintains its own Issue Tracker for bug reports and feature requests.

Hosting

If you wish to host Forgejo on your own, please visit forgejo.org.

You can find some other repositories that help us operate codeberg.org in the Codeberg-Infrastructure organisation.

Our instance's Forgejo configuration files can be found here: Codeberg-Infrastructure/build-deploy-forgejo

Tip

The configuration files include the settings required to enable the Codeberg-specific Forgejo themes, i.e. codeberg-auto, codeberg-light, codeberg-dark in your local Forgejo instance.

Contributing

We follow the upstream Forgejo tree and most of the decisions that they make for everyone else.

If you want to send a patch to codeberg.org, the best way to do that is probably sending a patch to Forgejo.

Branding

Codeberg has a set of design-related guidelines, which can be found here.

Reporting Vulnerabilities

See security.txt