Skip to content

Forge capabilities

What GitHub, GitHub Enterprise Server, Gitea, Forgejo and GitLab each support for the factory: 22 capabilities and 19 trigger events.

Checked against vdb-site@61e0604

What each forge supports, emulates or lacks, from the factory’s capability table. The console, the connect dialog and the engine’s refusals read the same table: a step that needs something a forge lacks fails with forge_capability_unavailable and the reason below. Connecting each forge is in Forge connections.

Forge API dialect A pull request is called
GitHub github pull request
GitHub Enterprise Server github pull request
Gitea gitea pull request
Forgejo gitea pull request
GitLab gitlab merge request

Capabilities

Connect

How the factory signs in to the forge. (connect)

Forge Support
GitHub Yes
GitHub Enterprise Server Emulated: A GitHub App you register on the instance; its App id and private key are kept in the tenant vault.
Gitea Emulated: A bot account’s access token in the tenant vault stands in for an App installation.
Forgejo Emulated: A bot account’s access token in the tenant vault stands in for an App installation.
GitLab Emulated: A bot user’s, group’s or project’s access token in the tenant vault stands in for an App installation.

Webhooks

Events reach the factory as they happen; nothing is polled while webhooks arrive. (webhooks)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Repository or organisation webhooks the factory creates with the connection’s secret, signed with X-Gitea-Signature or X-Forgejo-Signature.
Forgejo Emulated: Repository or organisation webhooks the factory creates with the connection’s secret, signed with X-Gitea-Signature or X-Forgejo-Signature.
GitLab Emulated: Project or group webhooks the factory creates with the connection’s secret token (X-Gitlab-Token).

Repository discovery

The repositories the connection can reach are listed for Repositories and managed scope. (repos)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: The organisation’s or the bot user’s repositories, refreshed every 6 hours and on Refresh.
Forgejo Emulated: The organisation’s or the bot user’s repositories, refreshed every 6 hours and on Refresh.
GitLab Emulated: The group’s projects including subgroups, or the bot’s memberships, refreshed every 6 hours and on Refresh.

Open pull requests

The draft_pr output and Belai crews open pull requests from factory branches. (pull_requests)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Yes
Forgejo Yes
GitLab Emulated: A merge request; its number is the merge request’s iid.

Draft and ready

A pull request is opened as a draft and marked ready at a checkpoint. (draft)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: The WIP: title prefix, which Gitea and Forgejo treat as work in progress and refuse to merge.
Forgejo Emulated: The WIP: title prefix, which Gitea and Forgejo treat as work in progress and refuse to merge.
GitLab Emulated: The Draft: title prefix, which GitLab treats as a draft merge request.

Checks for gates

A gate waits for the head commit’s checks to pass. (checks)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Commit statuses. Gitea and Forgejo Actions, Woodpecker and Drone all report through them.
Forgejo Emulated: Commit statuses. Gitea and Forgejo Actions, Woodpecker and Drone all report through them.
GitLab Emulated: Commit statuses, which every pipeline job reports.

Merge readiness

The approve gate reads whether a pull request is clean, behind, conflicted or blocked. (merge_state)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Worked out from mergeable, the reviews and the statuses. Branch protection is not read; the forge still enforces it on merge.
Forgejo Emulated: Worked out from mergeable, the reviews and the statuses. Branch protection is not read; the forge still enforces it on merge.
GitLab Yes

Review decision

Whether a pull request is approved, needs a review or has changes requested. (review_decision)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Worked out from each reviewer’s latest review; stale and dismissed reviews do not count.
Forgejo Emulated: Worked out from each reviewer’s latest review; stale and dismissed reviews do not count.
GitLab Emulated: Read from the merge request’s approvals; a requested change is a note, not a state.

Submit reviews

pr_review nodes approve, comment on or request changes to a pull request, with inline comments. (reviews)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Yes
Forgejo Yes
GitLab Emulated: APPROVE is an approval, COMMENT a note, REQUEST_CHANGES a note with this account’s approval withdrawn; inline comments are diff discussions.

