Publish adversaries

Choose a destination, validate the package, and push a version from your machine or a trusted release workflow.

GitHub Actions

Publish from a protected branch or tag with GitHub OIDC and no stored registry credential.

Publishing guide

Depot workflows

Publish on Depot with a Depot-bound OIDC grant and the same push action.

Publishing guide

The publishing path

Local and CI publishing perform the same three operations. CI is the recommended path for releases because it makes the source revision and publisher identity auditable.

  1. 1. Validate and package

    Validate adversary.yaml, install locked dependencies, build the project, and create an OCI package.

  2. 2. Authenticate to a project

    Developers use doomer login --team. CI should use OIDC or a dedicated publishing service account.

  3. 3. Push a version

    Push an immutable version to the project namespace. Use a protected branch or tag to control automated releases.

Publish from your machine

Use the CLI for development releases and one-off private packages. Replace the project slug, repository name, and version in this example.

bash
# Validate and package the project
doomer validate .
doomer pack . --name security-reviewer

# Authenticate to the destination project and push a version
doomer login --team your-project-slug
doomer push security-reviewer:0.1.0   registry.doomer.ai/your-project-slug/security-reviewer:0.1.0

There is no separate publish command: publishing is pack followed by push. See Distribution for naming, visibility, signatures, and consumption.

Choose CI authentication

OptionUse it whenRequired access
OIDC (recommended)GitHub Actions or native Depot workflows.A repository trust grant set to Pull & Publish.
Service accountOIDC is unavailable or another CI system publishes the package.registry:pull and registry:push.

Keep review and publishing grants separate. Doomer never issues push credentials to pull-request events.