Help us shape the future of Go! Take the 2026 Go Developer Survey

artifactweave

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2026 License: MIT

README

artifactweave

An open source, self-hosted universal artifact repository written in Go, built to replace JFrog Artifactory for teams that want one place to store, proxy and distribute packages and container images.

  • Local, remote and virtual repositories for Go modules, Docker/OCI, npm, Maven, PyPI, NuGet, Helm and Terraform providers.
  • One static binary with pluggable blob storage (local disk, S3-compatible object storage) and metadata in SQLite or PostgreSQL.
  • Wire-compatible with Artifactory. The JFrog CLI, the jfrog/artifactory, jfrog/platform and jfrog/project Terraform providers and the native package clients work unchanged. The REST, Access and Event APIs mirror JFrog's published definitions.
  • Enterprise features without licence tiers. Federated repositories kept in step across instances, Distribution of signed release bundles to edge instances, cold-storage archiving to a cheaper blob tier with search and restore, Access Federation and topology across instances, and TypeScript Workers on platform events. Multi-instance features work between artifactweave instances.
  • GitOps first. Repositories, access policies and retention rules are declared as code, in the Artifactory YAML descriptor format or through Terraform, with no ClickOps and no licence tiers.

Status

Pre-release. The foundational research and the implementation plan are complete; the code is being built phase by phase. See docs/implementation/plan.md for the build status and docs/research/ for the research that the design rests on.

Documentation

Path What
docs/research/ Endpoint inventories, package protocols, Terraform and CLI compatibility, scope tiers, reference materials, open questions
docs/research/decisions/ Decision records
docs/implementation/ Phases, milestones, definition of done, repository layout
docs/operations/ Configuration, reverse proxy, backup and restore
docs/security/threat-model.md Threat model

Development

