Merge branch 'next' into reorganize-actions-docs

This commit is contained in:
Kwonunn 2025-04-12 13:26:18 +00:00
commit c6be8a2e3e
24 changed files with 784 additions and 601 deletions

View file

@ -60,7 +60,7 @@ NAME:
forgejo forgejo-cli - Forgejo CLI
USAGE:
forgejo forgejo-cli command [command options]
forgejo forgejo-cli [command options]
COMMANDS:
actions Commands for managing Forgejo Actions
@ -78,7 +78,7 @@ NAME:
forgejo forgejo-cli actions - Commands for managing Forgejo Actions
USAGE:
forgejo forgejo-cli actions command [command options]
forgejo forgejo-cli actions [command options]
COMMANDS:
generate-runner-token Generate a new token for a runner to use to register with the server
@ -145,7 +145,7 @@ NAME:
forgejo forgejo-cli f3 - F3
USAGE:
forgejo forgejo-cli f3 command [command options]
forgejo forgejo-cli f3 [command options]
COMMANDS:
mirror Mirror
@ -162,7 +162,7 @@ NAME:
forgejo web - Start the Forgejo web server
USAGE:
forgejo web command [command options]
forgejo web [command options]
DESCRIPTION:
The Forgejo web server is the only thing you need to run,
@ -190,7 +190,7 @@ NAME:
forgejo dump - Dump Forgejo files and database
USAGE:
forgejo dump command [command options]
forgejo dump [command options]
DESCRIPTION:
Dump compresses all related files and database into zip file.
@ -207,7 +207,7 @@ OPTIONS:
--file value, -f value Name of the dump file which will be created. Supply '-' for stdout. See type for available types. (default: "forgejo-dump-<timestamp>.zip")
--verbose, -V Show process details (default: false)
--quiet, -q Only display warnings and errors (default: false)
--tempdir value, -t value Temporary dir path (default: "/tmp")
--tempdir value, -t value Temporary dir path
--database value, -d value Specify the database SQL syntax: sqlite3, mysql, postgres
--skip-repository, -R Skip repositories (default: false)
--skip-log, -L Skip logs (default: false)
@ -227,7 +227,7 @@ NAME:
forgejo admin - Perform common administrative operations
USAGE:
forgejo admin command [command options]
forgejo admin [command options]
COMMANDS:
user Modify users
@ -251,7 +251,7 @@ NAME:
forgejo admin user - Modify users
USAGE:
forgejo admin user command [command options]
forgejo admin user [command options]
COMMANDS:
create Create a new user in database
@ -276,7 +276,7 @@ NAME:
forgejo admin user create - Create a new user in database
USAGE:
forgejo admin user create command [command options]
forgejo admin user create [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -305,7 +305,7 @@ NAME:
forgejo admin user list - List users
USAGE:
forgejo admin user list command [command options]
forgejo admin user list [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -325,7 +325,7 @@ NAME:
forgejo admin user change-password - Change a user's password
USAGE:
forgejo admin user change-password command [command options]
forgejo admin user change-password [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -347,7 +347,7 @@ NAME:
forgejo admin user delete - Delete specific user by id, name or email
USAGE:
forgejo admin user delete command [command options]
forgejo admin user delete [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -370,7 +370,7 @@ NAME:
forgejo admin user generate-access-token - Generate an access token for a specific user
USAGE:
forgejo admin user generate-access-token command [command options]
forgejo admin user generate-access-token [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -393,7 +393,7 @@ NAME:
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]
forgejo admin user must-change-password [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -415,7 +415,7 @@ NAME:
forgejo admin repo-sync-releases - Synchronize repository releases with tags
USAGE:
forgejo admin repo-sync-releases command [command options]
forgejo admin repo-sync-releases [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -434,7 +434,7 @@ NAME:
forgejo admin regenerate - Regenerate specific files
USAGE:
forgejo admin regenerate command [command options]
forgejo admin regenerate [command options]
COMMANDS:
hooks Regenerate git-hooks
@ -455,7 +455,7 @@ NAME:
forgejo admin auth - Modify external auth providers
USAGE:
forgejo admin auth command [command options]
forgejo admin auth [command options]
COMMANDS:
add-oauth Add new Oauth authentication source
@ -484,7 +484,7 @@ NAME:
forgejo admin auth add-oauth - Add new Oauth authentication source
USAGE:
forgejo admin auth add-oauth command [command options]
forgejo admin auth add-oauth [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -524,7 +524,7 @@ NAME:
forgejo admin auth update-oauth - Update existing Oauth authentication source
USAGE:
forgejo admin auth update-oauth command [command options]
forgejo admin auth update-oauth [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -565,7 +565,7 @@ NAME:
forgejo admin auth add-ldap - Add new LDAP (via Bind DN) authentication source
USAGE:
forgejo admin auth add-ldap command [command options]
forgejo admin auth add-ldap [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -609,7 +609,7 @@ NAME:
forgejo admin auth update-ldap - Update existing LDAP (via Bind DN) authentication source
USAGE:
forgejo admin auth update-ldap command [command options]
forgejo admin auth update-ldap [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -654,7 +654,7 @@ NAME:
forgejo admin auth add-ldap-simple - Add new LDAP (simple auth) authentication source
USAGE:
forgejo admin auth add-ldap-simple command [command options]
forgejo admin auth add-ldap-simple [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -693,7 +693,7 @@ NAME:
forgejo admin auth update-ldap-simple - Update existing LDAP (simple auth) authentication source
USAGE:
forgejo admin auth update-ldap-simple command [command options]
forgejo admin auth update-ldap-simple [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -733,7 +733,7 @@ NAME:
forgejo admin auth add-smtp - Add new SMTP authentication source
USAGE:
forgejo admin auth add-smtp command [command options]
forgejo admin auth add-smtp [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -763,7 +763,7 @@ NAME:
forgejo admin auth update-smtp - Update existing SMTP authentication source
USAGE:
forgejo admin auth update-smtp command [command options]
forgejo admin auth update-smtp [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -794,7 +794,7 @@ NAME:
forgejo admin auth list - List auth sources
USAGE:
forgejo admin auth list command [command options]
forgejo admin auth list [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -818,7 +818,7 @@ NAME:
forgejo admin auth delete - Delete specific auth source
USAGE:
forgejo admin auth delete command [command options]
forgejo admin auth delete [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -838,7 +838,7 @@ NAME:
forgejo admin sendmail - Send a message to all users
USAGE:
forgejo admin sendmail command [command options]
forgejo admin sendmail [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -860,7 +860,7 @@ NAME:
forgejo migrate - Migrate the database
USAGE:
forgejo migrate command [command options]
forgejo migrate [command options]
DESCRIPTION:
This is a command for migrating the database, so that you can run 'forgejo admin user create' before starting the server.
@ -882,7 +882,7 @@ NAME:
forgejo keys - (internal) Should only be called by SSH server
USAGE:
forgejo keys command [command options]
forgejo keys [command options]
DESCRIPTION:
Queries the Forgejo database to get the authorized command for a given ssh key fingerprint
@ -908,7 +908,7 @@ NAME:
forgejo doctor - Diagnose and optionally fix problems, convert or re-create database tables
USAGE:
forgejo doctor command [command options]
forgejo doctor [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.
@ -933,7 +933,7 @@ NAME:
forgejo doctor check - Diagnose and optionally fix problems
USAGE:
forgejo doctor check command [command options]
forgejo doctor check [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.
@ -962,7 +962,7 @@ NAME:
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 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.
@ -989,7 +989,7 @@ NAME:
forgejo doctor convert - Convert the database
USAGE:
forgejo doctor convert command [command options]
forgejo doctor convert [command options]
DESCRIPTION:
A command to convert an existing MySQL database from utf8 to utf8mb4
@ -1011,7 +1011,7 @@ NAME:
forgejo manager - Manage the running forgejo process
USAGE:
forgejo manager command [command options]
forgejo manager [command options]
DESCRIPTION:
This is a command for managing the running forgejo process
@ -1039,7 +1039,7 @@ NAME:
forgejo manager shutdown - Gracefully shutdown the running process
USAGE:
forgejo manager shutdown command [command options]
forgejo manager shutdown [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1059,7 +1059,7 @@ NAME:
forgejo manager restart - Gracefully restart the running process - (not implemented for windows servers)
USAGE:
forgejo manager restart command [command options]
forgejo manager restart [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1079,7 +1079,7 @@ NAME:
forgejo manager reload-templates - Reload template files in the running process
USAGE:
forgejo manager reload-templates command [command options]
forgejo manager reload-templates [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1099,7 +1099,7 @@ NAME:
forgejo manager flush-queues - Flush queues in the running process
USAGE:
forgejo manager flush-queues command [command options]
forgejo manager flush-queues [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1121,7 +1121,7 @@ NAME:
forgejo manager logging - Adjust logging commands
USAGE:
forgejo manager logging command [command options]
forgejo manager logging [command options]
COMMANDS:
pause Pause logging (Forgejo will buffer logs up to a certain point and will drop them after that point)
@ -1146,7 +1146,7 @@ NAME:
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]
forgejo manager logging pause [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1166,7 +1166,7 @@ NAME:
forgejo manager logging resume - Resume logging
USAGE:
forgejo manager logging resume command [command options]
forgejo manager logging resume [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1186,7 +1186,7 @@ NAME:
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]
forgejo manager logging release-and-reopen [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1206,7 +1206,7 @@ NAME:
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 options] [name] Name of logger to remove
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1227,7 +1227,7 @@ NAME:
forgejo manager logging add - Add a logger
USAGE:
forgejo manager logging add command [command options]
forgejo manager logging add [command options]
COMMANDS:
file Add a file logger
@ -1248,7 +1248,7 @@ NAME:
forgejo manager logging add file - Add a file logger
USAGE:
forgejo manager logging add file command [command options]
forgejo manager logging add file [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1283,7 +1283,7 @@ NAME:
forgejo manager logging add conn - Add a net conn logger
USAGE:
forgejo manager logging add conn command [command options]
forgejo manager logging add conn [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1315,7 +1315,7 @@ NAME:
forgejo manager logging log-sql - Set LogSQL
USAGE:
forgejo manager logging log-sql command [command options]
forgejo manager logging log-sql [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1336,7 +1336,7 @@ NAME:
forgejo manager processes - Display running processes within the current process
USAGE:
forgejo manager processes command [command options]
forgejo manager processes [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1361,7 +1361,7 @@ NAME:
forgejo embedded - Extract embedded resources
USAGE:
forgejo embedded command [command options]
forgejo embedded [command options]
DESCRIPTION:
A command for extracting embedded resources, like templates and images
@ -1386,7 +1386,7 @@ NAME:
forgejo embedded list - List files matching the given pattern
USAGE:
forgejo embedded list command [command options]
forgejo embedded list [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1406,7 +1406,7 @@ NAME:
forgejo embedded view - View a file matching the given pattern
USAGE:
forgejo embedded view command [command options]
forgejo embedded view [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1426,7 +1426,7 @@ NAME:
forgejo embedded extract - Extract resources
USAGE:
forgejo embedded extract command [command options]
forgejo embedded extract [command options]
COMMANDS:
help, h Shows a list of commands or help for one command
@ -1450,7 +1450,7 @@ NAME:
forgejo migrate-storage - Migrate the storage
USAGE:
forgejo migrate-storage command [command options]
forgejo migrate-storage [command options]
DESCRIPTION:
Copies stored files from storage configured in app.ini to parameter-configured storage
@ -1484,7 +1484,7 @@ NAME:
forgejo dump-repo - Dump the repository from git/github/gitea/gitlab
USAGE:
forgejo dump-repo command [command options]
forgejo dump-repo [command options]
DESCRIPTION:
This is a command for dumping the repository data.
@ -1516,7 +1516,7 @@ NAME:
forgejo restore-repo - Restore the repository from disk
USAGE:
forgejo restore-repo command [command options]
forgejo restore-repo [command options]
DESCRIPTION:
This is a command for restoring the repository data.
@ -1567,7 +1567,7 @@ NAME:
forgejo generate secret - Generate a secret token
USAGE:
forgejo generate secret command [command options]
forgejo generate secret [command options]
COMMANDS:
INTERNAL_TOKEN Generate a new INTERNAL_TOKEN

View file

@ -149,7 +149,8 @@ In addition, there is _`StaticRootPath`_ which can be set as a built-in at build
### Repository - Signing (`repository.signing`)
- `SIGNING_KEY`: **default**: \[none, KEYID, default \]: Key to sign with.
- `FORMAT`: **openpgp**: \[openpgp, ssh\]: Signing format that Forgejo should use, openpgp uses GPG and ssh uses OpenSSH.
- `SIGNING_KEY`: **default**: \[none, KEYID, default, path/to/ssh/key\]: Key to sign with. If `FORMAT` is set to **ssh** this should be set to an absolute path to an public OpenSSH key.
- `SIGNING_NAME` &amp; `SIGNING_EMAIL`: if a KEYID is provided as the `SIGNING_KEY`, use these as the Name and Email address of the signer. These should match publicized name and email address for the key.
- `INITIAL_COMMIT`: **always**: \[never, pubkey, twofa, always\]: Sign initial commit.
- `never`: Never sign
@ -354,8 +355,8 @@ The following configuration set `Content-Type: application/vnd.android.package-a
- `MINIMUM_KEY_SIZE_CHECK`: **true**: Indicate whether to check minimum key size with corresponding type.
- `OFFLINE_MODE`: **true**: Disables use of CDN for static files and Gravatar for profile pictures.
- `CERT_FILE`: **https/cert.pem**: Cert file path used for HTTPS. When chaining, the server certificate must come first, then intermediate CA certificates (if any). This is ignored if `ENABLE_ACME=true`. Paths are relative to `CUSTOM_PATH`.
- `KEY_FILE`: **https/key.pem**: Key file path used for HTTPS. This is ignored if `ENABLE_ACME=true`. Paths are relative to `CUSTOM_PATH`.
- `CERT_FILE`: **https/cert.pem**: Cert file path used for HTTPS. When chaining, the server certificate must come first, then intermediate CA certificates (if any). This is ignored if `ENABLE_ACME=true`. Paths are relative to _`CustomPath`_.
- `KEY_FILE`: **https/key.pem**: Key file path used for HTTPS. This is ignored if `ENABLE_ACME=true`. Paths are relative to _`CustomPath`_.
- `STATIC_ROOT_PATH`: **_`StaticRootPath`_**: Upper level of template and static files path.
- `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".
@ -1138,9 +1139,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,nds,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**:
- `LANGS`: **en-US,zh-CN,zh-HK,zh-TW,da,de-DE,nds,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,Plattdüütsch,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,简体中文,繁體中文(香港),繁體中文(台灣),Danish,Deutsch,Plattdüütsch,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`)
@ -1220,11 +1221,12 @@ If the rule is defined above the renderer ini section or the name does not match
- `ENABLED`: **false**: Enable/Disable federation capabilities
- `SHARE_USER_STATISTICS`: **true**: Enable/Disable user statistics for nodeinfo if federation is enabled
- `MAX_SIZE`: **4**: Maximum federation request and response size (MB)
- `MAX_SIZE`: **4**: Maximum federation request and response size in MB
- `SIGNATURE_ENFORCED`: **true**: Enable/Disable validation of HTTP signatures. This is similar to Mastodon's `AUTHORIZED_FETCH`, also called "secure mode". This setting requires all incoming requests to be signed by the originating server. It is recommended to keep this setting enabled.
WARNING: Changing the settings below can break federation.
- `ALGORITHMS`: **rsa-sha256, rsa-sha512, ed25519**: HTTP signature algorithms
- `SIGNATURE_ALGORITHMS`: **rsa-sha256, rsa-sha512, ed25519**: HTTP signature algorithms
- `DIGEST_ALGORITHM`: **SHA-256**: HTTP signature digest algorithm
- `GET_HEADERS`: **(request-target), Date**: GET headers for federation requests
- `POST_HEADERS`: **(request-target), Date, Digest**: POST headers for federation requests

View file

@ -25,6 +25,8 @@ Restart Forgejo for the configuration changes to take effect.
To send a test email to validate the settings, go to Forgejo > Site Administration > Configuration > SMTP Mailer Configuration.
To enable users to receive email notifications for pull requests or issues, you can set `ENABLE_NOTIFY_MAIL=true` in the configuration.
For the full list of options check the [Config Cheat Sheet](../config-cheat-sheet/#mailer-mailer).
> **NOTE:** authentication is only supported when the SMTP server communication is encrypted with TLS or `HOST=localhost`. This is due to protections imposed by the Go internal libraries against STRIPTLS attacks. TLS encryption can be through:

View file

@ -23,7 +23,7 @@ These documents are targeted to people who run Forgejo on their machines.
- [Forgejo CLI](./command-line/)
- [Search Engines and robots.txt](./search-engines-indexation/)
- [Recommended Settings and Tips](./recommendations/)
- [GPG Commit Signatures](./signing/)
- [Instance Commit Signing](./signing/)
- [Moderation tools](./moderation/)
- [Adopt existing git directories](./adopt/)
- [Interface customization](./customization/)

View file

@ -10,7 +10,7 @@ It needs to be installed separately from the main Forgejo instance. For security
Each `Forgejo Runner` release is published for all supported architectures as:
- [binaries](https://data.forgejo.org/forgejo/runner/releases)
- [OCI images](https://data.forgejo.org/forgejo/-/packages/container/runner/versions)
- [OCI images](https://code.forgejo.org/forgejo/-/packages/container/runner/)
## Binary installation

View file

@ -1,144 +1,183 @@
---
title: 'GPG Commit Signatures'
license: 'Apache-2.0'
origin_url: 'https://github.com/go-gitea/gitea/blob/e865de1e9d65dc09797d165a51c8e705d2a86030/docs/content/administration/signing.en-us.md'
title: Instance Commit Signing
license: 'CC-BY-SA-4.0'
---
Forgejo will verify GPG commit signatures in the provided tree by
checking if the commits are signed by a key within the Forgejo database,
or if the commit matches the default key for Git.
Forgejo has the ability to sign commits when Forgejo themselves generates those commits, such as:
Keys are not checked to determine if they have expired or revoked.
Keys are also not checked with keyservers.
- Repository initialisation
- Wiki changes
- CRUD actions using the web editor or the API
- Merges from pull requests
A commit will be marked with an unlocked icon if no key can be
found to verify it.
## Configuration
## Automatic Signing
In order for Forgejo to sign commits, it has to know how it should be signing commits and when to sign commits.
Unless otherwise indicated, all configuration settings discussed on this page are for the `[repository.signing]` section.
There are a number of places where Forgejo will generate commits itself:
### Signing key
- Repository Initialisation
- Wiki Changes
- CRUD actions using the editor or the API
- Merges from Pull Requests
Forgejo offers two formats to sign commits with: GPG and SSH.
If you meet the requirements of SSH, then it is strongly preferred to use that instead of GPG.
## Installing and generating a GPG key for Forgejo
#### SSH
Forgejo generates all its commits using the server `git`
command - and the `gpg` command will be used for
signing.
For Forgejo to do SSH commit signing, it needs a Git version equal to or newer than 2.34.0 and `ssh-keygen` binary equal to or newer than version 8.2p1.[^1]
## General Configuration
[^1]: The git version check is already done by Forgejo, but for `ssh-keygen` only the presence of the binary is checked.
Forgejo's configuration for signing can be found with the
`[repository.signing]` section of `app.ini`:
You need a dedicated OpenSSH key pair for instance signing.
If you don't have such key pair yet you can generate one via `ssh-keygen`[^2] or you also could store the SSH key in TPM, there is [a dedicated section](#using-ssh-tpm-agent) with instructions on how to do that.
[^2]: https://docs.codeberg.org/security/ssh-key/ contains instructions for generating an SSH key pair, you should not generate a FIDO2 (`-sk` type) key pair as that will not work with Forgejo.
Forgejo needs to be told that it should use SSH signing and which SSH key to use, this should be configured as followed:
```ini
FORMAT = ssh
SIGNING_KEY = /absolute/path/to/public/ssh/key.pub
```
The value for the `SIGNING_KEY` setting needs to be an absolute path to the public key, where the private key needs to be available in the path without the `.pub` suffix.
Forgejo also needs to be told who the committer of the commit is, which requires a name and email and should be configured as followed:
```ini
SIGNING_NAME = "forgejo.org Instance"
SIGNING_EMAIL = "noreply@forgejo.org"
```
#### GPG
There are two ways to tell Forgejo which GPG key should be used for commit signing.
```ini
...
[repository.signing]
SIGNING_KEY = default
SIGNING_NAME =
SIGNING_EMAIL =
INITIAL_COMMIT = always
CRUD_ACTIONS = pubkey, twofa, parentsigned
WIKI = never
MERGES = pubkey, twofa, basesigned, commitssigned
...
```
### `SIGNING_KEY`
Will use the git config to determine the signing key: if the value of `commit.gpgsign` is set to true, then it will use the values of `user.signingkey`, `user.name` and `user.email` for the signing key, committer name and committer email respectively.
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`. In this case you should provide a `SIGNING_NAME` and
`SIGNING_EMAIL` to be displayed for this key.
The `default` option will interrogate `git config` for
`commit.gpgsign` option - if this is set, then it will use the results
of the `user.signingkey`, `user.name` and `user.email`.
By default, Forgejo will look for the signing key in `[git].HOME_PATH/.gnupg`.
However, this path differs from where GnuPG stores keys by default (`$HOME/.gnupg`).
There are 2 possible solutions here:
1. Move the `.gnupg` folder after importing/generating keys;
2. Set the `GNUPGHOME` environment variable to help Forgejo find the correct keychain.
### `INITIAL_COMMIT`
This option determines whether Forgejo should sign the initial commit
when creating a repository. The possible values 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
- `always`: Always sign
Options other than `never` and `always` can be combined as a comma
separated list. The commit will be signed if all selected options are true.
### `WIKI`
This options determines if Forgejo should sign commits to the Wiki.
The possible values 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
- `parentsigned`: Only sign if the parent commit is signed.
- `always`: Always sign
Options other than `never` and `always` can be combined as a comma
separated list. The commit will be signed if all selected options are true.
### `CRUD_ACTIONS`
This option determines if Forgejo should sign commits from the web
editor or API CRUD actions. The possible values 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
- `parentsigned`: Only sign if the parent commit is signed.
- `always`: Always sign
Options other than `never` and `always` can be combined as a comma
separated list. The change will be signed if all selected options are true.
### `MERGES`
This option determines if Forgejo should sign merge commits from PRs.
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 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.
- `always`: Always sign
Options other than `never` and `always` can be combined as a comma
separated list. The merge will be signed if all selected options are true.
## Obtaining the Public Key of the Signing Key
The public key used to sign Forgejo's commits can be obtained from the API at:
```sh
/api/v1/signing-key.gpg
```ini
SIGNING_KEY = GPG-KEY-ID
SIGNING_NAME = "forgejo.org Instance"
SIGNING_EMAIL = "noreply@forgejo.org"
```
In cases where there is a repository specific key this can be obtained from:
Will use the GPG keyid to search for the key in the GPG keyring. Forgejo searches for this key in a directory, which can be computed as follows: If a `GNUPGHOME` environment variable is set, this is used.
Otherwise the `.gnupg` directory in the directory corresponding to the value of the `HOME_PATH` setting in the `[git]` section is used (`[git].HOME_PATH/.gnupg` so to say).
It should be noted that by default, GPG does not use that keyring and you should take extra care when importing or generating the key, for example by setting the value of the `GNUPGHOME` environment to the directory Forgejo uses.
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg
### Signing operations
There are several operations for which Forgejo will generate a commit and thus be able to sign the commit.
For each operation you can specify under which conditions Forgejo should sign the commit.
For each operation, you can combine the values as a comma-separated list.
There are two special values that are valid values for each operation and cannot be combined with any other value for that operation: `always` and `never`.
The first value, if set, will always sign the commit and the second value, if set, will never sign the commit.
#### Initial commit
When should Forgejo sign the initial commit when creating a repository.
The possible values for the `INITIAL_COMMIT` setting are:
- `pubkey`: Only if the user has added a GPG key to its account.
- `twofa`: Only if the user is enrolled into two-factor authentication.
#### Wiki
When should Forgejo sign commits to the wiki.
The possible values for the `WIKI` setting are:
- `pubkey`: Only if the user has added a GPG key to its account.
- `twofa`: Only if the user is enrolled into two-factor authentication.
- `parentsigned`: Only if the parent commit is signed.
#### CRUD actions
When should Forgejo sign commits that are created for file changes via the web editor or API.
The possible values for the `CRUD_ACTIONS` setting are:
- `pubkey`: Only if the user has added a GPG key to its account.
- `twofa`: Only if the user is enrolled into two-factor authentication.
- `parentsigned`: Only if the parent commit is signed.
#### Pull request merges
When should Forgejo sign merge commits from pull requests.
The possible values for the `MERGES` setting are:
- `pubkey`: Only if the user has added a GPG key to its account.
- `twofa`: Only if the user is enrolled into two-factor authentication.
- `basesigned`: Only if the parent commit in the base repository is signed.
- `headsigned`: Only if the head commit in the head branch is signed.
- `commitssigned`: Only if all the commits in the head branch to the merge point are signed.
- `approved`: Only if the pull request targets a protected branch and has at least one approval.
## Obtaining the instance signing key
If a GPG instance signing key is set, the GPG public key can be obtained at the API route, `/api/v1/signing-key.gpg`.
If a repository specific GPG key is set, it can be obtained at the API route, `/api/v1/repos/{username}/{reponame}/signing-key.gpg`
If a SSH instance signing key is set, the SSH public key can be obtained at the API route, `/api/v1/signing-key.ssh`.
## Using ssh-tpm-agent
It is possible to use [ssh-tpm-agent](https://github.com/Foxboron/ssh-tpm-agent) so that the SSH private key resides in a [Trusted Platform Module (TPM)](https://en.wikipedia.org/wiki/Trusted_Platform_Module) and therefore makes it harder to leak the SSH private key as it does not reside on the filesystem. To use this, the server that Forgejo runs on must have access to TPM 2.0.
This section only explains how to make the SSH private key available to Forgejo, not how to configure Forgejo to use it.
Follow [the instruction from ssh-tpm-agent](https://github.com/Foxboron/ssh-tpm-agent#usage) to create a key or import an existing key.
An instance key is expected to be a long-lived key[^3] and therefore it is advisable to follow the 'Import existing key' guide as it allows you to backup the private key in a safe place and in case of a recovery, restore the instance SSH key.
[^3]: Rotating instance keys is currently not possible.
ssh-tpm-agent acts as an [`ssh-agent(1)`](https://man.archlinux.org/man/ssh-agent.1) and in order for Forgejo to use ssh-tpm-agent to sign commits with, it needs to have a `SSH_AUTH_SOCK` environment set when launching the Forgejo binary.
How to pass this to Forgejo depends on how you run Forgejo, we consider two situation: a Systemd service on bare-metal or containerized (for example, via Docker).
In either case, the host will need to install the systemd unit service by running `ssh-tpm-agent --install-user-units`.
### Systemd service
In the `[Service]` section, add the following (it is fine to have multiple `Environment` keys):
```toml
Environment=SSH_AUTH_SOCK="/socket/path"
```
Where `/socket/path` is replaced with the value of `ssh-tpm-agent --print-socket`.
### Containerized
We take [the default docker-compose file](../installation-docker/#docker) as an example.
We add an environment variable and a volume mount to the compose file:
```yaml
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:10
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
+ - SSH_AUTH_SOCK=$SOCKET_PATH
restart: always
networks:
- forgejo
volumes:
- ./forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
+ - $SOCKET_PATH:$SOCKET_PATH
ports:
- "3000:3000"
- "222:22"
```
Where `$SOCKET_PATH` is to be replaced with the value of `ssh-tpm-agent --print-socket`.
Another volume would need to be added that exposes the public OpenSSH key, the container path should match with the path that is specified for the `SIGNING_KEY` setting.

View file

@ -136,3 +136,9 @@ Injects itself via [a workflow](https://code.forgejo.org/forgejo/lxc-helpers/src
## Gitea
Cherry-picked in the Forgejo codebase [on a regular basis](https://codeberg.org/forgejo/forgejo/pulls?q=week&labels=116080) using a [dedicated CLI tool](https://codeberg.org/forgejo/tools/src/branch/main/scripts/weekly-cherry-pick.sh).
# Web browser support
For changes that would affect the usability of Forgejo, use browser features and APIs that are compatible with the latest version of Firefox ESR.
For changes that do not affect usability, using features up to [Baseline <PREVIOUS-YEAR>](https://web.dev/baseline) is acceptable.

View file

@ -10,50 +10,37 @@ repository and resolve conflicts when they arise.
## Merging translations in Forgejo
Weblate is [configured to propose pull requests](https://translate.codeberg.org/settings/forgejo/forgejo/#vcs)
to the Forgejo repository with new translations. These pull requests should be **squash merged** into the Forgejo
development branch as follows:
to the Forgejo repository with new translations. These pull requests are normally
merged with a **merge commit** into the Forgejo development branch as follows:
- go to the [history](https://translate.codeberg.org/projects/forgejo/forgejo/#history) of the main component and make sure there's no active translation work happening
- 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.`
- post a "Warning" [announcement in Weblate](https://translate.codeberg.org/projects/forgejo/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.`. Make sure to unckeck the notification option
- If the PR is prefixed with **[skip ci]**:
- - remove the prefix from the title
- - change some translation(s). You can modify `[translation_meta]test` in some language
- go to the [repository management](https://translate.codeberg.org/projects/forgejo/forgejo/#repository) of the main component
- click **Commit**. This is done optionally to make tests run before interrupting anyone, to reduce the total maintenance time
- wait until the 15 minutes from the announcement pass
- 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)).
- on the pull request page, find the merge button
- use the button with an arrow to change it to **Create squash commit**
- click **Create squash commit**
- remove PR description from the commit message, only keep metadata like co-authors and reviewers, like in [this example](https://codeberg.org/forgejo/forgejo/commit/e40554f89baa79d12a1ff89b434041b297afff02)
- click **Create squash commit** again
- click **Reset**
- click **Unlock**
- remove Weblate announcement
- If the PR title has prefix **[skip ci]**, remove it
- If no translation activity is expected before the merge, update the PR to
trigger a CI run:
- Change some translation(s). You can modify `[translation_meta]test` in some language
- **Commit** changes in the [repository management](https://translate.codeberg.org/projects/forgejo/forgejo/#repository)
of the main component
- Wait for a moment when there are no uncommitted translation changes and the CI
checks are passed. **Commit** button will be disabled in [repository management](https://translate.codeberg.org/projects/forgejo/forgejo/#repository)
when there are no such changes.
- **Merge** the pending **i18n:** pull request with a **commit message**
similar to this example:
- [Pull request](https://codeberg.org/forgejo/forgejo/pulls/7240)
- [Merge commit](https://codeberg.org/forgejo/forgejo/commit/0b73a1da00ba92aabf5782ff62264a96bcbd1638)
- [The actual commit](https://codeberg.org/forgejo/forgejo/commit/5a7af0dae2ef1c7d18ea5ac53ae8682d9d0c28df)
- Visit [Weblate history](https://translate.codeberg.org/changes/browse/forgejo/)
and make sure there's a message about succsessful rebase
## Merging a pull request that changes translations
When a [Forgejo pull
request](https://codeberg.org/forgejo/forgejo/pulls) modifies files in
`options/locale` other than `locale_en-US.ini` for which it is
authoritative, it must be merged after all pending changes in Weblate
are merged as explained above. Only the end of the sequence changes:
When a [Forgejo pull request](https://codeberg.org/forgejo/forgejo/pulls)
modifies locale files other than base which is en-US, it must be merged after
all pending changes in Weblate are merged, while the impacted components are locked.
- squash-merge the pending `[I18N]` pull request ([similar to this example](https://codeberg.org/forgejo/forgejo/pulls/2317)).
- on the pull request page, find the merge button
- use the button with an arrow to change it to **Create squash commit**
- click **Create squash commit**
- remove PR description from the commit message, only keep metadata like co-authors and reviewers, like in [this example](https://codeberg.org/forgejo/forgejo/commit/e40554f89baa79d12a1ff89b434041b297afff02)
- click **Create squash commit** again
- merge the PR (after resolving conflicts due to the merge of the Weblate changes)
- click **Reset**
- click **Unlock**
- lock Weblate component(s)
- merge the pending `i18n:` pull request based on the instructions above
- rebase the other PR if needed, merge it
- unlock component(s)
- make sure Weblate rebased successfully, you can use `Update` button in main component to trigget that
## Resolving failures
@ -73,33 +60,36 @@ and the repository exists.
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:
If Weblate failed to rebase, there are two ways to solve this issue.
#### Revert and merge in correct sequence
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
5. Rebase the commit(s) of the PR that caused the breakage on top of the merged 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.
#### Merge translations manually
1. Fetch the branch that Weblate uses:
`git remote add weblate https://translate.codeberg.org/git/forgejo/forgejo`
`git fetch -u weblate`
`git checkout weblate/forgejo`
2. Checkout into a new branch:
`git checkout -b i18n-weblate-recovery`
3. Rebase it on top of latest commit in main Forgejo branch
`git rebase -i <latest-commit>`
4. Propose a new PR with fixed commit and merge it
5. Close PR created by Weblate, reset Weblate
Alternatively to rebase you can also interactively cherry-pick the commit on top of a new branch based on latest.
## Other merge strategies
Forgejo used to have different merge workflows based on squashing the PR. The
old instructions are available in [older version of the documentation](/docs/v10.0/contributor/localization-admin/).

View file

@ -45,7 +45,7 @@ To add a new language, go to the [page for starting new translation](https://tra
### E-mail privacy
By default, Weblate will use an accounts primary e-mail address for all contributions. If you want to adjust this behavior go to [Weblate settings - Account](https://translate.codeberg.org/accounts/profile/#account) and select a different e-mail under "Commit e-mail" section. Select `@users.noreply.translate.codeberg.org` address to avoid using a unmasked e-mail address.
By default, Weblate will use your primary e-mail address for all contributions. If you want to adjust this behavior, go to [Weblate settings - Account](https://translate.codeberg.org/accounts/profile/#account) and select a different e-mail under the "Commit e-mail" section. Select a `noreply` address to avoid using a real one.
## Tips

View file

@ -4,18 +4,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "24",
"run_id": "33",
"run_number": "1",
"actor": "forgejo-actions",
"repository": "root/example-post-7-0-schedule",
"event_name": "schedule",
"sha": "c44310f15966a7f6dc8bb0540e78b26042176814",
"sha": "3a32a7dd36f57897586ebc9dbce88227811c4be9",
"ref": "main",
"ref_name": "main",
"ref_type": "",
"head_ref": "",
"base_ref": "",
"token": "30309bfb5a8a3cbb80bed4573ce454238cb7147d",
"token": "55c9d58cf6d828fb3e51fa76b5388cd38b09b909",
"workspace": "/workspace/root/example-post-7-0-schedule",
"action": "0",
"action_path": "",
@ -27,7 +27,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -21,12 +21,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -40,8 +41,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -50,7 +51,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -62,14 +63,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -96,26 +97,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "483a4bfe864b8663933825d8904de97eab8baa72"
"repo_id": 23,
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a"
},
"body": "",
"changed_files": 2,
"closed_at": null,
"comments": 0,
"created_at": "2024-11-10T12:13:47Z",
"created_at": "2025-03-22T09:52:50Z",
"deletions": 0,
"diff_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1.diff",
"diff_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1.diff",
"draft": false,
"due_date": null,
"head": {
@ -131,12 +132,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/fork-org/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/fork-org/example-pull-request.git",
"created_at": "2025-03-22T09:52:49Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": true,
@ -150,12 +152,12 @@
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "http://10.194.201.194:3000/fork-org/example-pull-request",
"id": 17,
"html_url": "http://10.48.21.232:3000/fork-org/example-pull-request",
"id": 24,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/fork-org/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/fork-org/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -167,14 +169,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-11-10T12:13:46Z",
"avatar_url": "http://10.48.21.232:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2025-03-22T09:52:49Z",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/fork-org",
"html_url": "http://10.48.21.232:3000/fork-org",
"id": 2,
"is_admin": false,
"language": "",
@ -201,12 +203,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -220,8 +223,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -230,7 +233,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -242,14 +245,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -276,12 +279,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -295,23 +298,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.194.201.194:fork-org/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/fork-org/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:47Z",
"url": "http://10.194.201.194:3000/api/v1/repos/fork-org/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/fork-org/example-pull-request",
"watchers_count": 1,
"website": ""
},
"repo_id": 17,
"sha": "28ab2380358967e850ef0f16a2bd16741452a58e"
"repo_id": 24,
"sha": "47d431bba8fe4ae7c7ffe1128b3cae4911d010de"
},
"html_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1",
"html_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1",
"id": 1,
"is_locked": false,
"labels": [],
"merge_base": "483a4bfe864b8663933825d8904de97eab8baa72",
"merge_base": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -319,25 +322,25 @@
"merged_by": null,
"milestone": null,
"number": 1,
"patch_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1.patch",
"patch_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"review_comments": 0,
"state": "open",
"title": "PR from fork",
"updated_at": "2024-11-10T12:13:47Z",
"url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1",
"user": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -365,12 +368,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -384,8 +388,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -394,7 +398,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -406,14 +410,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -440,12 +444,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -454,14 +458,14 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -481,18 +485,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "17",
"run_id": "26",
"run_number": "1",
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request",
"sha": "28ab2380358967e850ef0f16a2bd16741452a58e",
"sha": "47d431bba8fe4ae7c7ffe1128b3cae4911d010de",
"ref": "refs/pull/1/head",
"ref_name": "1",
"ref_type": "",
"head_ref": "main",
"base_ref": "main",
"token": "ba0ab7517ce99ae08a4beff34d6cfd9cdafe2c90",
"token": "894d607eaf9a946bca159fe997b87264708659f5",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -504,7 +508,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -21,12 +21,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -40,8 +41,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -50,7 +51,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -62,14 +63,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -96,26 +97,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "483a4bfe864b8663933825d8904de97eab8baa72"
"repo_id": 23,
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a"
},
"body": "",
"changed_files": 2,
"closed_at": null,
"comments": 0,
"created_at": "2024-11-10T12:13:47Z",
"created_at": "2025-03-22T09:52:50Z",
"deletions": 0,
"diff_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1.diff",
"diff_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1.diff",
"draft": false,
"due_date": null,
"head": {
@ -131,12 +132,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/fork-org/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/fork-org/example-pull-request.git",
"created_at": "2025-03-22T09:52:49Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": true,
@ -150,12 +152,12 @@
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "http://10.194.201.194:3000/fork-org/example-pull-request",
"id": 17,
"html_url": "http://10.48.21.232:3000/fork-org/example-pull-request",
"id": 24,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/fork-org/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/fork-org/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -167,14 +169,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2024-11-10T12:13:46Z",
"avatar_url": "http://10.48.21.232:3000/avatars/1bc28d03d2a646081c5f3f2f94128925",
"created": "2025-03-22T09:52:49Z",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/fork-org",
"html_url": "http://10.48.21.232:3000/fork-org",
"id": 2,
"is_admin": false,
"language": "",
@ -201,12 +203,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -220,8 +223,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -230,7 +233,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -242,14 +245,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -276,12 +279,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -295,23 +298,23 @@
"release_counter": 0,
"repo_transfer": null,
"size": 29,
"ssh_url": "forgejo@10.194.201.194:fork-org/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/fork-org/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:47Z",
"url": "http://10.194.201.194:3000/api/v1/repos/fork-org/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/fork-org/example-pull-request",
"watchers_count": 1,
"website": ""
},
"repo_id": 17,
"sha": "28ab2380358967e850ef0f16a2bd16741452a58e"
"repo_id": 24,
"sha": "47d431bba8fe4ae7c7ffe1128b3cae4911d010de"
},
"html_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1",
"html_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1",
"id": 1,
"is_locked": false,
"labels": [],
"merge_base": "483a4bfe864b8663933825d8904de97eab8baa72",
"merge_base": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -319,25 +322,25 @@
"merged_by": null,
"milestone": null,
"number": 1,
"patch_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1.patch",
"patch_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"review_comments": 0,
"state": "open",
"title": "PR from fork",
"updated_at": "2024-11-10T12:13:47Z",
"url": "http://10.194.201.194:3000/root/example-pull-request/pulls/1",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/root/example-pull-request/pulls/1",
"user": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -365,12 +368,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -384,8 +388,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -394,7 +398,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -406,14 +410,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -440,12 +444,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 28,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:46Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:49Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -454,14 +458,14 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -481,18 +485,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "18",
"run_id": "27",
"run_number": "2",
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request_target",
"sha": "483a4bfe864b8663933825d8904de97eab8baa72",
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "main",
"base_ref": "main",
"token": "20721d143b1453d68264bf621096cc1ecdf7e094",
"token": "8b075f78866b505eccefcc74e5b51756cfee2da3",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -504,7 +508,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -21,12 +21,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -40,8 +41,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -50,7 +51,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -62,14 +63,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -96,26 +97,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "483a4bfe864b8663933825d8904de97eab8baa72"
"repo_id": 23,
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a"
},
"body": "",
"changed_files": 2,
"closed_at": null,
"comments": 0,
"created_at": "2024-11-10T12:13:48Z",
"created_at": "2025-03-22T09:52:51Z",
"deletions": 0,
"diff_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2.diff",
"diff_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2.diff",
"draft": false,
"due_date": null,
"head": {
@ -131,12 +132,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -150,8 +152,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -160,7 +162,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -172,14 +174,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -206,24 +208,24 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "204d377a8f707de901d69549b38b8e20b95ed5ea"
"repo_id": 23,
"sha": "09b64cfbba2fad779c1ef95a6409c6c1add84a25"
},
"html_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2",
"html_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2",
"id": 2,
"is_locked": false,
"labels": [],
"merge_base": "483a4bfe864b8663933825d8904de97eab8baa72",
"merge_base": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -231,25 +233,25 @@
"merged_by": null,
"milestone": null,
"number": 2,
"patch_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2.patch",
"patch_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"review_comments": 0,
"state": "open",
"title": "PR same repo",
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2",
"updated_at": "2025-03-22T09:52:51Z",
"url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2",
"user": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -277,12 +279,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -296,8 +299,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -306,7 +309,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -318,14 +321,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -352,12 +355,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -366,14 +369,14 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -393,18 +396,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "19",
"run_id": "28",
"run_number": "3",
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request",
"sha": "204d377a8f707de901d69549b38b8e20b95ed5ea",
"sha": "09b64cfbba2fad779c1ef95a6409c6c1add84a25",
"ref": "refs/pull/2/head",
"ref_name": "2",
"ref_type": "",
"head_ref": "other",
"base_ref": "main",
"token": "9ec230e11678c080b7320e95afd0b89803a48d81",
"token": "2da38416a7c4e848f9c756d9d46d1a1e248f9b96",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -416,7 +419,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -21,12 +21,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -40,8 +41,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -50,7 +51,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -62,14 +63,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -96,26 +97,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "483a4bfe864b8663933825d8904de97eab8baa72"
"repo_id": 23,
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a"
},
"body": "",
"changed_files": 2,
"closed_at": null,
"comments": 0,
"created_at": "2024-11-10T12:13:48Z",
"created_at": "2025-03-22T09:52:51Z",
"deletions": 0,
"diff_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2.diff",
"diff_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2.diff",
"draft": false,
"due_date": null,
"head": {
@ -131,12 +132,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -150,8 +152,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -160,7 +162,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -172,14 +174,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -206,24 +208,24 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"repo_id": 16,
"sha": "204d377a8f707de901d69549b38b8e20b95ed5ea"
"repo_id": 23,
"sha": "09b64cfbba2fad779c1ef95a6409c6c1add84a25"
},
"html_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2",
"html_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2",
"id": 2,
"is_locked": false,
"labels": [],
"merge_base": "483a4bfe864b8663933825d8904de97eab8baa72",
"merge_base": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
@ -231,25 +233,25 @@
"merged_by": null,
"milestone": null,
"number": 2,
"patch_url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2.patch",
"patch_url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"review_comments": 0,
"state": "open",
"title": "PR same repo",
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/root/example-pull-request/pulls/2",
"updated_at": "2025-03-22T09:52:51Z",
"url": "http://10.48.21.232:3000/root/example-pull-request/pulls/2",
"user": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -277,12 +279,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-pull-request.git",
"created_at": "2024-11-10T12:13:46Z",
"clone_url": "http://10.48.21.232:3000/root/example-pull-request.git",
"created_at": "2025-03-22T09:52:48Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -296,8 +299,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-pull-request",
"id": 16,
"html_url": "http://10.48.21.232:3000/root/example-pull-request",
"id": 23,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -306,7 +309,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -318,14 +321,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -352,12 +355,12 @@
"release_counter": 0,
"repo_transfer": null,
"size": 30,
"ssh_url": "forgejo@10.194.201.194:root/example-pull-request.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-pull-request.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:48Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-pull-request",
"updated_at": "2025-03-22T09:52:50Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-pull-request",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
@ -366,14 +369,14 @@
"review": null,
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -393,18 +396,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "20",
"run_id": "29",
"run_number": "4",
"actor": "root",
"repository": "root/example-pull-request",
"event_name": "pull_request_target",
"sha": "483a4bfe864b8663933825d8904de97eab8baa72",
"sha": "04d83b7d2d269e0984ffab8c8a0608917fbf844a",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "other",
"base_ref": "main",
"token": "86afe8394462c951e48f3131f29f5c01777bf501",
"token": "146b8a295fec29b7f2dc4ac56e6e8948bc12ec39",
"workspace": "/workspace/root/example-pull-request",
"action": "6",
"action_path": "",
@ -416,7 +419,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -1,6 +1,6 @@
{
"event": {
"after": "45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"after": "126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"before": "0000000000000000000000000000000000000000",
"commits": [
{
@ -17,16 +17,16 @@
"name": "username",
"username": "root"
},
"id": "45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"id": "126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-11-10T12:12:54Z",
"url": "http://10.194.201.194:3000/root/example-push/commit/45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"timestamp": "2025-03-22T09:52:03Z",
"url": "http://10.48.21.232:3000/root/example-push/commit/126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"verification": null
}
],
"compare_url": "http://10.194.201.194:3000/",
"compare_url": "http://10.48.21.232:3000/",
"head_commit": {
"added": [
".forgejo/workflows/test.yml"
@ -41,24 +41,24 @@
"name": "username",
"username": "root"
},
"id": "45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"id": "126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-11-10T12:12:54Z",
"url": "http://10.194.201.194:3000/root/example-push/commit/45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"timestamp": "2025-03-22T09:52:03Z",
"url": "http://10.48.21.232:3000/root/example-push/commit/126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"verification": null
},
"pusher": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -86,12 +86,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-push.git",
"created_at": "2024-11-10T12:12:54Z",
"clone_url": "http://10.48.21.232:3000/root/example-push.git",
"created_at": "2025-03-22T09:52:03Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -105,8 +106,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-push",
"id": 12,
"html_url": "http://10.48.21.232:3000/root/example-push",
"id": 19,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -115,7 +116,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-push/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-push/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -127,14 +128,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -161,26 +162,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 25,
"ssh_url": "forgejo@10.194.201.194:root/example-push.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-push.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:12:54Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-push",
"updated_at": "2025-03-22T09:52:03Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-push",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -201,18 +202,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "12",
"run_id": "21",
"run_number": "1",
"actor": "root",
"repository": "root/example-push",
"event_name": "push",
"sha": "45f5a7b619b8ba789429b7fb8a513d6c148458ea",
"sha": "126d5577cb220c3a930c9cc84392a9d6d9579dd8",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "",
"base_ref": "",
"token": "010ed2d2a9fa87f08d5c7a77a75341247ff7244f",
"token": "f9a686de67c1db0c178997ab0bc67b294f254a57",
"workspace": "/workspace/root/example-push",
"action": "0",
"action_path": "",
@ -224,7 +225,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -1,9 +1,9 @@
{
"event": {
"after": "72756a53e345468e6b54fb9faec59cd05183068a",
"after": "9b2f41a23f6ee3bb362d939c1dbd9770f3b16fd2",
"before": "0000000000000000000000000000000000000000",
"commits": [],
"compare_url": "http://10.194.201.194:3000/root/example-tag/compare/0000000000000000000000000000000000000000...72756a53e345468e6b54fb9faec59cd05183068a",
"compare_url": "http://10.48.21.232:3000/root/example-tag/compare/0000000000000000000000000000000000000000...9b2f41a23f6ee3bb362d939c1dbd9770f3b16fd2",
"head_commit": {
"added": [
".forgejo/workflows/test.yml",
@ -19,24 +19,24 @@
"name": "username",
"username": "root"
},
"id": "72756a53e345468e6b54fb9faec59cd05183068a",
"id": "9b2f41a23f6ee3bb362d939c1dbd9770f3b16fd2",
"message": "initial commit\n",
"modified": [],
"removed": [],
"timestamp": "2024-11-10T12:13:00Z",
"url": "http://10.194.201.194:3000/root/example-tag/commit/72756a53e345468e6b54fb9faec59cd05183068a",
"timestamp": "2025-03-22T09:52:09Z",
"url": "http://10.48.21.232:3000/root/example-tag/commit/9b2f41a23f6ee3bb362d939c1dbd9770f3b16fd2",
"verification": null
},
"pusher": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -64,12 +64,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-tag.git",
"created_at": "2024-11-10T12:13:00Z",
"clone_url": "http://10.48.21.232:3000/root/example-tag.git",
"created_at": "2025-03-22T09:52:09Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -83,8 +84,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-tag",
"id": 13,
"html_url": "http://10.48.21.232:3000/root/example-tag",
"id": 20,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -93,7 +94,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-tag/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-tag/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -105,14 +106,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@example.com",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -139,26 +140,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 26,
"ssh_url": "forgejo@10.194.201.194:root/example-tag.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-tag.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:13:01Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-tag",
"updated_at": "2025-03-22T09:52:09Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-tag",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -179,18 +180,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "13",
"run_id": "22",
"run_number": "1",
"actor": "root",
"repository": "root/example-tag",
"event_name": "push",
"sha": "72756a53e345468e6b54fb9faec59cd05183068a",
"sha": "9b2f41a23f6ee3bb362d939c1dbd9770f3b16fd2",
"ref": "refs/tags/v1.1",
"ref_name": "v1.1",
"ref_type": "tag",
"head_ref": "",
"base_ref": "",
"token": "91d9c5fe7606caffa7046ae8b9097bec541f0629",
"token": "2bdd6d83f70436446e4fa44a2f83d0dc1b916dfe",
"workspace": "/workspace/root/example-tag",
"action": "0",
"action_path": "",
@ -202,7 +203,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -1 +1 @@
10.0-test
11.0-test

View file

@ -19,12 +19,13 @@
"archived": false,
"archived_at": "1970-01-01T00:00:00Z",
"avatar_url": "",
"clone_url": "http://10.194.201.194:3000/root/example-workflow-dispatch.git",
"created_at": "2024-11-10T12:16:07Z",
"clone_url": "http://10.48.21.232:3000/root/example-workflow-dispatch.git",
"created_at": "2025-03-22T09:55:23Z",
"default_allow_maintainer_edit": false,
"default_branch": "main",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_update_style": "merge",
"description": "",
"empty": false,
"fork": false,
@ -38,8 +39,8 @@
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "http://10.194.201.194:3000/root/example-workflow-dispatch",
"id": 23,
"html_url": "http://10.48.21.232:3000/root/example-workflow-dispatch",
"id": 30,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
@ -48,7 +49,7 @@
"enable_time_tracker": true
},
"language": "",
"languages_url": "http://10.194.201.194:3000/api/v1/repos/root/example-workflow-dispatch/languages",
"languages_url": "http://10.48.21.232:3000/api/v1/repos/root/example-workflow-dispatch/languages",
"link": "",
"mirror": false,
"mirror_interval": "",
@ -60,14 +61,14 @@
"original_url": "",
"owner": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -94,26 +95,26 @@
"release_counter": 0,
"repo_transfer": null,
"size": 27,
"ssh_url": "forgejo@10.194.201.194:root/example-workflow-dispatch.git",
"ssh_url": "ssh://forgejo@10.48.21.232/root/example-workflow-dispatch.git",
"stars_count": 0,
"template": false,
"topics": null,
"updated_at": "2024-11-10T12:16:08Z",
"url": "http://10.194.201.194:3000/api/v1/repos/root/example-workflow-dispatch",
"updated_at": "2025-03-22T09:55:23Z",
"url": "http://10.48.21.232:3000/api/v1/repos/root/example-workflow-dispatch",
"watchers_count": 1,
"website": "",
"wiki_branch": "main"
},
"sender": {
"active": false,
"avatar_url": "http://10.194.201.194:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2024-11-10T12:10:05Z",
"avatar_url": "http://10.48.21.232:3000/avatars/04edfc0ef6c6cf6d6b88fbc69f9f9071",
"created": "2025-03-22T09:47:22Z",
"description": "",
"email": "root@noreply.10.194.201.194",
"email": "root@noreply.10.48.21.232",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "http://10.194.201.194:3000/root",
"html_url": "http://10.48.21.232:3000/root",
"id": 1,
"is_admin": false,
"language": "",
@ -134,18 +135,18 @@
},
"event_path": "/var/run/act/workflow/event.json",
"workflow": "",
"run_id": "25",
"run_id": "34",
"run_number": "1",
"actor": "root",
"repository": "root/example-workflow-dispatch",
"event_name": "workflow_dispatch",
"sha": "a2c166c121477e6f9605245c40332b135c3acd3d",
"sha": "b9915e0583c9f1f67fb0c32a116b2aa1ed444e7c",
"ref": "refs/heads/main",
"ref_name": "main",
"ref_type": "branch",
"head_ref": "",
"base_ref": "",
"token": "bc28cefb45e311663fb8e0a2951505a223dae754",
"token": "56feb2b49abbcc27be256102d1f585d94460822b",
"workspace": "/workspace/root/example-workflow-dispatch",
"action": "0",
"action_path": "",
@ -157,7 +158,7 @@
"retention_days": "",
"runner_perflog": "/dev/null",
"runner_tracking_id": "",
"server_url": "http://10.194.201.194:3000",
"api_url": "http://10.194.201.194:3000/api/v1",
"server_url": "http://10.48.21.232:3000",
"api_url": "http://10.48.21.232:3000/api/v1",
"graphql_url": ""
}

View file

@ -10,7 +10,7 @@ The following guide explains key **concepts** to help understand how `workflows`
## Quick start
- Verify that `Enable Repository Actions` is checked in the `Repository` tab of the `/{owner}/{repository}/settings` page. If the checkbox does not show it means the administrator of the Forgejo instance did not activate the feature.
- Verify that `Enable Repository Actions` is checked in the `Repository` tab of the `/{owner}/{repository}/settings/units#overview` page. If the checkbox does not show it means the administrator of the Forgejo instance did not activate the feature.
![enable actions](../_images/user/actions/enable-repository.png)
- Add the following to the `.forgejo/workflows/demo.yaml` file in the repository.
```yaml
@ -642,6 +642,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://man.archlinux.org/man/crontab.5) manual page for a more information and some examples.
The scheduled time will use the UTC timezone.
```yaml
on:
@ -807,6 +808,8 @@ jobs:
node: ['18', '20']
```
> **NOTE:** dynamic matrix objects, e.g. using `fromJSON`, are not supported - this is a [known caveat](https://code.forgejo.org/forgejo/runner/issues/525).
Will create four jobs where:
- `matrix.variant` = "bookworm" & `matrix.node` = "18"

View file

@ -46,6 +46,7 @@ involved in running it on their machines.
- [Webhooks](./webhooks/)
- [Programming language detection](./language-detection/)
- [Code Search](./code-search/)
- [Issue Search](./issue-search/)
- Authentication
- [Generating an Access Token](https://docs.codeberg.org/advanced/access-token/)
- [Access Token scope](./token-scope/)

58
docs/user/issue-search.md Normal file
View file

@ -0,0 +1,58 @@
---
title: Issue Search
license: 'CC-BY-SA-4.0'
---
Since v11, Issue search on Forgejo replaced it's previously dropdown defined behaviour of searches with a query syntax defined by operators.
## Query Syntax
### Keywords
1. Terms
Performs a fuzzy match search of each term in the query.
For example,
- `foo` will return results that contain `foo`, or any of it's derivatives (such as `for` or `food`)
- `foo bar` will return results that contain `foo` and/or `bar` or any of it's derivatives
2. Phrase
Performs an exact match for the provided phrase. This is done by wrapping the phrase in double quotes.
For example,
- `"foo"` will return results that contain an exact match of `foo`
- `"foo bar"` will return results that contain an exact match of `foo bar`
### Operators
1. Negation
Negates the keyword by returning results that does not contain the keyword. This is done by prefixing the keyword with a minus symbol.
For example,
- `-foo` will return results that does not contain `foo` or it's derivatives
- `-"foo bar"` will return results that does not contain `foo bar`
2. Required
Denotes that the provided keyword MUST be present. This is done by prefixing the keyword with with a plus symbol.
For example,
- `+foo +bar` will return results that contain both `foo` and `bar` (or its fuzzy derivatives)
- `+"foo" +"bar"` will return results that contain exactly both `foo` and `bar`
- `+"foo bar" +"baz"` will return results that contain exactly both `foo bar` and `baz`
### Escaping
All operators may be escaped by adding a backslash in front of the operators.
For example,
- `"\"\""` will search for `""`
- `\+1` will search for `+1`

View file

@ -99,7 +99,7 @@ Example request using HTTP Basic authentication:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://forgejo.example.com/api/packages/testuser/debian/pools/bionic/main/test-package/1.0.0/amd64
https://forgejo.example.com/api/packages/testuser/debian/pool/bionic/main/test-package/1.0.0/amd64
```
The server responds with the following HTTP Status codes.

View file

@ -12,48 +12,50 @@ To work with the npm package registry, you need [Node.js](https://nodejs.org/en/
The registry supports [scoped](https://docs.npmjs.com/misc/scope/) and unscoped packages.
The following examples use the `npm` tool with the scope `@test`.
The following examples use the `npm` tool with the scope `@test` and username `testuser`.
## Configuring the package registry
To register the package registry you need to configure a new package source.
To register the package registry with npm, you need to configure a new package source and provide the package owner's token.
```shell
npm config set {scope}:registry https://forgejo.example.com/api/packages/{owner}/npm/
npm config set -- '//forgejo.example.com/api/packages/{owner}/npm/:_authToken' "{token}"
npm config set -- '//forgejo.example.com/api/packages/{owner}/npm/:_authToken' "{owner_token}"
```
**NOTE:** in the example below (`npm config set -- '//forgejo...`) the leading scheme, `https:`, is intentionally missing. It must not be included. The following is **incorrect**: `npm config set -- 'https://forgejo...`
**NOTE:** in the example below (`npm config set -- '//forgejo...`) the leading scheme, `https:`, is intentionally missing. It must not be included. The following is **incorrect**: `npm config set -- 'https://forgejo...` as the npm config only uses a URI fragment in the config. [Examples](https://docs.npmjs.com/cli/v11/configuring-npm/npmrc#auth-related-configuration)
| Parameter | Description |
| --------- | -------------------------------------------------------------- |
| `scope` | The scope of the packages. |
| `owner` | The owner of the package. |
| `token` | Your [personal access token](../../api-usage/#authentication). |
| Parameter | Description |
| --------- | --------------------------------------------------------------------- |
| `scope` | The scope of the packages. |
| `owner` | The owner of the package. |
| `token` | The owner's [personal access token](../../api-usage/#authentication). |
For example:
```shell
npm config set @test:registry https://forgejo.example.com/api/packages/testuser/npm/
npm config set -- '//forgejo.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"
npm config set -- '//forgejo.example.com/api/packages/testuser/npm/:_authToken' "{personal_access_token}"
```
or without scope:
```shell
npm config set registry https://forgejo.example.com/api/packages/testuser/npm/
npm config set -- '//forgejo.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"
npm config set -- '//forgejo.example.com/api/packages/testuser/npm/:_authToken' "{personal_access_token}"
```
## Publish a package
Publish a package by running the following command in your project:
When publishing a package, npm uses configs and defaults if the arguments are not specified in the command or project. The following commands demonstrate a default publish, publishing to a specific registry, and a specific scope and registry:
```shell
npm publish
npm publish --registry={SERVER_URL}/api/packages/{owner}/npm/
npm publish --scope=@{scope} --registry={SERVER_URL}/api/packages/{owner}/npm/
```
You cannot publish a package if a package of the same name and version already exists. You must delete the existing package first.
You cannot publish a package if a package of the same name and version already exists. First, you must delete that version of the existing package, either in UI at `SERVER_URL/OWNER/-/packages/npm/PACKAGE_NAME/PACKAGE_VERSION/settings` or `unpublish` in CLI.
## Unpublish a package
@ -75,6 +77,8 @@ npm unpublish @test/test_package
npm unpublish @test/test_package@1.0.0
```
Note: This behavior is different than the public npm repository. Once you delete or unpublish a package, you can re-publish a package with the same name and version immediately.
## Install a package
To install a package from the package registry, execute the following command:
@ -121,7 +125,7 @@ The registry supports [searching](https://docs.npmjs.com/cli/v7/commands/npm-sea
## Supported commands
```
```shell
npm install
npm ci
npm publish
@ -130,3 +134,48 @@ npm dist-tag
npm view
npm search
```
## Troubleshooting
Run these commands before the command that fails:
```shell
npm config set loglevel verbose #The default log level is notice
npm config ls -l #Lists the full config, including defaults. User config is at the bottom.
```
The [npm CLI Docs](https://docs.npmjs.com/cli) may help you find missing config settings required to be set prior to the failing command. Incorrect [Auth-related config](https://docs.npmjs.com/cli/v11/configuring-npm/npmrc#auth-related-configuration) can silently/cryptically fail at the default log level.
## Forgejo Actions Example
```yaml
jobs:
publish:
name: Publish to Forgejo NPM registry
runs-on: docker
steps:
- name: set npm config
# See note above about using {server_uri_fragment}, i.e. '//code.forgejo.org'
# DO NOT USE ${{secrets.FORGEJO_TOKEN}}, use the owner's token!
run: |
npm config set @{scope}:registry ${{github.SERVER_URL}}/api/packages/{owner}/npm/
npm config set "{server_uri_fragment}/api/packages/{owner}/npm/:_authToken=${{secrets.OWNER_TOKEN}}"
- name: Checkout repo
uses: actions/checkout@v4
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
# WARNING: The following commented step will override the default CA settings (null == only use known CAs) and prevent npm from communicating with the public npm registry
# To undo it, add another step: 'run: npm config set cafile='
#- name: Only if using a self-signed cert
# run: npm config set cafile {location of ca-cert.pem}
- name: Publish to registry
run: npm publish --scope=@{scope} --registry=${{github.SERVER_URL}}/api/packages/{owner}/npm/
```
When using Forgejo Actions with the NPM registry, you may have to use npm to obtain certain information. For instance, due to the structure of Forgejo's package storage, the published tarball is not stored in the `SERVER_URL/USER/-/packages/npm/PACKAGE_NAME/PACKAGE_VERSION/files/PACKAGE_ID/` location in the UI where it can be manually obtained. If you need to access the tarball directly, use this command to get a URL compatible with curl and other CLI tools that can run in Forgejo Actions.
```shell
npm view PACKAGE_NAME{@PACKAGE_VERSION} --registry={REGISTRY_URL} dist.tarball
```

View file

@ -126,3 +126,19 @@ $ \frac{1}{2} = 0.5 $
This will then result in the following properly rendered equation:
![The $\frac{1}{2} = 0.5$ equation properly rendered by KaTeX](../_images/user/wiki/katex_example.png)
It is also possible to have LaTeX render in display mode, using `$$` or `\[` with `\]`:
```markdown
\[ \mathbf{R} = \frac 1M \iiint_Q \rho(\mathbf{r}) \mathbf{r} \mathrm dV \]
$$ (p \implies q) \iff (\neg q \implies \neg p) $$
```
It is however not supported to use either of these syntaxes when the equation spans multiple lines; in that case, a code block with the language `math` should be used, for example:
````markdown
```math
\int_0^\pi\ln(1-2\alpha\cos x+\alpha^2) \mathrm dx =
2\pi\ln|\alpha|
```
````