solves: 9204
## About the PR
In the original Makefile, the variables `GO_TEST_PACKAGES` and `MIGRATION_PACKAGES` have been evaluated always and for every target. See issue 9204
This Change moves the evaluation of these Variables into a dedicated new make-target. This target then is added as dependency only to the other targets, that require/access these variables at all, so targets that don't require the variables don't do an evaluation of them.
### Note on the new Makefile Dependencies
I'm using Order-Only Prerequisites in the `Makefile`because, its good habit to only impose the least force necessary. As we're only going for `.PHONY` targets here,
See: https://www.gnu.org/software/make/manual/make.html#Prerequisite-Types
- We need to ensure that the variable computation targets (compute-go-test-packages, compute-migration-packages) run before the targets that use those variables. This is purely about execution ordering - we need the variables to be defined before they're used.
- We don't need the timestamp-based rebuild logic that comes with normal dependencies. Normal dependencies say "if the dependency is newer than the target, rebuild the target." But we don't want the variable computation to trigger rebuilds - we only want it to ensure the variables are available.
- It's about minimal constraint - only imposing the constraints you actually need. Order-only prerequisites express our intent more precisely: we want sequencing without timestamp dependency. This makes the Makefile more semantically correct and future-proof.
Even though in this specific case (with PHONY targets) the practical difference is minimal, using order-only prerequisites is better engineering practice because it accurately represents the relationship we want between these targets.
## Checklist
The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).
### Tests
- I added test coverage for Go changes...
- [ ] in their respective `*_test.go` for unit tests.
- [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- [ ] in `web_src/js/*.test.js` if it can be unit tested.
- [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).
- [x] I tested the results of the affected targets and some other targets before and after the change:
- [x] `make help` -- before: slow, called git and downloaded -- after: fast, direct result
- [x] `make clean` -- before: slow, called git and downloaded -- after: fast, direct result
- [x] `make clean-all ` -- before: slow, called git and downloaded -- after: fast, direct result
- [x] `make frontend` -- before: called git and downloaded -- after: fast, frontend build succeeded
- [x] `make go-check` -- before: called git and downloaded -- after: faster, go check succeeded
- [x] `make generate-backend` -- before: called git and downloaded -- after: fast, backend generated successfully
- [x] `make static-executable` -- before: called git and downloaded -- after: fast, executable generated
- [x] `make build` -- before: called git and downloaded -- after: fast, build succeeded
- [x] 'test-backend' -- before: succeeded -- after succeeded.
- [x] 'test' -- before: succeeded -- after succeeded.
- [x] `migrations.individual.mysql.test' -- before: succeeded -- after succeeded.
- [x] 'test' -- before: succeeded -- after succeeded.
### Documentation
- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.
### Release notes
- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.
Co-authored-by: iQ <iq@in6-addr.net>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9208
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: iQ <iq@noreply.codeberg.org>
Co-committed-by: iQ <iq@noreply.codeberg.org>
Adds a new dropdown to the job logs, visible only when a job has been retried at least once:

When an older run attempt from the dropdown is selected, displays the older run's logs:

Context on implementation & design decisions:
- It is important that when a URL from an Action's log is shared, the person on the other side sees the exact same logs that were being viewed. For this reason, all log views are automatically redirected to a fully-qualified URL (including the *run*, *job*, and *attempt*), so that when they are shared there is a guarantee of stability in the viewed logs.
- Individual jobs can be rerun any number of times independent of other jobs in the same workflow. This means there isn't a "set" of related jobs that were executed at the same time, and this led me to remove the display of current status of jobs on the left-hand side of the view. There isn't a logical set of job statuses to display here.
Fixes#1043. Based upon @gmem's original work in #1416.
## Checklist
The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).
### Tests
- I added test coverage for Go changes...
- [x] in their respective `*_test.go` for unit tests.
- [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
- [x] in `web_src/js/*.test.js` if it can be unit tested.
- [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).
### Documentation
- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.
### Release notes
- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.
<!--start release-notes-assistant-->
## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- User Interface features
- [PR](https://codeberg.org/forgejo/forgejo/pulls/9017): <!--number 9017 --><!--line 0 --><!--description YWJpbGl0eSB0byB2aWV3IHByZXZpb3VzIGxvZ3MgZm9yIEFjdGlvbnMgcnVucyB0aGF0IGhhdmUgYmVlbiByZXRyaWVk-->ability to view previous logs for Actions runs that have been retried<!--description-->
<!--end release-notes-assistant-->
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9017
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net>
Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
Print out a list of all unused msgids
Handle Go files that make calls to translation.
Handle `models/unit/unit.go`, which stores msgids in `$Unit.NameKey`
Handle .locale.Tr in templates
Handle simple dynamically constructed `Tr("msgid-prefix." + SomeFunctionCall())`.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8736
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Ellen Εμιλία Άννα Zscheile <fogti+devel@ytrizja.de>
Co-committed-by: Ellen Εμιλία Άννα Zscheile <fogti+devel@ytrizja.de>
- run all unit tests and integration tests in sequence in the same job
- upload the coverage data as an artifact to the run
- only run via dispatch because it is very long
- arguments are used to select which unit or integration tests to focus on
Refs https://go.dev/blog/integration-test-coverage
### Testing
- Run this workflow via workflow_dispatch (see https://codeberg.org/forgejo-integration/forgejo/actions/runs/11889)
- Download the coverage information (see https://codeberg.org/forgejo-integration/forgejo/actions/runs/11889/artifacts/coverage)
- Download the coverage information from an end-to-end cascade test (see https://code.forgejo.org/forgejo/end-to-end/actions/runs/3961)
- Unzip them in a the `coverage/data` sub-directory at the root of the Forgejo source tree
```sh
$ ls coverage/data
actions coverage-actions.zip coverage-federation.zip coverage-tests.zip coverage-upgrade.zip federation tests upgrade
```
- Display the coverage percentage
```
$ make coverage-show-percentage
...
forgejo.org/services/wiki/wiki_path.go:96: WebPathToGitPath 81.8%
forgejo.org/services/wiki/wiki_path.go:113: GitPathToWebPath 90.0%
forgejo.org/services/wiki/wiki_path.go:129: WebPathToUserTitle 71.4%
forgejo.org/services/wiki/wiki_path.go:140: WebPathToURLPath 100.0%
forgejo.org/services/wiki/wiki_path.go:144: WebPathFromRequest 100.0%
forgejo.org/services/wiki/wiki_path.go:151: UserTitleToWebPath 80.0%
forgejo.org/services/wiki/wiki_path.go:163: ToWikiPageMetaData 100.0%
forgejo.org/tests/integration/api_repo_file_helpers.go:18: createFileInBranch 100.0%
...
total: (statements) 63.9%
```
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9004
Reviewed-by: jerger <jerger@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
Also fix the existing instructions that were missing a `-e` flag.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8895
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
Disable many unneeded variants in fomantic's config. Reduces the amount of CSS is generated.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8583
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
- `lint-go-gopls` runs `gopls check` over Forgejo's codebase. It report errors found by the diagnosis tool of gopls, most of it are errors that can be catched by existing linters. It is not used in the CI, remove it.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8205
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
- Revert "fix: use zstd.WithLowerEncoderMem for generate-bindata
- Re-use bindata files when available instead of ignoring them in Dockerfile
- Add missing modules/migration/bindata.go to go sources in the Makefile
Closesforgejo/forgejo#8165
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [go.uber.org/mock/mockgen](https://github.com/uber/mock) | patch | `v0.5.1` -> `v0.5.2` |
---
### Release Notes
<details>
<summary>uber/mock (go.uber.org/mock/mockgen)</summary>
### [`v0.5.2`](https://github.com/uber-go/mock/releases/tag/v0.5.2)
[Compare Source](https://github.com/uber/mock/compare/v0.5.1...v0.5.2)
#### 0.5.2 (28 Apr 2025)
##### Fixed
- [#​248][]: Fixed an issue with type aliases not being included in generated code correctly.
[#​248]: https://github.com/uber-go/mock/pull/248
</details>
---
### Configuration
📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC40MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNDAuMCIsInRhcmdldEJyYW5jaCI6ImZvcmdlam8iLCJsYWJlbHMiOlsiZGVwZW5kZW5jeS11cGdyYWRlIiwidGVzdC9ub3QtbmVlZGVkIl19-->
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8065
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Package not used
- closes#8053
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8058
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
- bump renovate to v40.40.0
- remove v7 branch from renovate
- disable transitive updates on stable branches (security updates will /should still open automatically)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8050
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
urfave/cli v2 will eventually become unmaintained, switch over to v3 which is the latest supported version.
Note: the `docs` command would be a lot of work to restore with v3 ([the package is still in alpha](https://github.com/urfave/cli-docs)) An alternative to avoid a breaking change would be to not upgrade from v2 to v3 for that reason alone.
Note: these commits were cherry-picked from https://code.forgejo.org/forgefriends/forgefriends
Note: it is best reviewed side by side with no display of whitespace changes (there are a lot of those when converting vars to func).
- a few functional changes were necessary and are noted in context in the file changes tab
- https://cli.urfave.org/migrate-v2-to-v3/ upgrade instructions were followed in the most minimal way possible
- upgrade gof3 to v3.10.8 which includes and upgrade from urfave/cli v2 to urfave/cli v3
- upgrade gitlab.com/gitlab-org/api/client-go v0.129.0 because it is an indirect dependency of gof3 and requires a change because of a deprecated field that otherwise triggers a lint error but nothing else otherwise
- verified that the [script](https://codeberg.org/forgejo/docs/src/branch/next/scripts/cli-docs.sh) that generates the [CLI documentation](https://codeberg.org/forgejo/docs/src/branch/next/scripts/cli-docs.sh) still works. There are cosmetic differences and the **help** subcommand is no longer advertised (although it is still supported) but the `--help` option is advertised as expected so it is fine.
- end-to-end tests [passed](https://code.forgejo.org/forgejo/end-to-end/pulls/667) (they use the Forgejo CLI to some extent)
## Checklist
The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).
### Tests
- I added test coverage for Go changes...
- [ ] in their respective `*_test.go` for unit tests.
- [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
- [ ] in `web_src/js/*.test.js` if it can be unit tested.
- [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).
### Documentation
- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.
### Release notes
- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [x] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.
<!--start release-notes-assistant-->
## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Breaking features
- [PR](https://codeberg.org/forgejo/forgejo/pulls/8035): <!--number 8035 --><!--line 0 --><!--description VGhlIGBmb3JnZWpvIGRvY3NgIGNvbW1hbmQgaXMgZGVwcmVjYXRlZCBhbmQgQ0xJIGVycm9ycyBhcmUgbm93IGRpc3BsYXllZCBvbiBzdGRlcnIgaW5zdGVhZCBvZiBzdGRvdXQuIFRoZXNlIGJyZWFraW5nIGNoYW5nZXMgaGFwcGVuZWQgYmVjYXVzZSB0aGUgcGFja2FnZSB1c2VkIHRvIHBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHdhcyBbdXBncmFkZWQgZnJvbSB2MiB0byB2M10oaHR0cHM6Ly9jbGkudXJmYXZlLm9yZy9taWdyYXRlLXYyLXRvLXYzLykuIEEgW3NlcGFyYXRlIHByb2plY3Qgd2FzIGluaXRpYXRlZF0oaHR0cHM6Ly9naXRodWIuY29tL3VyZmF2ZS9jbGktZG9jcykgdG8gcmUtaW1wbGVtZW50IHRoZSBgZG9jc2AgY29tbWFuZCwgYnV0IGl0IGlzIG5vdCB5ZXQgcHJvZHVjdGlvbiByZWFkeS4=-->The `forgejo docs` command is deprecated and CLI errors are now displayed on stderr instead of stdout. These breaking changes happened because the package used to parse the command line arguments was [upgraded from v2 to v3](https://cli.urfave.org/migrate-v2-to-v3/). A [separate project was initiated](https://github.com/urfave/cli-docs) to re-implement the `docs` command, but it is not yet production ready.<!--description-->
<!--end release-notes-assistant-->
Co-authored-by: limiting-factor <limiting-factor@posteo.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8035
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
If the environment variable FORGEJO_VERSION is set and already contains $(GITEA_COMPATIBILITY), it must not be append again.
This particular use case occurs when a pull request is tested in https://code.forgejo.org/forgejo/end-to-end. It sets the version at
796a32d6c1/lib/build.sh (L39)
which is drawn from a file generated at
6c6035bc49/.forgejo/cascading-pr-end-to-end (L33)
The version is generated from a checkout of the PR which leads to
something like:
```
$ make show-version-full
12.0.0-dev-307-6c6035bc49+gitea-1.22.0
```
## Testing
```
git clone https://codeberg.org/forgejo/forgejo
cd forgejo
export FORGEJO_VERSION=$(make show-version-full)
test "$FORGEJO_VERSION" = "$(make show-version-full)" || echo FAIL!
```
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7933
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Antonin Delpeuch <wetneb@noreply.codeberg.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
Remove linters from the repository that are not used. This also removes the Python setup as it was only used for those linters.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7680
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Lucas Dohmen <lucas@dohmen.io>
Co-committed-by: Lucas Dohmen <lucas@dohmen.io>
This set of commits fixes multiple issues with both make scripts. It started with #7358 and digging into it I found more problems.
@Gusted [commented](https://codeberg.org/forgejo/forgejo/issues/7358#issuecomment-3145145):
> I do think the place where verify-version gets called should likely be backend instead and the error should likely include extra details on how to fix the error, but that can be discussed in the PR.
I think it should be closest to where `$(FORGEJO_VERSION)` is used and that's part of `$(LDFLAGS)`, so I added it where the latter is used.
When it comes to wording feel free to make suggestions.
**I haven't tested docker builds.**
I believe the most optimal way to do it is to create POSIX-compliant shell script where all those conditionals and variable expansion may be placed, and then that script should generate POSIX-compliant Makefile.
# Testing
## BSDMakefile
Should be launched from a BSD OS. You need to add `-f BSDMakefile` on OpenBSD.
* `make show-version-major show-version-minor`
Should display two lines with version numbers.
* `make TAGS=bindata`
Should launch the building process once.
## Makefile
* `make TAGS=bindata`
Should do the same as `make build`.
* `make `*target*
Should build given target like it used to.
* Copy everything except *.git* and *VERSION* to a separate directory.
`make TAGS=bindata`
Should fail with error “Could not determine FORGEJO_VERSION...”
* Copy everything except *.git* and *VERSION* to a separate directory.
`make clean`
Should execute correctly.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7455
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Matt Latusek <matlib@matlibhax.com>
Co-committed-by: Matt Latusek <matlib@matlibhax.com>
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [github.com/golangci/golangci-lint/v2/cmd/golangci-lint](https://github.com/golangci/golangci-lint) | patch | `v2.1.1` -> `v2.1.2` |
---
### Release Notes
<details>
<summary>golangci/golangci-lint (github.com/golangci/golangci-lint/v2/cmd/golangci-lint)</summary>
### [`v2.1.2`](https://github.com/golangci/golangci-lint/blob/HEAD/CHANGELOG.md#v212)
[Compare Source](https://github.com/golangci/golangci-lint/compare/v2.1.1...v2.1.2)
1. Linters bug fixes
- `exptostd`: from 0.4.2 to 0.4.3
- `gofumpt`: from 0.7.0 to 0.8.0
- `protogetter`: from 0.3.13 to 0.3.15
- `usetesting`: from 0.4.2 to 0.4.3
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "* 0-3 * * *" (UTC), Automerge - "* 0-3 * * *" (UTC).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNDAuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI0MC4xIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7552
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>