Target What
make gate Everything CI runs: vet, lint, test, cover, vuln, build
make test Unit tests with -race -shuffle=on, coverage to cover/unit
make accept Acceptance features against the real binary (needs Docker)
make cover Merges every cover/* directory and enforces .testcoverage.yml
make generate Regenerates the API servers and clients from api/*.openapi.yaml
make build Cross-compiles artifactweave for six platforms, CGO disabled

The quality gate requires 95% merged coverage and 90% per package, blocking lint with .golangci.yml, govulncheck and a cross-compile. Commits and PR titles follow Conventional Commits; release-please derives versions and the changelog.

Releases

Merging the release pull request that release-please keeps open tags the version and creates the GitHub release. The release workflow then builds artifactweave for Linux, macOS and Windows on amd64 and arm64 with GoReleaser and attaches:

  • an archive per platform, holding the static binary, this README and the licence;
  • artifactweave_<version>_checksums.txt, the SHA-256 of every archive and SBOM;
  • an SPDX SBOM per archive;
  • artifactweave_<version>_checksums.txt.sigstore.json, a keyless cosign signature over the checksum file, bound to this repository's release workflow.

Verify a download, for example v0.1.0:

cosign verify-blob \
  --bundle artifactweave_0.1.0_checksums.txt.sigstore.json \
  --certificate-identity 'https://github.com/weaveplatform/artifactweave/.github/workflows/release.yml@refs/tags/v0.1.0' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  artifactweave_0.1.0_checksums.txt

shasum -a 256 -c artifactweave_0.1.0_checksums.txt --ignore-missing

The first command proves the checksum file came from this repository's release workflow for that tag; the second proves each archive you downloaded matches it.

The same release publishes the container image ghcr.io/weaveplatform/artifactweave for linux/amd64 and linux/arm64, tagged with the version (and, for releases that are not pre-releases, <major>.<minor> and latest). It is built from the same binaries on a distroless base, runs as a non-root user with /data as its working directory and port 8081, and carries an SBOM and a provenance attestation. Verify it:

cosign verify ghcr.io/weaveplatform/artifactweave:0.1.0 \
  --certificate-identity 'https://github.com/weaveplatform/artifactweave/.github/workflows/release.yml@refs/tags/v0.1.0' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

docker run --rm -p 8081:8081 -v artifactweave-data:/data \
  -v "$PWD/artifactweave.yaml:/etc/artifactweave/artifactweave.yaml:ro" \
  ghcr.io/weaveplatform/artifactweave:0.1.0

Licence

MIT. JFrog's API definitions are proprietary and are cited, not vendored; this project implements the documented wire behaviour independently.

Directories

Path Synopsis
Package api holds the authored OpenAPI documents (decision record 0002) and the parity test that checks them against the gitignored cache of JFrog's published definitions.
Package api holds the authored OpenAPI documents (decision record 0002) and the parity test that checks them against the gitignored cache of JFrog's published definitions.
cmd
artifactweave command
Command artifactweave is the registry server and its operator commands.
Command artifactweave is the registry server and its operator commands.
internal
app
Package app wires configuration, the stores and the HTTP server together.
Package app wires configuration, the stores and the HTTP server together.
archive
Package archive reads zip, tar and tar.gz archives: the walker the item service explodes and serves archive entries with, and a bounded walker and reader the format handlers (decision 0032) read packages with, such as an npm tarball's package.json and file count, a Go module zip's go.mod or a jar's POM.
Package archive reads zip, tar and tar.gz archives: the walker the item service explodes and serves archive entries with, and a bounded walker and reader the format handlers (decision 0032) read packages with, such as an npm tarball's package.json and file count, a Go module zip's go.mod or a jar's POM.
auth
Package auth authenticates requests and seeds the built-in principals (decision 0005).
Package auth authenticates requests and seeds the built-in principals (decision 0005).
auth/idtoken
Package idtoken verifies ID tokens that an external OpenID Connect provider, typically a CI system, signed: the subject tokens of the Access OIDC token exchange (POST /access/api/v1/oidc/token, research 21).
Package idtoken verifies ID tokens that an external OpenID Connect provider, typically a CI system, signed: the subject tokens of the Access OIDC token exchange (POST /access/api/v1/oidc/token, research 21).
auth/idtoken/idtokentest
Package idtokentest is a fake OpenID Connect provider for tests: it serves a discovery document and a JWKS, as GitHub Actions, GitLab and other CI systems do, and mints ID tokens signed with its current key.
Package idtokentest is a fake OpenID Connect provider for tests: it serves a discovery document and a JWKS, as GitHub Actions, GitLab and other CI systems do, and mints ID tokens signed with its current key.
auth/token
Package token issues and verifies Access tokens (decision 0005): RS256 JWTs signed with a per-instance key, reference tokens and refresh tokens.
Package token issues and verifies Access tokens (decision 0005): RS256 JWTs signed with a per-instance key, reference tokens and refresh tokens.
authz
Package authz evaluates Artifactory's permission model (decision 0006): the admin flag, the union of grants to a user and their groups, permission targets with Ant include and exclude patterns, the anonymous user, and token scopes, which only ever remove actions but for applied-permissions/admin, an administrator's token whatever its subject.
Package authz evaluates Artifactory's permission model (decision 0006): the admin flag, the union of grants to a user and their groups, permission targets with Ant include and exclude patterns, the anonymous user, and token scopes, which only ever remove actions but for applied-permissions/admin, an administrator's token whatever its subject.
buildinfo
Package buildinfo carries version metadata injected with -ldflags -X (see LDFLAGS in the Makefile).
Package buildinfo carries version metadata injected with -ldflags -X (see LDFLAGS in the Makefile).
config
Package config loads the application configuration described in docs/operations/configuration-reference.md and decision record 0009.
Package config loads the application configuration described in docs/operations/configuration-reference.md and decision record 0009.
crypt
Package crypt seals secret columns at rest (decision record 0017): remote repository and proxy passwords, LDAP and mail credentials, webhook secrets, key pair private keys, OIDC secrets and the token signing key.
Package crypt seals secret columns at rest (decision record 0017): remote repository and proxy passwords, LDAP and mail credentials, webhook secrets, key pair private keys, OIDC secrets and the token signing key.
descriptor
Package descriptor reads Artifactory's YAML configuration descriptor and applies it (decision 0009): the body of PATCH /api/system/configuration, `artifactweave config apply` and the bootstrap descriptor.
Package descriptor reads Artifactory's YAML configuration descriptor and applies it (decision 0009): the body of PATCH /api/system/configuration, `artifactweave config apply` and the bootstrap descriptor.
format
Package format is the contract between the item service and the package formats (decision 0032): the hooks every format implements, the optional interfaces a format adds for what it needs, the environment they run in, and the Rejection a format refuses a request with.
Package format is the contract between the item service and the package formats (decision 0032): the hooks every format implements, the optional interfaces a format adds for what it needs, the environment they run in, and the Rejection a format refuses a request with.
format/docker
Package docker is the storage layout of Docker and OCI images in a repository's item tree (decision 0031), which the JFrog CLI reads with AQL and the storage API: an image is a folder, each tag a folder of its own below it and each manifest pushed by digest a folder named sha256:<hex>, and every blob a file named sha256__<hex> in the folders of the images that use it.
Package docker is the storage layout of Docker and OCI images in a repository's item tree (decision 0031), which the JFrog CLI reads with AQL and the storage API: an image is a folder, each tag a folder of its own below it and each manifest pushed by digest a folder named sha256:<hex>, and every blob a file named sha256__<hex> in the folders of the images that use it.
format/formats
Package formats picks the format of a package type.
Package formats picks the format of a package type.
format/formattest
Package formattest is the contract suite for package formats (decision 0032).
Package formattest is the contract suite for package formats (decision 0032).
format/generic
Package generic is the format of generic repositories: files without package metadata, so nothing is indexed.
Package generic is the format of generic repositories: files without package metadata, so nothing is indexed.
format/golang
Package golang is the format of Go module repositories (decision 0035).
Package golang is the format of Go module repositories (decision 0035).
format/maven
Package maven is the format of maven, gradle, ivy and sbt repositories (decision 0036): Maven's naming predicates, the coordinates a repository's layout reads from a path, and the package index of decision 0018, kept by the hooks on every write path and rebuilt by Reindex.
Package maven is the format of maven, gradle, ivy and sbt repositories (decision 0036): Maven's naming predicates, the coordinates a repository's layout reads from a path, and the package index of decision 0018, kept by the hooks on every write path and rebuilt by Reindex.
format/npm
Package npm is the format of npm repositories (decision 0034).
Package npm is the format of npm repositories (decision 0034).
keymaterial
Package keymaterial checks the key material the security API stores: that the private and public halves of an RSA or GPG key pair belong together, and that a client certificate bundle carries its own private key.
Package keymaterial checks the key material the security API stores: that the private and public halves of an RSA or GPG key pair belong together, and that a client certificate bundle carries its own private key.
openapibundle
Package openapibundle merges the per-family spec fragments under api/src/<service>/ into the one document oapi-codegen and the parity test read.
Package openapibundle merges the per-family spec fragments under api/src/<service>/ into the one document oapi-codegen and the parity test read.
repos
Package repos holds the repository operations that more than one entry point performs: the repositories API, the configuration descriptor (PATCH /api/system/configuration, config apply and the bootstrap descriptor).
Package repos holds the repository operations that more than one entry point performs: the repositories API, the configuration descriptor (PATCH /api/system/configuration, config apply and the bootstrap descriptor).
server
Package server builds the single chi router that serves every JFrog path prefix: /artifactory, /access, /event, /router, /jfconnect and /v2.
Package server builds the single chi router that serves every JFrog path prefix: /artifactory, /access, /event, /router, /jfconnect and /v2.
server/apierror
Package apierror renders errors in the envelope each client surface expects.
Package apierror renders errors in the envelope each client surface expects.
server/baseurl
Package baseurl resolves the public base URL a response must embed.
Package baseurl resolves the public base URL a response must embed.
server/docker
Package docker serves the registry protocol, the OCI Distribution Specification v1.1 with Docker's extensions, for docker, oci and helmoci repositories (decisions 0003 and 0031).
Package docker serves the registry protocol, the OCI Distribution Specification v1.1 with Docker's extensions, for docker, oci and helmoci repositories (decisions 0003 and 0031).
server/gen/access
Package access provides primitives to interact with the openapi HTTP API.
Package access provides primitives to interact with the openapi HTTP API.
server/gen/artifactory
Package artifactory provides primitives to interact with the openapi HTTP API.
Package artifactory provides primitives to interact with the openapi HTTP API.
server/gen/distribution
Package distribution provides primitives to interact with the openapi HTTP API.
Package distribution provides primitives to interact with the openapi HTTP API.
server/gen/event
Package event provides primitives to interact with the openapi HTTP API.
Package event provides primitives to interact with the openapi HTTP API.
server/gen/grid
Package grid provides primitives to interact with the openapi HTTP API.
Package grid provides primitives to interact with the openapi HTTP API.
server/gen/pfed
Package pfed provides primitives to interact with the openapi HTTP API.
Package pfed provides primitives to interact with the openapi HTTP API.
server/gen/worker
Package worker provides primitives to interact with the openapi HTTP API.
Package worker provides primitives to interact with the openapi HTTP API.
server/golang
Package golang serves Go module repositories at /artifactory/api/go/{repoKey}/ through the router kit (decisions 0032 and 0035): the GOPROXY reads the go command makes, and the deploys of jf go-publish.
Package golang serves Go module repositories at /artifactory/api/go/{repoKey}/ through the router kit (decisions 0032 and 0035): the GOPROXY reads the go command makes, and the deploys of jf go-publish.
server/npm
Package npm serves the npm registry of npm repositories at /artifactory/api/npm/{repoKey}/ (decision 0034), mounted through the router kit (decision 0032).
Package npm serves the npm registry of npm repositories at /artifactory/api/npm/{repoKey}/ (decision 0034), mounted through the router kit (decision 0032).
server/pkgroute
Package pkgroute is the router kit for package formats with a protocol of their own: npm and Go in P7, then PyPI, NuGet, Helm and Terraform (decision 0032).
Package pkgroute is the router kit for package formats with a protocol of their own: npm and Go in P7, then PyPI, NuGet, Helm and Terraform (decision 0032).
service/build
Package build implements the Builds API (decision 0014): publishing, reading, appending to, renaming and deleting build-info runs, and finding the items a run's artifacts are.
Package build implements the Builds API (decision 0014): publishing, reading, appending to, renaming and deleting build-info runs, and finding the items a run's artifacts are.
service/gc
Package gc reclaims storage (decision 0010).
Package gc reclaims storage (decision 0010).
service/identity
Package identity manages internal users and groups and the account policies (decision 0005): creation and replacement with hashed passwords, group membership and auto-join, the user lock and password expiration policies, locks and forced password changes.
Package identity manages internal users and groups and the account policies (decision 0005): creation and replacement with hashed passwords, group membership and auto-join, the user lock and password expiration policies, locks and forced password changes.
service/item
Package item writes and removes items: the deploy flow of decision 0004 (content into the blob store, then the item and its blob reference in one transaction), checksum deploy, folders, client checksums and deletion into the trash can (decision 0010).
Package item writes and removes items: the deploy flow of decision 0004 (content into the blob store, then the item and its blob reference in one transaction), checksum deploy, folders, client checksums and deletion into the trash can (decision 0010).
service/multipart
Package multipart serves the JFrog CLI's multipart upload protocol, as the pinned jfrog-client-go drives it (artifactory/services/utils/ multipartupload.go): create a session, get a URL per part, PUT the parts concurrently, complete with the file's SHA-1, poll the status, and abort on failure.
Package multipart serves the JFrog CLI's multipart upload protocol, as the pinned jfrog-client-go drives it (artifactory/services/utils/ multipartupload.go): create a session, get a URL per part, PUT the parts concurrently, complete with the file's SHA-1, poll the status, and abort on failure.
service/oidc
Package oidc is Access's OpenID Connect integration (research 21): the providers whose ID tokens artifactweave trusts, the identity mappings that turn a token's claims into an access token, and the token exchange that CI systems call (POST /access/api/v1/oidc/token).
Package oidc is Access's OpenID Connect integration (research 21): the providers whose ID tokens artifactweave trusts, the identity mappings that turn a token's claims into an access token, and the token exchange that CI systems call (POST /access/api/v1/oidc/token).
service/permission
Package permission manages permission documents (decision 0006): the single internal shape behind the v1 and v2 permission-target APIs and the Access v2 permissions API.
Package permission manages permission documents (decision 0006): the single internal shape behind the v1 and v2 permission-target APIs and the Access v2 permissions API.
service/pkgindex
Package pkgindex maintains the package index of decision 0018 for the format handlers: which package and version each file belongs to.
Package pkgindex maintains the package index of decision 0018 for the format handlers: which package and version each file belongs to.
service/registry
Package registry runs the Docker registry's blob uploads (decision 0031).
Package registry runs the Docker registry's blob uploads (decision 0031).
service/roles
Package roles manages global roles and global environments: the Access API's /api/v1/roles and /api/v1/environments (issue #77, decision 0013).
Package roles manages global roles and global environments: the Access API's /api/v1/roles and /api/v1/environments (issue #77, decision 0013).
service/trash
Package trash restores, cleans and purges the trash can (decision 0010).
Package trash restores, cleans and purges the trash can (decision 0010).
service/usage
Package usage computes the storage summary (GET /api/storageinfo): blob totals, item totals per repository and for the trash can, and the capacity of the volume a local blob store lives on.
Package usage computes the storage summary (GET /api/storageinfo): blob totals, item totals per repository and for the trash can, and the capacity of the volume a local blob store lives on.
service/work
Package work runs the persistent work queue (decision 0033): a pool of workers that lease due items, run the handler registered for each item's kind, and complete, retry or park it.
Package work runs the persistent work queue (decision 0033): a pool of workers that lease due items, run the handler registered for each item's kind, and complete, retry or park it.
specoracle
Package specoracle keeps a local, gitignored cache of the OpenAPI blocks JFrog embeds on each docs.jfrog.com endpoint page and compares them with the specs this project authors under api/.
Package specoracle keeps a local, gitignored cache of the OpenAPI blocks JFrog embeds on each docs.jfrog.com endpoint page and compares them with the specs this project authors under api/.
sqlstore/postgres
Package postgres opens an artifactweave store on PostgreSQL through pgx's database/sql adapter (decision 0004).
Package postgres opens an artifactweave store on PostgreSQL through pgx's database/sql adapter (decision 0004).
sqlstore/sqlcommon
Package sqlcommon implements pkg/store over database/sql for any SQL dialect (decision 0004), following hostweave's dialect layer: one store implementation, a Dialect describing what differs between engines, and embedded per-dialect migrations.
Package sqlcommon implements pkg/store over database/sql for any SQL dialect (decision 0004), following hostweave's dialect layer: one store implementation, a Dialect describing what differs between engines, and embedded per-dialect migrations.
sqlstore/sqlite
Package sqlite opens an artifactweave store on SQLite through the pure-Go modernc.org/sqlite driver, so the server builds without CGO on every platform (decision 0004).
Package sqlite opens an artifactweave store on SQLite through the pure-Go modernc.org/sqlite driver, so the server builds without CGO on every platform (decision 0004).
sqlstore/sqltest
Package sqltest provides PostgreSQL for the store contract runs.
Package sqltest provides PostgreSQL for the store contract runs.
stubgen
Package stubgen writes a type that implements a generated strict server interface by answering 501 for every operation.
Package stubgen writes a type that implements a generated strict server interface by answering 501 for every operation.
pkg
aql
Package aql parses Artifactory Query Language and runs it (decision 0012).
Package aql parses Artifactory Query Language and runs it (decision 0012).
aql/aqltest
Package aqltest holds the AQL fixtures every search backend must agree on (decision 0012): seed items chosen to trip the dialect traps (a GLOB character class, LIKE wildcards in names, a multi-byte character, a missing time, a remote cache, an item without statistics beside one whose statistics are zero), the repositories they live in, the query shapes the JFrog CLI generates, and the rows each query returns, in order.
Package aqltest holds the AQL fixtures every search backend must agree on (decision 0012): seed items chosen to trip the dialect traps (a GLOB character class, LIKE wildcards in names, a multi-byte character, a missing time, a remote cache, an item without statistics beside one whose statistics are zero), the repositories they live in, the query shapes the JFrog CLI generates, and the rows each query returns, in order.
blob
Package blob is the content-addressed binary store behind every repository (decision record 0004).
Package blob is the content-addressed binary store behind every repository (decision record 0004).
blob/azure
Package azure is the Azure Blob Storage blob store (decision 0027).
Package azure is the Azure Blob Storage blob store (decision 0027).
blob/blobtest
Package blobtest is the contract every blob.Store backend must satisfy.
Package blobtest is the contract every blob.Store backend must satisfy.
blob/fs
Package fs is the local-disk blob store.
Package fs is the local-disk blob store.
blob/gcs
Package gcs is the Google Cloud Storage blob store (decision 0027).
Package gcs is the Google Cloud Storage blob store (decision 0027).
blob/mirror
Package mirror is a blob store that keeps each blob on several member stores at once (decision 0028): different clouds, regions or accounts, any mix of the fs, s3, gcs and azure backends.
Package mirror is a blob store that keeps each blob on several member stores at once (decision 0028): different clouds, regions or accounts, any mix of the fs, s3, gcs and azure backends.
blob/s3
Package s3 is the S3-compatible blob store (AWS S3, MinIO, Ceph RGW and similar).
Package s3 is the S3-compatible blob store (AWS S3, MinIO, Ceph RGW and similar).
blob/session
Package session is the upload session shared by the object-store blob backends (s3, gcs, azure; decision 0027).
Package session is the upload session shared by the object-store blob backends (s3, gcs, azure; decision 0027).
cdn
Package cdn signs download URLs on a CDN in front of an object store (decision 0029).
Package cdn signs download URLs on a CDN in front of an object store (decision 0029).
cdn/cdntest
Package cdntest is a fake CDN edge for tests (decision 0029).
Package cdntest is a fake CDN edge for tests (decision 0029).
client/access
Package access provides primitives to interact with the openapi HTTP API.
Package access provides primitives to interact with the openapi HTTP API.
client/artifactory
Package artifactory provides primitives to interact with the openapi HTTP API.
Package artifactory provides primitives to interact with the openapi HTTP API.
client/distribution
Package distribution provides primitives to interact with the openapi HTTP API.
Package distribution provides primitives to interact with the openapi HTTP API.
client/event
Package event provides primitives to interact with the openapi HTTP API.
Package event provides primitives to interact with the openapi HTTP API.
client/grid
Package grid provides primitives to interact with the openapi HTTP API.
Package grid provides primitives to interact with the openapi HTTP API.
client/pfed
Package pfed provides primitives to interact with the openapi HTTP API.
Package pfed provides primitives to interact with the openapi HTTP API.
client/worker
Package worker provides primitives to interact with the openapi HTTP API.
Package worker provides primitives to interact with the openapi HTTP API.
containertest
Package containertest gates the tests that start containers (decision 0015).
Package containertest gates the tests that start containers (decision 0015).
layout
Package layout implements Artifactory repository layouts: the path patterns that tell the server which part of an artifact path is the organisation, module, base revision, integration revision, classifier and extension.
Package layout implements Artifactory repository layouts: the path patterns that tell the server which part of an artifact path is the organisation, module, base revision, integration revision, classifier and extension.
repo
Package repo is the repository configuration model: the JSON document that PUT, POST and GET /artifactory/api/repositories/{key} exchange, with JFrog's field names.
Package repo is the repository configuration model: the JSON document that PUT, POST and GET /artifactory/api/repositories/{key} exchange, with JFrog's field names.
store
Package store defines artifactweave's metadata persistence contracts (decision 0004) over the domain types of pkg/types and pkg/repo.
Package store defines artifactweave's metadata persistence contracts (decision 0004) over the domain types of pkg/types and pkg/repo.
store/inmem
Package inmem is the reference in-memory implementation of pkg/store.
Package inmem is the reference in-memory implementation of pkg/store.
store/storetest
Package storetest is the contract suite for pkg/store implementations (decision 0015).
Package storetest is the contract suite for pkg/store implementations (decision 0015).
types
Package types holds artifactweave's internal domain model (decision 0020): one representation per entity in docs/research/15-data-model.md, in the shape the services and stores work with.
Package types holds artifactweave's internal domain model (decision 0020): one representation per entity in docs/research/15-data-model.md, in the shape the services and stores work with.
types/wire
Package wire mirrors the JFrog JSON forms that pkg/types converts: the legacy v1 and v2 permission targets, the Access v2 permission, and the legacy and Access user and group documents.
Package wire mirrors the JFrog JSON forms that pkg/types converts: the legacy v1 and v2 permission targets, the Access v2 permission, and the legacy and Access user and group documents.
tools
coverexec command
Command coverexec runs one test binary for make test (go test -exec), moving its coverage output into a directory of its own under the one -test.gocoverdir names.
Command coverexec runs one test binary for make test (go test -exec), moving its coverage output into a directory of its own under the one -test.gocoverdir names.
openapi-bundle command
Command openapi-bundle merges api/src/<service>/*.yaml fragments into api/<service>.openapi.yaml (make bundle).
Command openapi-bundle merges api/src/<service>/*.yaml fragments into api/<service>.openapi.yaml (make bundle).
specoracle command
Command specoracle maintains the gitignored cache of JFrog's embedded OpenAPI blocks and reports parity against api/*.openapi.yaml.
Command specoracle maintains the gitignored cache of JFrog's embedded OpenAPI blocks and reports parity against api/*.openapi.yaml.
stubgen command
Command stubgen writes internal/server/gen/<service>/unimplemented.gen.go from the generated strict server interface (make generate).
Command stubgen writes internal/server/gen/<service>/unimplemented.gen.go from the generated strict server interface (make generate).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL