masterblaster
No long description provided.
Installation
dagger install github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aaEntrypoint
Return Type
Masterblaster !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| source | Directory | - | Project source directory. |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
func (m *MyModule) Example() *dagger.Masterblaster {
return dag.
Masterblaster()
}@function
def example() -> dagger.Masterblaster:
return (
dag.masterblaster()
)@func()
example(): Masterblaster {
return dag
.masterblaster()
}Types
Masterblaster 🔗
test() 🔗
Test runs the tapes unit tests via “go test”
Return Type
String ! Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
testfunc (m *MyModule) Example(ctx context.Context) string {
return dag.
Masterblaster().
Test(ctx)
}@function
async def example() -> str:
return await (
dag.masterblaster()
.test()
)@func()
async example(): Promise<string> {
return dag
.masterblaster()
.test()
}build() 🔗
Build cross-compiles the mb binary for all supported Linux platforms and returns a directory containing the output binaries organized as {os}/{arch}/mb.
Darwin builds are excluded because the vz (Apple Virtualization.framework) dependency requires cgo with Objective-C and cannot be cross-compiled from Linux. Darwin artifacts are built on native Apple hardware via GitHub Actions.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| ldflags | String | "-s -w" | Linker flags for go build |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
buildfunc (m *MyModule) Example() *dagger.Directory {
return dag.
Masterblaster().
Build()
}@function
def example() -> dagger.Directory:
return (
dag.masterblaster()
.build()
)@func()
example(): Directory {
return dag
.masterblaster()
.build()
}buildRelease() 🔗
BuildRelease compiles versioned release binaries with embedded version info and generates SHA256 checksums for each artifact.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| version | String ! | - | Version string of build |
| commit | String ! | - | Git commit SHA of build |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
build-release --version string --commit stringfunc (m *MyModule) Example(version string, commit string) *dagger.Directory {
return dag.
Masterblaster().
BuildRelease(version, commit)
}@function
def example(version: str, commit: str) -> dagger.Directory:
return (
dag.masterblaster()
.build_release(version, commit)
)@func()
example(version: string, commit: string): Directory {
return dag
.masterblaster()
.buildRelease(version, commit)
}releaseLatest() 🔗
ReleaseLatest builds versioned release binaries and uploads them to the bucket under both the version prefix and a “latest” prefix.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| version | String ! | - | Version string (e.g., "v1.0.0") |
| commit | String ! | - | Git commit SHA |
| endpoint | Secret ! | - | Bucket endpoint URL |
| bucket | Secret ! | - | Bucket name |
| accessKeyId | Secret ! | - | Bucket access key ID |
| secretAccessKey | Secret ! | - | Bucket secret access key |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
release-latest --version string --commit string --endpoint env:MYSECRET --bucket env:MYSECRET --access-key-id env:MYSECRET --secret-access-key env:MYSECRETfunc (m *MyModule) Example(version string, commit string, endpoint *dagger.Secret, bucket *dagger.Secret, accessKeyId *dagger.Secret, secretAccessKey *dagger.Secret) *dagger.Directory {
return dag.
Masterblaster().
ReleaseLatest(version, commit, endpoint, bucket, accessKeyId, secretAccessKey)
}@function
def example(version: str, commit: str, endpoint: dagger.Secret, bucket: dagger.Secret, access_key_id: dagger.Secret, secret_access_key: dagger.Secret) -> dagger.Directory:
return (
dag.masterblaster()
.release_latest(version, commit, endpoint, bucket, access_key_id, secret_access_key)
)@func()
example(version: string, commit: string, endpoint: Secret, bucket: Secret, accessKeyId: Secret, secretAccessKey: Secret): Directory {
return dag
.masterblaster()
.releaseLatest(version, commit, endpoint, bucket, accessKeyId, secretAccessKey)
}releaseNightly() 🔗
ReleaseNightly builds nightly release binaries and uploads them to the bucket under the “nightly” prefix.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| commit | String ! | - | Git commit SHA |
| endpoint | Secret ! | - | Bucket endpoint URL |
| bucket | Secret ! | - | Bucket name |
| accessKeyId | Secret ! | - | Bucket access key ID |
| secretAccessKey | Secret ! | - | Bucket secret access key |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
release-nightly --commit string --endpoint env:MYSECRET --bucket env:MYSECRET --access-key-id env:MYSECRET --secret-access-key env:MYSECRETfunc (m *MyModule) Example(commit string, endpoint *dagger.Secret, bucket *dagger.Secret, accessKeyId *dagger.Secret, secretAccessKey *dagger.Secret) *dagger.Directory {
return dag.
Masterblaster().
ReleaseNightly(commit, endpoint, bucket, accessKeyId, secretAccessKey)
}@function
def example(commit: str, endpoint: dagger.Secret, bucket: dagger.Secret, access_key_id: dagger.Secret, secret_access_key: dagger.Secret) -> dagger.Directory:
return (
dag.masterblaster()
.release_nightly(commit, endpoint, bucket, access_key_id, secret_access_key)
)@func()
example(commit: string, endpoint: Secret, bucket: Secret, accessKeyId: Secret, secretAccessKey: Secret): Directory {
return dag
.masterblaster()
.releaseNightly(commit, endpoint, bucket, accessKeyId, secretAccessKey)
}uploadDarwinArtifacts() 🔗
UploadDarwinArtifacts uploads the pre-built darwin/arm64 mb binary and its checksum to the S3 bucket. Each file is uploaded individually via UploadFile with the appropriate prefix (e.g., “v1.0.0/darwin/arm64”, “latest/darwin/arm64”, or “nightly/darwin/arm64”).
This is called from GitHub Actions after the native macOS build to place darwin artifacts alongside the Linux artifacts already uploaded by Dagger.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| binary | File ! | - | The darwin/arm64 mb binary |
| checksum | File ! | - | The darwin/arm64 mb.sha256 checksum file |
| prefixes | [String ! ] ! | - | Bucket path prefixes to upload under (e.g., ["v1.0.0/darwin/arm64", "latest/darwin/arm64"]) |
| endpoint | Secret ! | - | Bucket endpoint URL |
| bucket | Secret ! | - | Bucket name |
| accessKeyId | Secret ! | - | Bucket access key ID |
| secretAccessKey | Secret ! | - | Bucket secret access key |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
upload-darwin-artifacts --binary file:path --checksum file:path --prefixes string1 --prefixes string2 --endpoint env:MYSECRET --bucket env:MYSECRET --access-key-id env:MYSECRET --secret-access-key env:MYSECRETfunc (m *MyModule) Example(ctx context.Context, binary *dagger.File, checksum *dagger.File, prefixes []string, endpoint *dagger.Secret, bucket *dagger.Secret, accessKeyId *dagger.Secret, secretAccessKey *dagger.Secret) {
return dag.
Masterblaster().
UploadDarwinArtifacts(ctx, binary, checksum, prefixes, endpoint, bucket, accessKeyId, secretAccessKey)
}@function
async def example(binary: dagger.File, checksum: dagger.File, prefixes: List[str], endpoint: dagger.Secret, bucket: dagger.Secret, access_key_id: dagger.Secret, secret_access_key: dagger.Secret) -> None:
return await (
dag.masterblaster()
.upload_darwin_artifacts(binary, checksum, prefixes, endpoint, bucket, access_key_id, secret_access_key)
)@func()
async example(binary: File, checksum: File, prefixes: string[], endpoint: Secret, bucket: Secret, accessKeyId: Secret, secretAccessKey: Secret): Promise<void> {
return dag
.masterblaster()
.uploadDarwinArtifacts(binary, checksum, prefixes, endpoint, bucket, accessKeyId, secretAccessKey)
}uploadInstallSh() 🔗
UploadInstallScript uploads the install.sh script to the root of the bucket.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| endpoint | Secret ! | - | Bucket endpoint URL |
| bucket | Secret ! | - | Bucket name |
| accessKeyId | Secret ! | - | Bucket access key ID |
| secretAccessKey | Secret ! | - | Bucket secret access key |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
upload-install-sh --endpoint env:MYSECRET --bucket env:MYSECRET --access-key-id env:MYSECRET --secret-access-key env:MYSECRETfunc (m *MyModule) Example(ctx context.Context, endpoint *dagger.Secret, bucket *dagger.Secret, accessKeyId *dagger.Secret, secretAccessKey *dagger.Secret) string {
return dag.
Masterblaster().
UploadInstallSh(ctx, endpoint, bucket, accessKeyId, secretAccessKey)
}@function
async def example(endpoint: dagger.Secret, bucket: dagger.Secret, access_key_id: dagger.Secret, secret_access_key: dagger.Secret) -> str:
return await (
dag.masterblaster()
.upload_install_sh(endpoint, bucket, access_key_id, secret_access_key)
)@func()
async example(endpoint: Secret, bucket: Secret, accessKeyId: Secret, secretAccessKey: Secret): Promise<string> {
return dag
.masterblaster()
.uploadInstallSh(endpoint, bucket, accessKeyId, secretAccessKey)
}golangcilint() 🔗
Return Type
Golangcilint !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| source | Directory | - | The Go source directory to lint. |
| config | File | - | An optional golangci-lint configuration file (.golangci.yml) that replaces the built-in opinionated defaults. |
| envVars | [String ! ] | - | Optional environment variables to set in the lint container. Each entry must be in "KEY=VALUE" format (e.g. "GOEXPERIMENT=rangefunc"). |
| baseCtr | Container | - | Optional base container with golangci-lint already installed. When provided it replaces the default golangci-lint image, allowing callers to supply extra system libraries or tooling (e.g. sqlite-dev). The container must have golangci-lint on PATH. |
Example
dagger -m github.com/papercomputeco/masterblaster@b8a5fc07df6ef85b8bfaf3b6aec2043d847154aa call \
golangcilintfunc (m *MyModule) Example() *dagger.Golangcilint {
return dag.
Masterblaster().
Golangcilint()
}@function
def example() -> dagger.Golangcilint:
return (
dag.masterblaster()
.golangcilint()
)@func()
example(): Golangcilint {
return dag
.masterblaster()
.golangcilint()
}