Request a team’s review

A checkpoint can ask a team to review. (team_reviewers)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Yes
Forgejo Yes
GitLab Not available: GitLab reviewers are users; name the people instead.

Update branch

A checkpoint brings a pull request’s branch up to date with its base. (update_branch)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: A merge of the base into the head (pulls/{n}/update?style=merge).
Forgejo Emulated: A merge of the base into the head (pulls/{n}/update?style=merge).
GitLab Emulated: A rebase of the merge request (merge_requests/{iid}/rebase).

Server-signed commits

Commits the factory writes (conflict resolution, curator ships) are signed with the tenant’s KMS key. (signed_commits)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: The signed commit is built by the factory and pushed over git; the forge shows it verified when the key is on the signer’s account.
Forgejo Emulated: The signed commit is built by the factory and pushed over git; the forge shows it verified when the key is on the signer’s account.
GitLab Emulated: The signed commit is built by the factory and pushed over git; GitLab shows it verified when the key is on the signer’s account.

Issue and label sync

Board cards mirror to issues both ways, with sf: and belai: labels. (issues)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Labels are written by id; a missing label is created first.
Forgejo Emulated: Labels are written by id; a missing label is created first.
GitLab Yes

Close reason

An issue closed as not planned is told apart from one closed as completed. (close_reason)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Not available: Gitea and Forgejo issues have no close reason; the card records it on the board only.
Forgejo Not available: Gitea and Forgejo issues have no close reason; the card records it on the board only.
GitLab Not available: GitLab issues have no close reason; the card records it on the board only.

Rate-limit budget

The quota guard shares the forge’s call budget between the factory and everything else. (rate_limit)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: Gitea and Forgejo send no rate-limit headers; the guard counts calls against forge.calls_per_hour.
Forgejo Emulated: Gitea and Forgejo send no rate-limit headers; the guard counts calls against forge.calls_per_hour.
GitLab Yes

Bot attribution

What the factory does is attributed to a bot identity, not a person. (bot_identity)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Emulated: The connection’s bot account.
Forgejo Emulated: The connection’s bot account.
GitLab Emulated: The connection’s bot user or access-token user.

Forge security alerts

Dependabot, code scanning and secret scanning alerts become findings. (security_alerts)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Not available: Gitea and Forgejo publish no security alerts; Vulnetix’s own scanners fill the gap.
Forgejo Not available: Gitea and Forgejo publish no security alerts; Vulnetix’s own scanners fill the gap.
GitLab Not available: GitLab’s security reports are pipeline artifacts, not alerts; Vulnetix’s own scanners fill the gap.

Merge queue

merge_group events and readiness in a merge queue. (merge_queue)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Not available: Gitea and Forgejo have no merge queue.
Forgejo Not available: Gitea and Forgejo have no merge queue.
GitLab Not available: GitLab merge trains are not read.

App capability catalogue

The GitHub App capabilities (posture, identity, audit log and the rest). (app_capabilities)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Not available: These read GitHub-only APIs.
Forgejo Not available: These read GitHub-only APIs.
GitLab Not available: These read GitHub-only APIs.

Belai clone and publish

Belai hosts clone, push and open pull requests with the connection’s token. (remote_clone)

Forge Support
GitHub Yes
GitHub Enterprise Server Yes
Gitea Yes
Forgejo Yes
GitLab Yes

Manifest curator

The manifest curator reads a repository’s manifests and opens its fix pull requests. (manifest_curator)

Forge Support
GitHub Yes
GitHub Enterprise Server Not available: The manifest curator works through the Vulnetix GitHub App on github.com. The factory’s own workflows fix dependencies on every forge.
Gitea Not available: The manifest curator works through the Vulnetix GitHub App on github.com. The factory’s own workflows fix dependencies on every forge.
Forgejo Not available: The manifest curator works through the Vulnetix GitHub App on github.com. The factory’s own workflows fix dependencies on every forge.
GitLab Not available: The manifest curator works through the Vulnetix GitHub App on github.com. The factory’s own workflows fix dependencies on every forge.

