Beyond coding. We forge. https://forgejo.org
Find a file
Gusted be46795975
[CHORE] Support reproducible builds
This is a step towards making Forgejo's binaries (the one listed in the
release tab) reproducible.

In order to make the actual binary reproducible, we have to ensure that
the release workflow has the correct configuration to produce such
reproducible binaries. The release workflow currently uses the
Dockerfile to produce binaries, as this is one of the easiest ways to do
cross-compiling for Go binaries with CGO enabled (due to SQLite). In the
Dockerfile, two new arguments are being given to the build command.
`-trimpath` ensures that the workpath directory doesn't get included in
the binary; this means that file names (such as for panics) are
relative (to the workpath) and not absolute, which shouldn't impact
debugging. `-buildid=` is added to the linker flag; it sets the BuildID
of the Go linker to be empty; the `-buildid` hashes the input actions
and output content; these vary from build to build for unknown reasons,
but likely because of the involvement of temporary file names, this
doesn't have any effect on the behavior of the resulting binary.

The Makefile receives a new command, `reproduce-build#$VERSION` which
can be used by people to produce a reproducible Forgejo binary of a
particular release; it roughly does what the release workflow also does.
Build the Dockerfile and extract the Forgejo binary from it. This
doesn't allow to produce a reproducible version for every release, only
for those that include this patch, as it needs to call the makefile of
that version in order to make a reproducible binary.

There's one thing left to do: the Dockerfile pins the Go version to a
minor level and not to a patch level. This means that if a new Go patch
version is released, that will be used instead and will result in a
different binary that isn't bit to bit the same as the one that Forgejo
has released.
2024-08-19 17:31:57 +02:00
.devcontainer
.forgejo Update docker.io/bitnami/minio Docker tag to v2024.8.17 2024-08-18 00:02:17 +00:00
assets feat: upgrade F3 to v3.7.0 2024-08-18 19:39:20 +02:00
build
cmd
contrib
custom/conf
docker
models style: reenable switch check 2024-08-18 15:19:01 +02:00
modules revert: accidental change 2024-08-18 16:36:06 +02:00
options i18n: Improve clarity of confirmation email messages 2024-08-16 16:11:18 +02:00
public
release-notes
releases/images
routers style: change one argument switch to if 2024-08-18 16:20:26 +02:00
services Merge pull request 'feat: upgrade F3 to v3.7.0' (#5004) from earl-warren/forgejo:wip-f3 into forgejo 2024-08-18 19:30:15 +00:00
templates Merge pull request 'fix: add gap between branch dropdown and PR button' (#4971) from n0toose/gap-part-two into forgejo 2024-08-17 12:11:05 +00:00
tests Merge pull request 'test: fail on unhandled JS exceptions' (#4959) from solomonv/e2e-fail-on-errors into forgejo 2024-08-17 00:58:18 +00:00
tools
web_src [UI] Fix misalignment of authors for repo acctivity 2024-08-18 21:18:29 +02:00
.air.toml
.deadcode-out
.dockerignore
.editorconfig
.envrc
.eslintrc.yaml
.gitattributes
.gitignore
.gitmodules
.gitpod.yml
.golangci.yml style: reenable switch check 2024-08-18 15:19:01 +02:00
.ignore
.mailmap
.markdownlint.yaml
.npmrc
.release-notes-assistant.yaml
.spectral.yaml
.yamllint.yaml
BSDmakefile
build.go
CODEOWNERS
CONTRIBUTING.md
DCO
Dockerfile [CHORE] Support reproducible builds 2024-08-19 17:31:57 +02:00
Dockerfile.rootless
flake.lock
flake.nix
go.mod feat: upgrade F3 to v3.7.0 2024-08-18 19:39:20 +02:00
go.sum feat: upgrade F3 to v3.7.0 2024-08-18 19:39:20 +02:00
LICENSE
main.go
Makefile [CHORE] Support reproducible builds 2024-08-19 17:31:57 +02:00
package-lock.json Update dependency @playwright/test to v1.46.1 2024-08-17 00:02:44 +00:00
package.json Update dependency @playwright/test to v1.46.1 2024-08-17 00:02:44 +00:00
playwright.config.js
poetry.lock
poetry.toml
pyproject.toml
README.md
release-notes-assistant.sh
RELEASE-NOTES.md
renovate.json chore(renovate): bitnami/minio is now docker.io/bitnami/minio 2024-08-18 06:37:45 +02:00
stylelint.config.js
tailwind.config.js
vitest.config.js
webpack.config.js

Welcome to Forgejo

Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo (/for'd͡ʒe.jo/ inspired by forĝejo the Esperanto word for forge) has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality.

Forgejo was created in 2022 because we think that the project should be owned by an independent community. If you second that, then Forgejo is for you! Our promise: Independent Free/Libre Software forever!

What does Forgejo offer?

If you like any of the following, Forgejo is literally meant for you:

  • Lightweight: Forgejo can easily be hosted on nearly every machine. Running on a Raspberry? Small cloud instance? No problem!
  • Project management: Besides Git hosting, Forgejo offers issues, pull requests, wikis, kanban boards and much more to coordinate with your team.
  • Publishing: Have something to share? Use releases to host your software for download, or use the package registry to publish it for docker, npm and many other package managers.
  • Customizable: Want to change your look? Change some settings? There are many config switches to make Forgejo work exactly like you want.
  • Powerful: Organizations & team permissions, CI integration, Code Search, LDAP, OAuth and much more. If you have advanced needs, Forgejo has you covered.
  • Privacy: From update checker to default settings: Forgejo is built to be privacy first for you and your crew.
  • Federation: (WIP) We are actively working to connect software forges with each other through ActivityPub, and create a collaborative network of personal instances.

Learn more

Dive into the documentation, subscribe to releases and blog post on our website, find us on the Fediverse or hop into our Matrix room if you have any questions or want to get involved.

Get involved

If you are interested in making Forgejo better, either by reporting a bug or by changing the governance, please take a look at the contribution guide.