Pix Sandbox repositories

A Pix Sandbox attaches a repository, clones it and opens pull requests from it. (pix_sandbox)

Forge Support
GitHub Yes
GitHub Enterprise Server Not available: A Pix Sandbox reaches repositories through the Vulnetix GitHub App on github.com. Belai on your own machines works on every forge.
Gitea Not available: A Pix Sandbox reaches repositories through the Vulnetix GitHub App on github.com. Belai on your own machines works on every forge.
Forgejo Not available: A Pix Sandbox reaches repositories through the Vulnetix GitHub App on github.com. Belai on your own machines works on every forge.
GitLab Not available: A Pix Sandbox reaches repositories through the Vulnetix GitHub App on github.com. Belai on your own machines works on every forge.

Trigger events

The event names a trigger uses are GitHub’s. Each forge’s deliveries are translated into them; an event a forge cannot send never starts a run for its repositories.

Event GitHub Enterprise Server Gitea Forgejo GitLab
check_run Yes Emulated: From a commit status (the status event): completed when the status is final. Gitea 1.22 has no status event and keeps a webhook without it, so check_run triggers do not fire there; gates still read the statuses. Emulated: From a commit status (the status event): completed when the status is final. Gitea 1.22 has no status event and keeps a webhook without it, so check_run triggers do not fire there; gates still read the statuses. Emulated: Job Hook.
check_suite Yes Not available: No check suites; trigger on check_run. Not available: No check suites; trigger on check_run. Not available: No check suites; trigger on check_run or workflow_run.
code_scanning_alert Yes Not available: No security alerts. Not available: No security alerts. Not available: No security alerts.
dependabot_alert Yes Not available: No security alerts. Not available: No security alerts. Not available: No security alerts.
deployment_status Yes Not available: No deployment events. Not available: No deployment events. Emulated: Deployment Hook.
installation_repositories Yes Emulated: The connection’s repository refresh. Emulated: The connection’s repository refresh. Emulated: The connection’s repository refresh.
issue_comment Yes Yes Yes Emulated: Note Hook on an issue or merge request.
issues Yes Yes Yes Emulated: Issue Hook.
merge_group Yes Not available: No merge queue. Not available: No merge queue. Not available: Merge trains are not read.
pull_request Yes Emulated: pull_request and its label, assign, sync and review-request variants; a WIP: title change is converted_to_draft or ready_for_review. Emulated: pull_request and its label, assign, sync and review-request variants; a WIP: title change is converted_to_draft or ready_for_review. Emulated: Merge Request Hook.
pull_request_review Yes Emulated: pull_request_review_approved, _rejected and _comment. Emulated: pull_request_review_approved, _rejected and _comment. Emulated: Merge Request Hook approved and unapproved actions.
pull_request_review_comment Yes Not available: Gitea sends review comments as pull_request_comment, an issue_comment. Not available: Gitea sends review comments as pull_request_comment, an issue_comment. Emulated: A diff note (Note Hook with a position).
push Yes Yes Yes Yes
registry_package Yes Not available: Package events are not mapped. Not available: Package events are not mapped. Not available: No package events.
release Yes Yes Yes Emulated: Release Hook.
repository Yes Emulated: Organisation webhooks only. Emulated: Organisation webhooks only. Not available: GitLab sends no project-created event to a project hook.
secret_scanning_alert Yes Not available: No security alerts. Not available: No security alerts. Not available: No security alerts.
secret_scanning_alert_location Yes Not available: No security alerts. Not available: No security alerts. Not available: No security alerts.
workflow_run Yes Emulated: workflow_run from Gitea 1.24 and Forgejo 11; older versions send statuses only (check_run). Emulated: workflow_run from Gitea 1.24 and Forgejo 11; older versions send statuses only (check_run). Emulated: Pipeline Hook.
esc
↑ ↓ move↵ openSearches in your browser. A key like autonomy.max or a code like threshold_required jumps straight to it.