Dagger
Search

dagger-pipelines

Multi-language module with composable pipeline steps for:
- .NET: restore, build, test, pack, NuGet publish
- Node.js: install, typecheck, lint, test, build (npm/pnpm/bun)
- VS Code Extensions: build, package VSIX, publish to Marketplace
- Next.js: lint, typecheck, build, static export
- npm Packages: typecheck, test, pack, publish to npm
- Cloudflare Workers: typecheck, deploy via wrangler
- Node Audit: Node.js dependency vulnerability checks
- .NET Audit: .NET dependency vulnerability checks
- GitHub Release: create releases with artifact uploads
- Docker: build from Dockerfile, push to any OCI registry
- Cloudflare Pages: deploy a static artifact to Pages (env-by-branch)
- Preview Deploy: PR preview deployments to Cloudflare Pages (deprecated → use Cloudflare Pages)
- DB Migrations: EF Core migration validation
- Changelog: conventional commit parsing to markdown
- Postgres: ephemeral Postgres service for integration tests

Each sub-module can be accessed via its factory function:
dagger call node ci --source=.
dagger call vscode-extension ci --source=.
dagger call nextjs ci --source=.
dagger call npm-package ci --source=.
dagger call cloudflare-worker ci --source=.
dagger call node-audit audit --source=.
dagger call dotnet-audit audit --source=. --solution="MyLib.sln"
dagger call github-release create --tag=v1.0.0 --repo=user/repo
dagger call docker ci --source=.
dagger call frontend write-runtime-config --dir=./out --config-json='{"k":"v"}'
dagger call cloudflare-pages deploy --source=./out --project-name=my-site --branch=staging
dagger call preview-deploy deploy --source=./out --project-name=my-site # deprecated
dagger call dotnet-migrations validate --source=. --project=src/MyApp
dagger call changelog generate --commits="feat: ..."
dagger call postgres service --db-name=mydb

.NET functions remain on the root object for backward compatibility:
dagger call build --source=. --solution="MyLib.sln"

Installation

dagger install github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009

Entrypoint

Return Type
DaggerPipelines
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
func (m *MyModule) Example() *dagger.DaggerPipelines  {
	return dag.
			Daggerpipelines()
}
@function
def example() -> dagger.DaggerPipelines:
	return (
		dag.dagger_pipelines()
	)
@func()
example(): DaggerPipelines {
	return dag
		.daggerPipelines()
}

Types

DaggerPipelines 🔗

node() 🔗

Node.js CI pipeline (install, typecheck, lint, test, build)

Return Type
DaggerPipelinesNodeCi !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node
func (m *MyModule) Example() *dagger.DaggerPipelinesNodeCi  {
	return dag.
			Daggerpipelines().
			Node()
}
@function
def example() -> dagger.DaggerPipelinesNodeCi:
	return (
		dag.dagger_pipelines()
		.node()
	)
@func()
example(): DaggerPipelinesNodeCi {
	return dag
		.daggerPipelines()
		.node()
}

frontend() 🔗

Frontend monorepo CI pipeline (Turborepo + pnpm: typecheck, test, build, export)

Return Type
DaggerPipelinesFrontend !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend
func (m *MyModule) Example() *dagger.DaggerPipelinesFrontend  {
	return dag.
			Daggerpipelines().
			Frontend()
}
@function
def example() -> dagger.DaggerPipelinesFrontend:
	return (
		dag.dagger_pipelines()
		.frontend()
	)
@func()
example(): DaggerPipelinesFrontend {
	return dag
		.daggerPipelines()
		.frontend()
}

vscodeExtension() 🔗

VS Code Extension pipeline (build, package VSIX, publish)

Return Type
DaggerPipelinesVscodeExtension !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension
func (m *MyModule) Example() *dagger.DaggerPipelinesVscodeExtension  {
	return dag.
			Daggerpipelines().
			Vscodeextension()
}
@function
def example() -> dagger.DaggerPipelinesVscodeExtension:
	return (
		dag.dagger_pipelines()
		.vscodeextension()
	)
@func()
example(): DaggerPipelinesVscodeExtension {
	return dag
		.daggerPipelines()
		.vscodeExtension()
}

nextjs() 🔗

Next.js pipeline (lint, typecheck, build, static export)

Return Type
DaggerPipelinesNextjs !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 nextjs
func (m *MyModule) Example() *dagger.DaggerPipelinesNextjs  {
	return dag.
			Daggerpipelines().
			Nextjs()
}
@function
def example() -> dagger.DaggerPipelinesNextjs:
	return (
		dag.dagger_pipelines()
		.nextjs()
	)
@func()
example(): DaggerPipelinesNextjs {
	return dag
		.daggerPipelines()
		.nextjs()
}

npmPackage() 🔗

npm Package pipeline (typecheck, test, pack, publish)

Return Type
DaggerPipelinesNpmPackage !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package
func (m *MyModule) Example() *dagger.DaggerPipelinesNpmPackage  {
	return dag.
			Daggerpipelines().
			Npmpackage()
}
@function
def example() -> dagger.DaggerPipelinesNpmPackage:
	return (
		dag.dagger_pipelines()
		.npmpackage()
	)
@func()
example(): DaggerPipelinesNpmPackage {
	return dag
		.daggerPipelines()
		.npmPackage()
}

cloudflareWorker() 🔗

Cloudflare Worker pipeline (typecheck, deploy)

Return Type
DaggerPipelinesCloudflareWorker !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker
func (m *MyModule) Example() *dagger.DaggerPipelinesCloudflareWorker  {
	return dag.
			Daggerpipelines().
			Cloudflareworker()
}
@function
def example() -> dagger.DaggerPipelinesCloudflareWorker:
	return (
		dag.dagger_pipelines()
		.cloudflareworker()
	)
@func()
example(): DaggerPipelinesCloudflareWorker {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
}

versioning() 🔗

Version resolver (NerdBank-style semver from branch context)

Return Type
DaggerPipelinesVersioning !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 versioning
func (m *MyModule) Example() *dagger.DaggerPipelinesVersioning  {
	return dag.
			Daggerpipelines().
			Versioning()
}
@function
def example() -> dagger.DaggerPipelinesVersioning:
	return (
		dag.dagger_pipelines()
		.versioning()
	)
@func()
example(): DaggerPipelinesVersioning {
	return dag
		.daggerPipelines()
		.versioning()
}

nodeAudit() 🔗

Node.js dependency audit pipeline

Return Type
DaggerPipelinesNodeAudit !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node-audit
func (m *MyModule) Example() *dagger.DaggerPipelinesNodeAudit  {
	return dag.
			Daggerpipelines().
			Nodeaudit()
}
@function
def example() -> dagger.DaggerPipelinesNodeAudit:
	return (
		dag.dagger_pipelines()
		.nodeaudit()
	)
@func()
example(): DaggerPipelinesNodeAudit {
	return dag
		.daggerPipelines()
		.nodeAudit()
}

dotnetAudit() 🔗

.NET dependency audit pipeline

Return Type
DaggerPipelinesDotnetAudit !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 dotnet-audit
func (m *MyModule) Example() *dagger.DaggerPipelinesDotnetAudit  {
	return dag.
			Daggerpipelines().
			Dotnetaudit()
}
@function
def example() -> dagger.DaggerPipelinesDotnetAudit:
	return (
		dag.dagger_pipelines()
		.dotnetaudit()
	)
@func()
example(): DaggerPipelinesDotnetAudit {
	return dag
		.daggerPipelines()
		.dotnetAudit()
}

githubRelease() 🔗

GitHub Release pipeline (create releases with artifact uploads)

Return Type
DaggerPipelinesGithubRelease !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 github-release
func (m *MyModule) Example() *dagger.DaggerPipelinesGithubRelease  {
	return dag.
			Daggerpipelines().
			Githubrelease()
}
@function
def example() -> dagger.DaggerPipelinesGithubRelease:
	return (
		dag.dagger_pipelines()
		.githubrelease()
	)
@func()
example(): DaggerPipelinesGithubRelease {
	return dag
		.daggerPipelines()
		.githubRelease()
}

docker() 🔗

Docker build and push pipeline (Dockerfile → registry)

Return Type
DaggerPipelinesDocker !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 docker
func (m *MyModule) Example() *dagger.DaggerPipelinesDocker  {
	return dag.
			Daggerpipelines().
			Docker()
}
@function
def example() -> dagger.DaggerPipelinesDocker:
	return (
		dag.dagger_pipelines()
		.docker()
	)
@func()
example(): DaggerPipelinesDocker {
	return dag
		.daggerPipelines()
		.docker()
}

previewDeploy() 🔗

PR preview deploy pipeline (Cloudflare Pages)

Return Type
DaggerPipelinesPreviewDeploy !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 preview-deploy
func (m *MyModule) Example() *dagger.DaggerPipelinesPreviewDeploy  {
	return dag.
			Daggerpipelines().
			Previewdeploy()
}
@function
def example() -> dagger.DaggerPipelinesPreviewDeploy:
	return (
		dag.dagger_pipelines()
		.previewdeploy()
	)
@func()
example(): DaggerPipelinesPreviewDeploy {
	return dag
		.daggerPipelines()
		.previewDeploy()
}

cloudflarePages() 🔗

Cloudflare Pages deploy pipeline (static artifact → Pages, env-by-branch)

Return Type
DaggerPipelinesCloudflarePages !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-pages
func (m *MyModule) Example() *dagger.DaggerPipelinesCloudflarePages  {
	return dag.
			Daggerpipelines().
			Cloudflarepages()
}
@function
def example() -> dagger.DaggerPipelinesCloudflarePages:
	return (
		dag.dagger_pipelines()
		.cloudflarepages()
	)
@func()
example(): DaggerPipelinesCloudflarePages {
	return dag
		.daggerPipelines()
		.cloudflarePages()
}

dotnetMigrations() 🔗

EF Core migration validation pipeline

Return Type
DaggerPipelinesDotnetMigrations !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 dotnet-migrations
func (m *MyModule) Example() *dagger.DaggerPipelinesDotnetMigrations  {
	return dag.
			Daggerpipelines().
			Dotnetmigrations()
}
@function
def example() -> dagger.DaggerPipelinesDotnetMigrations:
	return (
		dag.dagger_pipelines()
		.dotnetmigrations()
	)
@func()
example(): DaggerPipelinesDotnetMigrations {
	return dag
		.daggerPipelines()
		.dotnetMigrations()
}

changelog() 🔗

Changelog generation from conventional commits

Return Type
DaggerPipelinesChangelog !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 changelog
func (m *MyModule) Example() *dagger.DaggerPipelinesChangelog  {
	return dag.
			Daggerpipelines().
			Changelog()
}
@function
def example() -> dagger.DaggerPipelinesChangelog:
	return (
		dag.dagger_pipelines()
		.changelog()
	)
@func()
example(): DaggerPipelinesChangelog {
	return dag
		.daggerPipelines()
		.changelog()
}

postgres() 🔗

Reusable Postgres service pipeline (ephemeral DB for integration tests)

Return Type
DaggerPipelinesPostgres !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres
func (m *MyModule) Example() *dagger.DaggerPipelinesPostgres  {
	return dag.
			Daggerpipelines().
			Postgres()
}
@function
def example() -> dagger.DaggerPipelinesPostgres:
	return (
		dag.dagger_pipelines()
		.postgres()
	)
@func()
example(): DaggerPipelinesPostgres {
	return dag
		.daggerPipelines()
		.postgres()
}

restore() 🔗

Base .NET SDK container with source mounted and restored

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
dotnetVersionString !"8.0"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 restore --source DIR_PATH --solution string --dotnet-version string
func (m *MyModule) Example(source *dagger.Directory, solution string, dotnetVersion string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Restore(source, solution, dotnetVersion)
}
@function
def example(source: dagger.Directory, solution: str, dotnetversion: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.restore(source, solution, dotnetversion)
	)
@func()
example(source: Directory, solution: string, dotnetVersion: string): Container {
	return dag
		.daggerPipelines()
		.restore(source, solution, dotnetVersion)
}

build() 🔗

Build in Release configuration

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
dotnetVersionString !"8.0"No description provided
configurationString !"Release"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 build --source DIR_PATH --solution string --dotnet-version string --configuration string
func (m *MyModule) Example(source *dagger.Directory, solution string, dotnetVersion string, configuration string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Build(source, solution, dotnetVersion, configuration)
}
@function
def example(source: dagger.Directory, solution: str, dotnetversion: str, configuration: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.build(source, solution, dotnetversion, configuration)
	)
@func()
example(source: Directory, solution: string, dotnetVersion: string, configuration: string): Container {
	return dag
		.daggerPipelines()
		.build(source, solution, dotnetVersion, configuration)
}

test() 🔗

Run tests for a specific test project or the full solution

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
dotnetVersionString !"8.0"No description provided
configurationString !"Release"No description provided
testProjectString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test --source DIR_PATH --solution string --dotnet-version string --configuration string --test-project string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, solution string, dotnetVersion string, configuration string, testProject string) string  {
	return dag.
			Daggerpipelines().
			Test(ctx, source, solution, dotnetVersion, configuration, testProject)
}
@function
async def example(source: dagger.Directory, solution: str, dotnetversion: str, configuration: str, testproject: str) -> str:
	return await (
		dag.dagger_pipelines()
		.test(source, solution, dotnetversion, configuration, testproject)
	)
@func()
async example(source: Directory, solution: string, dotnetVersion: string, configuration: string, testProject: string): Promise<string> {
	return dag
		.daggerPipelines()
		.test(source, solution, dotnetVersion, configuration, testProject)
}

pack() 🔗

Pack one or more projects into NuGet packages

Pass a single .csproj path or comma-separated list for multi-package solutions. Example: “src/Lib/Lib.csproj” or “src/A/A.csproj,src/B/B.csproj”

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
projectsString !-No description provided
versionString !"1.0.0"No description provided
dotnetVersionString !"8.0"No description provided
configurationString !"Release"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 pack --source DIR_PATH --solution string --projects string --version string --dotnet-version string --configuration string
func (m *MyModule) Example(source *dagger.Directory, solution string, projects string, version string, dotnetVersion string, configuration string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Pack(source, solution, projects, version, dotnetVersion, configuration)
}
@function
def example(source: dagger.Directory, solution: str, projects: str, version: str, dotnetversion: str, configuration: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.pack(source, solution, projects, version, dotnetversion, configuration)
	)
@func()
example(source: Directory, solution: string, projects: string, version: string, dotnetVersion: string, configuration: string): Container {
	return dag
		.daggerPipelines()
		.pack(source, solution, projects, version, dotnetVersion, configuration)
}

publish() 🔗

Push all .nupkg files from /packages to NuGet.org

Return Type
String !
Arguments
NameTypeDefault ValueDescription
containerContainer !-No description provided
nugetApiKeySecret !-No description provided
nugetSourceString !"https://api.nuget.org/v3/index.json"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 publish --container IMAGE:TAG --nuget-api-key env:MYSECRET --nuget-source string
func (m *MyModule) Example(ctx context.Context, container *dagger.Container, nugetApiKey *dagger.Secret, nugetSource string) string  {
	return dag.
			Daggerpipelines().
			Publish(ctx, container, nugetApiKey, nugetSource)
}
@function
async def example(container: dagger.Container, nugetapikey: dagger.Secret, nugetsource: str) -> str:
	return await (
		dag.dagger_pipelines()
		.publish(container, nugetapikey, nugetsource)
	)
@func()
async example(container: Container, nugetApiKey: Secret, nugetSource: string): Promise<string> {
	return dag
		.daggerPipelines()
		.publish(container, nugetApiKey, nugetSource)
}

ci() 🔗

Full CI pipeline: restore → build → test → pack

Returns the container with .nupkg files in /packages ready for publish.

Set postgres to true to run the test step against an ephemeral Postgres bound into the test container, with its connection string exported as the environment variable named by postgresConnStringEnv (default DATABASE_URL). This is opt-in: with postgres false (the default) the test container is untouched and behaves exactly as before. The other postgres* parameters tune the image, database name, credentials, bound hostname, and port.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
projectsString !-No description provided
versionString !"1.0.0"No description provided
dotnetVersionString !"8.0"No description provided
configurationString !"Release"No description provided
testProjectString !""No description provided
postgresBoolean !falseNo description provided
postgresDbNameString !"app"No description provided
postgresUserString !"postgres"No description provided
postgresPasswordString !"postgres"No description provided
postgresImageString !"postgres:16-alpine"No description provided
postgresHostString !"postgres"No description provided
postgresPortInteger !5432No description provided
postgresConnStringEnvString !"DATABASE_URL"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 ci --source DIR_PATH --solution string --projects string --version string --dotnet-version string --configuration string --test-project string --postgres boolean --postgres-db-name string --postgres-user string --postgres-password string --postgres-image string --postgres-host string --postgres-port integer --postgres-conn-string-env string
func (m *MyModule) Example(source *dagger.Directory, solution string, projects string, version string, dotnetVersion string, configuration string, testProject string, postgres bool, postgresDbName string, postgresUser string, postgresPassword string, postgresImage string, postgresHost string, postgresPort int, postgresConnStringEnv string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Ci(source, solution, projects, version, dotnetVersion, configuration, testProject, postgres, postgresDbName, postgresUser, postgresPassword, postgresImage, postgresHost, postgresPort, postgresConnStringEnv)
}
@function
def example(source: dagger.Directory, solution: str, projects: str, version: str, dotnetversion: str, configuration: str, testproject: str, postgres: bool, postgresdbname: str, postgresuser: str, postgrespassword: str, postgresimage: str, postgreshost: str, postgresport: int, postgresconnstringenv: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.ci(source, solution, projects, version, dotnetversion, configuration, testproject, postgres, postgresdbname, postgresuser, postgrespassword, postgresimage, postgreshost, postgresport, postgresconnstringenv)
	)
@func()
example(source: Directory, solution: string, projects: string, version: string, dotnetVersion: string, configuration: string, testProject: string, postgres: boolean, postgresDbName: string, postgresUser: string, postgresPassword: string, postgresImage: string, postgresHost: string, postgresPort: number, postgresConnStringEnv: string): Container {
	return dag
		.daggerPipelines()
		.ci(source, solution, projects, version, dotnetVersion, configuration, testProject, postgres, postgresDbName, postgresUser, postgresPassword, postgresImage, postgresHost, postgresPort, postgresConnStringEnv)
}

release() 🔗

Full release pipeline: ci (build → test → pack) → publish to NuGet

CLI-friendly function that combines ci + publish in one call. Use this from GitHub Actions or local CLI when you want to build, test, pack, and push to NuGet in a single command.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
projectsString !-No description provided
nugetApiKeySecret !-No description provided
versionString !"1.0.0"No description provided
dotnetVersionString !"8.0"No description provided
configurationString !"Release"No description provided
testProjectString !""No description provided
nugetSourceString !"https://api.nuget.org/v3/index.json"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 release --source DIR_PATH --solution string --projects string --nuget-api-key env:MYSECRET --version string --dotnet-version string --configuration string --test-project string --nuget-source string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, solution string, projects string, nugetApiKey *dagger.Secret, version string, dotnetVersion string, configuration string, testProject string, nugetSource string) string  {
	return dag.
			Daggerpipelines().
			Release(ctx, source, solution, projects, nugetApiKey, version, dotnetVersion, configuration, testProject, nugetSource)
}
@function
async def example(source: dagger.Directory, solution: str, projects: str, nugetapikey: dagger.Secret, version: str, dotnetversion: str, configuration: str, testproject: str, nugetsource: str) -> str:
	return await (
		dag.dagger_pipelines()
		.release(source, solution, projects, nugetapikey, version, dotnetversion, configuration, testproject, nugetsource)
	)
@func()
async example(source: Directory, solution: string, projects: string, nugetApiKey: Secret, version: string, dotnetVersion: string, configuration: string, testProject: string, nugetSource: string): Promise<string> {
	return dag
		.daggerPipelines()
		.release(source, solution, projects, nugetApiKey, version, dotnetVersion, configuration, testProject, nugetSource)
}

testRestore() 🔗

Verify NuGet restore succeeds against the test fixture

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-restore
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testrestore(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testrestore()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testRestore()
}

testBuild() 🔗

Verify build succeeds against the test fixture

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-build
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testbuild(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testbuild()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testBuild()
}

testTest() 🔗

Verify tests pass against the test fixture

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-test
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testtest(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testtest()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testTest()
}

testPack() 🔗

Verify pack produces .nupkg files in /packages

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-pack
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testpack(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testpack()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testPack()
}

testCi() 🔗

Verify the full CI pipeline (restore → build → test → pack) end-to-end

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-ci
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testci(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testci()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testCi()
}

testCiPostgres() 🔗

Verify the CI pipeline still succeeds end-to-end with Postgres enabled

Runs the fixture through ci with postgres on, so the test step executes with an ephemeral Postgres bound and DATABASE_URL exported. Confirms the opt-in path builds, tests, and packs without breaking.

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-ci-postgres
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testcipostgres(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testcipostgres()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testCiPostgres()
}

testPostgres() 🔗

Verify a bound Postgres service is genuinely connectable

Delegates to the Postgres module’s own connection proof: starts a service, waits for readiness, and reports the server version over a real connection.

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-postgres
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testpostgres(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testpostgres()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testPostgres()
}

testVersionPr() 🔗

Verify PR version produces correct prerelease suffix

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-version-pr
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testversionpr(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testversionpr()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testVersionPr()
}

testVersionDev() 🔗

Verify dev/stage branches produce correct prerelease suffixes

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-version-dev
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testversiondev(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testversiondev()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testVersionDev()
}

testVersionRelease() 🔗

Verify main/master/tag produce clean versions

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-version-release
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testversionrelease(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testversionrelease()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testVersionRelease()
}

testChangelog() 🔗

Verify changelog generates correct markdown from conventional commits

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-changelog
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testchangelog(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testchangelog()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testChangelog()
}

testDotnetAudit() 🔗

Verify .NET audit runs against the test fixture

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-dotnet-audit
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testdotnetaudit(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testdotnetaudit()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testDotnetAudit()
}

testNodeAudit() 🔗

Verify Node.js audit runs against a minimal fixture

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-node-audit
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testnodeaudit(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testnodeaudit()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testNodeAudit()
}

testDockerBuild() 🔗

Verify Docker build from a Dockerfile in testdata

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-docker-build
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testdockerbuild(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testdockerbuild()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testDockerBuild()
}

testWriteRuntimeConfig() 🔗

Verify the generic runtime-config writer injects config.json into an artifact directory without disturbing the existing files.

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 test-write-runtime-config
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Testwriteruntimeconfig(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.testwriteruntimeconfig()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.testWriteRuntimeConfig()
}

DaggerPipelinesNodeCi 🔗

install() 🔗

Base Node.js container with source mounted and dependencies installed

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 install --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Node().
			Install(source, nodeVersion, packageManager)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.node()
		.install(source, nodeversion, packagemanager)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string): Container {
	return dag
		.daggerPipelines()
		.node()
		.install(source, nodeVersion, packageManager)
}

typecheck() 🔗

Run TypeScript type checking (tsc –noEmit)

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
tsconfigPathString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 typecheck --source DIR_PATH --node-version string --package-manager string --tsconfig-path string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string, tsconfigPath string) string  {
	return dag.
			Daggerpipelines().
			Node().
			Typecheck(ctx, source, nodeVersion, packageManager, tsconfigPath)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str, tsconfigpath: str) -> str:
	return await (
		dag.dagger_pipelines()
		.node()
		.typecheck(source, nodeversion, packagemanager, tsconfigpath)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string, tsconfigPath: string): Promise<string> {
	return dag
		.daggerPipelines()
		.node()
		.typecheck(source, nodeVersion, packageManager, tsconfigPath)
}

lint() 🔗

Run linter (defaults to “npm run lint”)

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
lintScriptString !"lint"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 lint --source DIR_PATH --node-version string --package-manager string --lint-script string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string, lintScript string) string  {
	return dag.
			Daggerpipelines().
			Node().
			Lint(ctx, source, nodeVersion, packageManager, lintScript)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str, lintscript: str) -> str:
	return await (
		dag.dagger_pipelines()
		.node()
		.lint(source, nodeversion, packagemanager, lintscript)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string, lintScript: string): Promise<string> {
	return dag
		.daggerPipelines()
		.node()
		.lint(source, nodeVersion, packageManager, lintScript)
}

test() 🔗

Run tests (defaults to “npm test”)

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
testScriptString !"test"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 test --source DIR_PATH --node-version string --package-manager string --test-script string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string, testScript string) string  {
	return dag.
			Daggerpipelines().
			Node().
			Test(ctx, source, nodeVersion, packageManager, testScript)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str, testscript: str) -> str:
	return await (
		dag.dagger_pipelines()
		.node()
		.test(source, nodeversion, packagemanager, testscript)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string, testScript: string): Promise<string> {
	return dag
		.daggerPipelines()
		.node()
		.test(source, nodeVersion, packageManager, testScript)
}

build() 🔗

Run build (defaults to “npm run build”)

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 build --source DIR_PATH --node-version string --package-manager string --build-script string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, buildScript string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Node().
			Build(source, nodeVersion, packageManager, buildScript)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, buildscript: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.node()
		.build(source, nodeversion, packagemanager, buildscript)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, buildScript: string): Container {
	return dag
		.daggerPipelines()
		.node()
		.build(source, nodeVersion, packageManager, buildScript)
}

ci() 🔗

Full CI pipeline: install → typecheck → lint → test → build

Skips lint/test steps if skipLint/skipTest are set.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !"build"No description provided
lintScriptString !"lint"No description provided
testScriptString !"test"No description provided
skipLintBoolean !falseNo description provided
skipTestBoolean !falseNo description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node \
 ci --source DIR_PATH --node-version string --package-manager string --build-script string --lint-script string --test-script string --skip-lint boolean --skip-test boolean
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, buildScript string, lintScript string, testScript string, skipLint bool, skipTest bool) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Node().
			Ci(source, nodeVersion, packageManager, buildScript, lintScript, testScript, skipLint, skipTest)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, buildscript: str, lintscript: str, testscript: str, skiplint: bool, skiptest: bool) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.node()
		.ci(source, nodeversion, packagemanager, buildscript, lintscript, testscript, skiplint, skiptest)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, buildScript: string, lintScript: string, testScript: string, skipLint: boolean, skipTest: boolean): Container {
	return dag
		.daggerPipelines()
		.node()
		.ci(source, nodeVersion, packageManager, buildScript, lintScript, testScript, skipLint, skipTest)
}

DaggerPipelinesFrontend 🔗

install() 🔗

Base container: Node + corepack-pinned pnpm, source mounted, deps installed.

Uses corepack so the pnpm version declared in the workspace’s package.json “packageManager” field is honored. Installing pnpm globally via npm would pull the latest pnpm and can break --frozen-lockfile against a lockfile produced by a pinned, older pnpm.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 install --source DIR_PATH --node-version string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Frontend().
			Install(source, nodeVersion)
}
@function
def example(source: dagger.Directory, nodeversion: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.frontend()
		.install(source, nodeversion)
	)
@func()
example(source: Directory, nodeVersion: string): Container {
	return dag
		.daggerPipelines()
		.frontend()
		.install(source, nodeVersion)
}

typecheck() 🔗

Type-check the whole workspace (pnpm run typecheckturbo run typecheck).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 typecheck --source DIR_PATH --node-version string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string) string  {
	return dag.
			Daggerpipelines().
			Frontend().
			Typecheck(ctx, source, nodeVersion)
}
@function
async def example(source: dagger.Directory, nodeversion: str) -> str:
	return await (
		dag.dagger_pipelines()
		.frontend()
		.typecheck(source, nodeversion)
	)
@func()
async example(source: Directory, nodeVersion: string): Promise<string> {
	return dag
		.daggerPipelines()
		.frontend()
		.typecheck(source, nodeVersion)
}

test() 🔗

Run the whole workspace test suite (pnpm run testturbo run test).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 test --source DIR_PATH --node-version string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string) string  {
	return dag.
			Daggerpipelines().
			Frontend().
			Test(ctx, source, nodeVersion)
}
@function
async def example(source: dagger.Directory, nodeversion: str) -> str:
	return await (
		dag.dagger_pipelines()
		.frontend()
		.test(source, nodeversion)
	)
@func()
async example(source: Directory, nodeVersion: string): Promise<string> {
	return dag
		.daggerPipelines()
		.frontend()
		.test(source, nodeVersion)
}

build() 🔗

Build every package and app (pnpm run buildturbo run build).

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 build --source DIR_PATH --node-version string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Frontend().
			Build(source, nodeVersion)
}
@function
def example(source: dagger.Directory, nodeversion: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.frontend()
		.build(source, nodeversion)
	)
@func()
example(source: Directory, nodeVersion: string): Container {
	return dag
		.daggerPipelines()
		.frontend()
		.build(source, nodeVersion)
}

ci() 🔗

Full CI pipeline: install → typecheck → test → build (whole graph).

Returns the built container. Because the root scripts delegate to turbo run, this validates that every package and app is type-safe, tested, and buildable — the guarantee that no single change silently breaks another app.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 ci --source DIR_PATH --node-version string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Frontend().
			Ci(source, nodeVersion)
}
@function
def example(source: dagger.Directory, nodeversion: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.frontend()
		.ci(source, nodeversion)
	)
@func()
example(source: Directory, nodeVersion: string): Container {
	return dag
		.daggerPipelines()
		.frontend()
		.ci(source, nodeVersion)
}

buildDir() 🔗

Build the workspace and export a single app’s output directory.

Returns the built output as a Directory, ready to hand to a deploy step (e.g. preview-deploy deploy). Defaults to the showcase app’s Vite dist.

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
outputPathString !"apps/showcase/dist"No description provided
nodeVersionString !"22"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 build-dir --source DIR_PATH --output-path string --node-version string
func (m *MyModule) Example(source *dagger.Directory, outputPath string, nodeVersion string) *dagger.Directory  {
	return dag.
			Daggerpipelines().
			Frontend().
			Builddir(source, outputPath, nodeVersion)
}
@function
def example(source: dagger.Directory, outputpath: str, nodeversion: str) -> dagger.Directory:
	return (
		dag.dagger_pipelines()
		.frontend()
		.builddir(source, outputpath, nodeversion)
	)
@func()
example(source: Directory, outputPath: string, nodeVersion: string): Directory {
	return dag
		.daggerPipelines()
		.frontend()
		.buildDir(source, outputPath, nodeVersion)
}

writeRuntimeConfig() 🔗

Write a runtime config document into a built artifact directory.

Environment-specific public values (e.g. a Clerk publishable key, API base URL) are served per environment at runtime instead of inlined at build time, so the same artifact can be promoted across environments (“build once, promote”). This writes configJson to <configPath> inside the directory and returns the augmented directory, ready for a host-specific deploy step (e.g. cloudflare-pages deploy).

Platform-neutral on purpose: the config schema lives with the caller, not here, so this is reusable for any static host.

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
dirDirectory !-No description provided
configJsonString !-No description provided
configPathString !"config.json"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 frontend \
 write-runtime-config --dir DIR_PATH --config-json string --config-path string
func (m *MyModule) Example(dir *dagger.Directory, configJson string, configPath string) *dagger.Directory  {
	return dag.
			Daggerpipelines().
			Frontend().
			Writeruntimeconfig(dir, configJson, configPath)
}
@function
def example(dir: dagger.Directory, configjson: str, configpath: str) -> dagger.Directory:
	return (
		dag.dagger_pipelines()
		.frontend()
		.writeruntimeconfig(dir, configjson, configpath)
	)
@func()
example(dir: Directory, configJson: string, configPath: string): Directory {
	return dag
		.daggerPipelines()
		.frontend()
		.writeRuntimeConfig(dir, configJson, configPath)
}

DaggerPipelinesVscodeExtension 🔗

install() 🔗

Base container with Node.js, source mounted, and dependencies installed

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 install --source DIR_PATH --node-version string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Install(source, nodeVersion)
}
@function
def example(source: dagger.Directory, nodeversion: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.vscodeextension()
		.install(source, nodeversion)
	)
@func()
example(source: Directory, nodeVersion: string): Container {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.install(source, nodeVersion)
}

build() 🔗

Build the extension (esbuild or tsc, depending on project)

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 build --source DIR_PATH --node-version string --build-script string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, buildScript string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Build(source, nodeVersion, buildScript)
}
@function
def example(source: dagger.Directory, nodeversion: str, buildscript: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.vscodeextension()
		.build(source, nodeversion, buildscript)
	)
@func()
example(source: Directory, nodeVersion: string, buildScript: string): Container {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.build(source, nodeVersion, buildScript)
}

package() 🔗

Package the extension as a .vsix file

Installs

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 package --source DIR_PATH --node-version string --build-script string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, buildScript string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Package(source, nodeVersion, buildScript)
}
@function
def example(source: dagger.Directory, nodeversion: str, buildscript: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.vscodeextension()
		.package(source, nodeversion, buildscript)
	)
@func()
example(source: Directory, nodeVersion: string, buildScript: string): Container {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.package(source, nodeVersion, buildScript)
}

publish() 🔗

Publish the extension to the VS Code Marketplace

Return Type
String !
Arguments
NameTypeDefault ValueDescription
containerContainer !-No description provided
vsceTokenSecret !-No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 publish --container IMAGE:TAG --vsce-token env:MYSECRET
func (m *MyModule) Example(ctx context.Context, container *dagger.Container, vsceToken *dagger.Secret) string  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Publish(ctx, container, vsceToken)
}
@function
async def example(container: dagger.Container, vscetoken: dagger.Secret) -> str:
	return await (
		dag.dagger_pipelines()
		.vscodeextension()
		.publish(container, vscetoken)
	)
@func()
async example(container: Container, vsceToken: Secret): Promise<string> {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.publish(container, vsceToken)
}

ci() 🔗

Full CI pipeline: install → typecheck → build → package VSIX

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 ci --source DIR_PATH --node-version string --build-script string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, buildScript string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Ci(source, nodeVersion, buildScript)
}
@function
def example(source: dagger.Directory, nodeversion: str, buildscript: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.vscodeextension()
		.ci(source, nodeversion, buildscript)
	)
@func()
example(source: Directory, nodeVersion: string, buildScript: string): Container {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.ci(source, nodeVersion, buildScript)
}

release() 🔗

Full release pipeline: ci → publish to VS Code Marketplace

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
vsceTokenSecret !-No description provided
nodeVersionString !"20"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 vscode-extension \
 release --source DIR_PATH --vsce-token env:MYSECRET --node-version string --build-script string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, vsceToken *dagger.Secret, nodeVersion string, buildScript string) string  {
	return dag.
			Daggerpipelines().
			Vscodeextension().
			Release(ctx, source, vsceToken, nodeVersion, buildScript)
}
@function
async def example(source: dagger.Directory, vscetoken: dagger.Secret, nodeversion: str, buildscript: str) -> str:
	return await (
		dag.dagger_pipelines()
		.vscodeextension()
		.release(source, vscetoken, nodeversion, buildscript)
	)
@func()
async example(source: Directory, vsceToken: Secret, nodeVersion: string, buildScript: string): Promise<string> {
	return dag
		.daggerPipelines()
		.vscodeExtension()
		.release(source, vsceToken, nodeVersion, buildScript)
}

DaggerPipelinesNextjs 🔗

install() 🔗

Base container with Node.js, source mounted, and dependencies installed

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 nextjs \
 install --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Nextjs().
			Install(source, nodeVersion, packageManager)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.nextjs()
		.install(source, nodeversion, packagemanager)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string): Container {
	return dag
		.daggerPipelines()
		.nextjs()
		.install(source, nodeVersion, packageManager)
}

build() 🔗

Build the Next.js application

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 nextjs \
 build --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Nextjs().
			Build(source, nodeVersion, packageManager)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.nextjs()
		.build(source, nodeversion, packagemanager)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string): Container {
	return dag
		.daggerPipelines()
		.nextjs()
		.build(source, nodeVersion, packageManager)
}

exportStatic() 🔗

Export a static build (output directory)

Requires output: 'export' in next.config. Returns the exported directory (typically out/).

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
outputDirString !"out"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 nextjs \
 export-static --source DIR_PATH --node-version string --package-manager string --output-dir string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, outputDir string) *dagger.Directory  {
	return dag.
			Daggerpipelines().
			Nextjs().
			Exportstatic(source, nodeVersion, packageManager, outputDir)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, outputdir: str) -> dagger.Directory:
	return (
		dag.dagger_pipelines()
		.nextjs()
		.exportstatic(source, nodeversion, packagemanager, outputdir)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, outputDir: string): Directory {
	return dag
		.daggerPipelines()
		.nextjs()
		.exportStatic(source, nodeVersion, packageManager, outputDir)
}

ci() 🔗

Full CI pipeline: install → typecheck → lint → build

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
skipLintBoolean !falseNo description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 nextjs \
 ci --source DIR_PATH --node-version string --package-manager string --skip-lint boolean
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, skipLint bool) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Nextjs().
			Ci(source, nodeVersion, packageManager, skipLint)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, skiplint: bool) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.nextjs()
		.ci(source, nodeversion, packagemanager, skiplint)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, skipLint: boolean): Container {
	return dag
		.daggerPipelines()
		.nextjs()
		.ci(source, nodeVersion, packageManager, skipLint)
}

DaggerPipelinesNpmPackage 🔗

install() 🔗

Base container with Node.js, source mounted, and dependencies installed

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package \
 install --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Npmpackage().
			Install(source, nodeVersion, packageManager)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.npmpackage()
		.install(source, nodeversion, packagemanager)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string): Container {
	return dag
		.daggerPipelines()
		.npmPackage()
		.install(source, nodeVersion, packageManager)
}

pack() 🔗

Pack the package into a tarball (.tgz)

Runs build first, then npm pack into /packages directory.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !"build"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package \
 pack --source DIR_PATH --node-version string --package-manager string --build-script string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, buildScript string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Npmpackage().
			Pack(source, nodeVersion, packageManager, buildScript)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, buildscript: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.npmpackage()
		.pack(source, nodeversion, packagemanager, buildscript)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, buildScript: string): Container {
	return dag
		.daggerPipelines()
		.npmPackage()
		.pack(source, nodeVersion, packageManager, buildScript)
}

publish() 🔗

Publish the package to npm registry

Return Type
String !
Arguments
NameTypeDefault ValueDescription
containerContainer !-No description provided
npmTokenSecret !-No description provided
registryString !"https://registry.npmjs.org"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package \
 publish --container IMAGE:TAG --npm-token env:MYSECRET --registry string
func (m *MyModule) Example(ctx context.Context, container *dagger.Container, npmToken *dagger.Secret, registry string) string  {
	return dag.
			Daggerpipelines().
			Npmpackage().
			Publish(ctx, container, npmToken, registry)
}
@function
async def example(container: dagger.Container, npmtoken: dagger.Secret, registry: str) -> str:
	return await (
		dag.dagger_pipelines()
		.npmpackage()
		.publish(container, npmtoken, registry)
	)
@func()
async example(container: Container, npmToken: Secret, registry: string): Promise<string> {
	return dag
		.daggerPipelines()
		.npmPackage()
		.publish(container, npmToken, registry)
}

ci() 🔗

Full CI pipeline: install → typecheck → test → build → pack

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !"build"No description provided
testScriptString !"test"No description provided
skipTestBoolean !falseNo description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package \
 ci --source DIR_PATH --node-version string --package-manager string --build-script string --test-script string --skip-test boolean
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string, buildScript string, testScript string, skipTest bool) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Npmpackage().
			Ci(source, nodeVersion, packageManager, buildScript, testScript, skipTest)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str, buildscript: str, testscript: str, skiptest: bool) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.npmpackage()
		.ci(source, nodeversion, packagemanager, buildscript, testscript, skiptest)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string, buildScript: string, testScript: string, skipTest: boolean): Container {
	return dag
		.daggerPipelines()
		.npmPackage()
		.ci(source, nodeVersion, packageManager, buildScript, testScript, skipTest)
}

release() 🔗

Full release pipeline: ci → publish to npm

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
npmTokenSecret !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !"build"No description provided
testScriptString !"test"No description provided
skipTestBoolean !falseNo description provided
registryString !"https://registry.npmjs.org"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 npm-package \
 release --source DIR_PATH --npm-token env:MYSECRET --node-version string --package-manager string --build-script string --test-script string --skip-test boolean --registry string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, npmToken *dagger.Secret, nodeVersion string, packageManager string, buildScript string, testScript string, skipTest bool, registry string) string  {
	return dag.
			Daggerpipelines().
			Npmpackage().
			Release(ctx, source, npmToken, nodeVersion, packageManager, buildScript, testScript, skipTest, registry)
}
@function
async def example(source: dagger.Directory, npmtoken: dagger.Secret, nodeversion: str, packagemanager: str, buildscript: str, testscript: str, skiptest: bool, registry: str) -> str:
	return await (
		dag.dagger_pipelines()
		.npmpackage()
		.release(source, npmtoken, nodeversion, packagemanager, buildscript, testscript, skiptest, registry)
	)
@func()
async example(source: Directory, npmToken: Secret, nodeVersion: string, packageManager: string, buildScript: string, testScript: string, skipTest: boolean, registry: string): Promise<string> {
	return dag
		.daggerPipelines()
		.npmPackage()
		.release(source, npmToken, nodeVersion, packageManager, buildScript, testScript, skipTest, registry)
}

DaggerPipelinesCloudflareWorker 🔗

install() 🔗

Base container with Node.js, source mounted, and dependencies installed. Honors the chosen package manager (npm/pnpm/bun).

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker \
 install --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(source *dagger.Directory, nodeVersion string, packageManager string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Cloudflareworker().
			Install(source, nodeVersion, packageManager)
}
@function
def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.cloudflareworker()
		.install(source, nodeversion, packagemanager)
	)
@func()
example(source: Directory, nodeVersion: string, packageManager: string): Container {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
		.install(source, nodeVersion, packageManager)
}

typecheck() 🔗

Run TypeScript type checking

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker \
 typecheck --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string) string  {
	return dag.
			Daggerpipelines().
			Cloudflareworker().
			Typecheck(ctx, source, nodeVersion, packageManager)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> str:
	return await (
		dag.dagger_pipelines()
		.cloudflareworker()
		.typecheck(source, nodeversion, packagemanager)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string): Promise<string> {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
		.typecheck(source, nodeVersion, packageManager)
}

deploy() 🔗

Deploy via wrangler (or any wrangler-compatible deploy command).

Generic across worker styles: - plain Worker → defaults to wrangler deploy - build-then-deploy → set buildScript to run a package script first - custom toolchains → set deployCommand (e.g. for OpenNext: “bunx opennextjs-cloudflare deploy”)

The Cloudflare API token is passed as a Dagger Secret (never logged).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
cfApiTokenSecret !-No description provided
cfAccountIdString !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
buildScriptString !""No description provided
deployCommandString !""No description provided
environmentString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker \
 deploy --source DIR_PATH --cf-api-token env:MYSECRET --cf-account-id string --node-version string --package-manager string --build-script string --deploy-command string --environment string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, cfApiToken *dagger.Secret, cfAccountId string, nodeVersion string, packageManager string, buildScript string, deployCommand string, environment string) string  {
	return dag.
			Daggerpipelines().
			Cloudflareworker().
			Deploy(ctx, source, cfApiToken, cfAccountId, nodeVersion, packageManager, buildScript, deployCommand, environment)
}
@function
async def example(source: dagger.Directory, cfapitoken: dagger.Secret, cfaccountid: str, nodeversion: str, packagemanager: str, buildscript: str, deploycommand: str, environment: str) -> str:
	return await (
		dag.dagger_pipelines()
		.cloudflareworker()
		.deploy(source, cfapitoken, cfaccountid, nodeversion, packagemanager, buildscript, deploycommand, environment)
	)
@func()
async example(source: Directory, cfApiToken: Secret, cfAccountId: string, nodeVersion: string, packageManager: string, buildScript: string, deployCommand: string, environment: string): Promise<string> {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
		.deploy(source, cfApiToken, cfAccountId, nodeVersion, packageManager, buildScript, deployCommand, environment)
}

executeSql() 🔗

Execute a SQL file against a Cloudflare D1 database via wrangler. Generic — usable by any project with a D1 binding (migrations, seeds, syncs). Named without a digit so the generated CLI command is unambiguous (execute-sql).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
cfApiTokenSecret !-No description provided
cfAccountIdString !-No description provided
databaseString !-No description provided
fileString !-No description provided
remoteBoolean !trueNo description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker \
 execute-sql --source DIR_PATH --cf-api-token env:MYSECRET --cf-account-id string --database string --file string --remote boolean --node-version string --package-manager string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, cfApiToken *dagger.Secret, cfAccountId string, database string, file string, remote bool, nodeVersion string, packageManager string) string  {
	return dag.
			Daggerpipelines().
			Cloudflareworker().
			Executesql(ctx, source, cfApiToken, cfAccountId, database, file, remote, nodeVersion, packageManager)
}
@function
async def example(source: dagger.Directory, cfapitoken: dagger.Secret, cfaccountid: str, database: str, file: str, remote: bool, nodeversion: str, packagemanager: str) -> str:
	return await (
		dag.dagger_pipelines()
		.cloudflareworker()
		.executesql(source, cfapitoken, cfaccountid, database, file, remote, nodeversion, packagemanager)
	)
@func()
async example(source: Directory, cfApiToken: Secret, cfAccountId: string, database: string, file: string, remote: boolean, nodeVersion: string, packageManager: string): Promise<string> {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
		.executeSql(source, cfApiToken, cfAccountId, database, file, remote, nodeVersion, packageManager)
}

ci() 🔗

Full CI pipeline: install → typecheck

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-worker \
 ci --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string) string  {
	return dag.
			Daggerpipelines().
			Cloudflareworker().
			Ci(ctx, source, nodeVersion, packageManager)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> str:
	return await (
		dag.dagger_pipelines()
		.cloudflareworker()
		.ci(source, nodeversion, packagemanager)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string): Promise<string> {
	return dag
		.daggerPipelines()
		.cloudflareWorker()
		.ci(source, nodeVersion, packageManager)
}

DaggerPipelinesVersioning 🔗

resolve() 🔗

Resolve a semver version based on branch context.

Pass git info from your CI environment — the function computes the correct prerelease suffix. Locally testable: dagger call versioning resolve –base-version=1.2.0 –branch=dev –height=42

Return Type
String !
Arguments
NameTypeDefault ValueDescription
baseVersionString !-No description provided
branchString !"main"No description provided
heightString !"0"No description provided
contextString !""No description provided
prNumberString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 versioning \
 resolve --base-version string --branch string --height string --context string --pr-number string
func (m *MyModule) Example(ctx context.Context, baseVersion string, branch string, height string, context string, prNumber string) string  {
	return dag.
			Daggerpipelines().
			Versioning().
			Resolve(ctx, baseVersion, branch, height, context, prNumber)
}
@function
async def example(baseversion: str, branch: str, height: str, context: str, prnumber: str) -> str:
	return await (
		dag.dagger_pipelines()
		.versioning()
		.resolve(baseversion, branch, height, context, prnumber)
	)
@func()
async example(baseVersion: string, branch: string, height: string, context: string, prNumber: string): Promise<string> {
	return dag
		.daggerPipelines()
		.versioning()
		.resolve(baseVersion, branch, height, context, prNumber)
}

DaggerPipelinesNodeAudit 🔗

audit() 🔗

Run dependency audit for a Node.js project

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
nodeVersionString !"20"No description provided
packageManagerString !"npm"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 node-audit \
 audit --source DIR_PATH --node-version string --package-manager string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, nodeVersion string, packageManager string) string  {
	return dag.
			Daggerpipelines().
			Nodeaudit().
			Audit(ctx, source, nodeVersion, packageManager)
}
@function
async def example(source: dagger.Directory, nodeversion: str, packagemanager: str) -> str:
	return await (
		dag.dagger_pipelines()
		.nodeaudit()
		.audit(source, nodeversion, packagemanager)
	)
@func()
async example(source: Directory, nodeVersion: string, packageManager: string): Promise<string> {
	return dag
		.daggerPipelines()
		.nodeAudit()
		.audit(source, nodeVersion, packageManager)
}

DaggerPipelinesDotnetAudit 🔗

audit() 🔗

Run dependency audit for a .NET project

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
solutionString !-No description provided
dotnetVersionString !"8.0"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 dotnet-audit \
 audit --source DIR_PATH --solution string --dotnet-version string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, solution string, dotnetVersion string) string  {
	return dag.
			Daggerpipelines().
			Dotnetaudit().
			Audit(ctx, source, solution, dotnetVersion)
}
@function
async def example(source: dagger.Directory, solution: str, dotnetversion: str) -> str:
	return await (
		dag.dagger_pipelines()
		.dotnetaudit()
		.audit(source, solution, dotnetversion)
	)
@func()
async example(source: Directory, solution: string, dotnetVersion: string): Promise<string> {
	return dag
		.daggerPipelines()
		.dotnetAudit()
		.audit(source, solution, dotnetVersion)
}

DaggerPipelinesGithubRelease 🔗

create() 🔗

Create a GitHub release

Uses gh CLI inside a container to create a release on the specified repo. Optionally uploads all files from an artifacts directory.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
tagString !-No description provided
repoString !-No description provided
ghTokenSecret !-No description provided
titleString !""No description provided
notesString !""No description provided
draftBoolean !falseNo description provided
prereleaseBoolean !falseNo description provided
artifactsDirectory -No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 github-release \
 create --tag string --repo string --gh-token env:MYSECRET --title string --notes string --draft boolean --prerelease boolean
func (m *MyModule) Example(ctx context.Context, tag string, repo string, ghToken *dagger.Secret, title string, notes string, draft bool, prerelease bool) string  {
	return dag.
			Daggerpipelines().
			Githubrelease().
			Create(ctx, tag, repo, ghToken, title, notes, draft, prerelease)
}
@function
async def example(tag: str, repo: str, ghtoken: dagger.Secret, title: str, notes: str, draft: bool, prerelease: bool) -> str:
	return await (
		dag.dagger_pipelines()
		.githubrelease()
		.create(tag, repo, ghtoken, title, notes, draft, prerelease)
	)
@func()
async example(tag: string, repo: string, ghToken: Secret, title: string, notes: string, draft: boolean, prerelease: boolean): Promise<string> {
	return dag
		.daggerPipelines()
		.githubRelease()
		.create(tag, repo, ghToken, title, notes, draft, prerelease)
}

DaggerPipelinesDocker 🔗

build() 🔗

Build a container image from a Dockerfile

Uses Dagger’s native build — same as docker build but fully containerized.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
dockerfileString !"Dockerfile"No description provided
targetString !""No description provided
buildArgsString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 docker \
 build --source DIR_PATH --dockerfile string --target string --build-args string
func (m *MyModule) Example(source *dagger.Directory, dockerfile string, target string, buildArgs string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Docker().
			Build(source, dockerfile, target, buildArgs)
}
@function
def example(source: dagger.Directory, dockerfile: str, target: str, buildargs: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.docker()
		.build(source, dockerfile, target, buildargs)
	)
@func()
example(source: Directory, dockerfile: string, target: string, buildArgs: string): Container {
	return dag
		.daggerPipelines()
		.docker()
		.build(source, dockerfile, target, buildArgs)
}

push() 🔗

Push a built container to a registry

Authenticates and publishes the image. Returns the image digest.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
containerContainer !-No description provided
addressString !-No description provided
registryUsernameString !""No description provided
registryPasswordSecret -No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 docker \
 push --container IMAGE:TAG --address string --registry-username string
func (m *MyModule) Example(ctx context.Context, container *dagger.Container, address string, registryUsername string) string  {
	return dag.
			Daggerpipelines().
			Docker().
			Push(ctx, container, address, registryUsername)
}
@function
async def example(container: dagger.Container, address: str, registryusername: str) -> str:
	return await (
		dag.dagger_pipelines()
		.docker()
		.push(container, address, registryusername)
	)
@func()
async example(container: Container, address: string, registryUsername: string): Promise<string> {
	return dag
		.daggerPipelines()
		.docker()
		.push(container, address, registryUsername)
}

ci() 🔗

Full CI pipeline: build from Dockerfile

Returns the built container for further use (push, test, etc.).

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
dockerfileString !"Dockerfile"No description provided
targetString !""No description provided
buildArgsString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 docker \
 ci --source DIR_PATH --dockerfile string --target string --build-args string
func (m *MyModule) Example(source *dagger.Directory, dockerfile string, target string, buildArgs string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Docker().
			Ci(source, dockerfile, target, buildArgs)
}
@function
def example(source: dagger.Directory, dockerfile: str, target: str, buildargs: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.docker()
		.ci(source, dockerfile, target, buildargs)
	)
@func()
example(source: Directory, dockerfile: string, target: string, buildArgs: string): Container {
	return dag
		.daggerPipelines()
		.docker()
		.ci(source, dockerfile, target, buildArgs)
}

release() 🔗

Full release pipeline: build + push to registry

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
addressString !-No description provided
registryUsernameString !""No description provided
registryPasswordSecret -No description provided
dockerfileString !"Dockerfile"No description provided
targetString !""No description provided
buildArgsString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 docker \
 release --source DIR_PATH --address string --registry-username string --dockerfile string --target string --build-args string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, address string, registryUsername string, dockerfile string, target string, buildArgs string) string  {
	return dag.
			Daggerpipelines().
			Docker().
			Release(ctx, source, address, registryUsername, dockerfile, target, buildArgs)
}
@function
async def example(source: dagger.Directory, address: str, registryusername: str, dockerfile: str, target: str, buildargs: str) -> str:
	return await (
		dag.dagger_pipelines()
		.docker()
		.release(source, address, registryusername, dockerfile, target, buildargs)
	)
@func()
async example(source: Directory, address: string, registryUsername: string, dockerfile: string, target: string, buildArgs: string): Promise<string> {
	return dag
		.daggerPipelines()
		.docker()
		.release(source, address, registryUsername, dockerfile, target, buildArgs)
}

DaggerPipelinesPreviewDeploy 🔗

deploy() 🔗

Deploy a directory to Cloudflare Pages

Deploys the given output directory to a Cloudflare Pages project. Returns the preview URL. For PR builds, Cloudflare auto-generates a unique preview URL per deployment.

Set commitDirty to deploy without a clean git tree (the built output directory is mounted standalone, so wrangler otherwise treats it as dirty).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
projectNameString !-No description provided
cfApiTokenSecret !-No description provided
cfAccountIdString !-No description provided
branchString !""No description provided
nodeVersionString !"20"No description provided
commitDirtyBoolean !falseNo description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 preview-deploy \
 deploy --source DIR_PATH --project-name string --cf-api-token env:MYSECRET --cf-account-id string --branch string --node-version string --commit-dirty boolean
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, projectName string, cfApiToken *dagger.Secret, cfAccountId string, branch string, nodeVersion string, commitDirty bool) string  {
	return dag.
			Daggerpipelines().
			Previewdeploy().
			Deploy(ctx, source, projectName, cfApiToken, cfAccountId, branch, nodeVersion, commitDirty)
}
@function
async def example(source: dagger.Directory, projectname: str, cfapitoken: dagger.Secret, cfaccountid: str, branch: str, nodeversion: str, commitdirty: bool) -> str:
	return await (
		dag.dagger_pipelines()
		.previewdeploy()
		.deploy(source, projectname, cfapitoken, cfaccountid, branch, nodeversion, commitdirty)
	)
@func()
async example(source: Directory, projectName: string, cfApiToken: Secret, cfAccountId: string, branch: string, nodeVersion: string, commitDirty: boolean): Promise<string> {
	return dag
		.daggerPipelines()
		.previewDeploy()
		.deploy(source, projectName, cfApiToken, cfAccountId, branch, nodeVersion, commitDirty)
}

DaggerPipelinesCloudflarePages 🔗

deploy() 🔗

Deploy a built static directory to a Cloudflare Pages project.

Returns wrangler’s stdout (which includes the deployment URL). For a non-production branch, Cloudflare serves a stable per-branch alias plus a unique immutable per-deployment preview URL.

Set commitDirty when the artifact is mounted standalone (no git tree), which wrangler otherwise reports as a dirty deploy. The Cloudflare API token is passed as a Dagger Secret and never logged.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
projectNameString !-No description provided
cfApiTokenSecret !-No description provided
cfAccountIdString !-No description provided
branchString !""No description provided
nodeVersionString !"20"No description provided
commitDirtyBoolean !falseNo description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 cloudflare-pages \
 deploy --source DIR_PATH --project-name string --cf-api-token env:MYSECRET --cf-account-id string --branch string --node-version string --commit-dirty boolean
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, projectName string, cfApiToken *dagger.Secret, cfAccountId string, branch string, nodeVersion string, commitDirty bool) string  {
	return dag.
			Daggerpipelines().
			Cloudflarepages().
			Deploy(ctx, source, projectName, cfApiToken, cfAccountId, branch, nodeVersion, commitDirty)
}
@function
async def example(source: dagger.Directory, projectname: str, cfapitoken: dagger.Secret, cfaccountid: str, branch: str, nodeversion: str, commitdirty: bool) -> str:
	return await (
		dag.dagger_pipelines()
		.cloudflarepages()
		.deploy(source, projectname, cfapitoken, cfaccountid, branch, nodeversion, commitdirty)
	)
@func()
async example(source: Directory, projectName: string, cfApiToken: Secret, cfAccountId: string, branch: string, nodeVersion: string, commitDirty: boolean): Promise<string> {
	return dag
		.daggerPipelines()
		.cloudflarePages()
		.deploy(source, projectName, cfApiToken, cfAccountId, branch, nodeVersion, commitDirty)
}

DaggerPipelinesDotnetMigrations 🔗

validate() 🔗

Validate EF Core migrations produce valid SQL

Installs the dotnet-ef tool, restores the project, and runs dotnet ef migrations script to verify all migrations compile and generate valid SQL. Fails if any migration is broken.

Pass the project containing the DbContext and optionally a separate startup project if your DbContext is in a class library.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
projectString !-No description provided
dotnetVersionString !"8.0"No description provided
startupProjectString !""No description provided
dbContextString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 dotnet-migrations \
 validate --source DIR_PATH --project string --dotnet-version string --startup-project string --db-context string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, project string, dotnetVersion string, startupProject string, dbContext string) string  {
	return dag.
			Daggerpipelines().
			Dotnetmigrations().
			Validate(ctx, source, project, dotnetVersion, startupProject, dbContext)
}
@function
async def example(source: dagger.Directory, project: str, dotnetversion: str, startupproject: str, dbcontext: str) -> str:
	return await (
		dag.dagger_pipelines()
		.dotnetmigrations()
		.validate(source, project, dotnetversion, startupproject, dbcontext)
	)
@func()
async example(source: Directory, project: string, dotnetVersion: string, startupProject: string, dbContext: string): Promise<string> {
	return dag
		.daggerPipelines()
		.dotnetMigrations()
		.validate(source, project, dotnetVersion, startupProject, dbContext)
}

list() 🔗

List all pending migrations

Shows the migration history for review.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-No description provided
projectString !-No description provided
dotnetVersionString !"8.0"No description provided
startupProjectString !""No description provided
dbContextString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 dotnet-migrations \
 list --source DIR_PATH --project string --dotnet-version string --startup-project string --db-context string
func (m *MyModule) Example(ctx context.Context, source *dagger.Directory, project string, dotnetVersion string, startupProject string, dbContext string) string  {
	return dag.
			Daggerpipelines().
			Dotnetmigrations().
			List(ctx, source, project, dotnetVersion, startupProject, dbContext)
}
@function
async def example(source: dagger.Directory, project: str, dotnetversion: str, startupproject: str, dbcontext: str) -> str:
	return await (
		dag.dagger_pipelines()
		.dotnetmigrations()
		.list(source, project, dotnetversion, startupproject, dbcontext)
	)
@func()
async example(source: Directory, project: string, dotnetVersion: string, startupProject: string, dbContext: string): Promise<string> {
	return dag
		.daggerPipelines()
		.dotnetMigrations()
		.list(source, project, dotnetVersion, startupProject, dbContext)
}

DaggerPipelinesChangelog 🔗

generate() 🔗

Generate a markdown changelog from conventional commit messages

Pass the output of git log --oneline or similar. Each line is parsed as a conventional commit and grouped by type. Non-conventional lines are grouped under “Other Changes”.

Usage from CI: COMMITS=\((git log v1.0.0..HEAD --oneline --no-decorate) dagger call changelog generate --commits="\)COMMITS” –version=“1.1.0”

Return Type
String !
Arguments
NameTypeDefault ValueDescription
commitsString !-No description provided
versionString !"Unreleased"No description provided
dateString !""No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 changelog \
 generate --commits string --version string --date string
func (m *MyModule) Example(ctx context.Context, commits string, version string, date string) string  {
	return dag.
			Daggerpipelines().
			Changelog().
			Generate(ctx, commits, version, date)
}
@function
async def example(commits: str, version: str, date: str) -> str:
	return await (
		dag.dagger_pipelines()
		.changelog()
		.generate(commits, version, date)
	)
@func()
async example(commits: string, version: string, date: string): Promise<string> {
	return dag
		.daggerPipelines()
		.changelog()
		.generate(commits, version, date)
}

DaggerPipelinesPostgres 🔗

service() 🔗

A ready-to-bind Postgres service

Returns a Dagger Service running Postgres from the given image with the database, user, and password provisioned by the image’s entrypoint. Bind it to any container with withServiceBinding(host, service); the container then reaches Postgres at host:port.

Return Type
Service !
Arguments
NameTypeDefault ValueDescription
dbNameString !"app"No description provided
userString !"postgres"No description provided
passwordString !"postgres"No description provided
imageString !"postgres:16-alpine"No description provided
portInteger !5432No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 service --db-name string --user string --password string --image string --port integer
func (m *MyModule) Example(dbName string, user string, password string, image string, port int) *dagger.Service  {
	return dag.
			Daggerpipelines().
			Postgres().
			Service(dbName, user, password, image, port)
}
@function
def example(dbname: str, user: str, password: str, image: str, port: int) -> dagger.Service:
	return (
		dag.dagger_pipelines()
		.postgres()
		.service(dbname, user, password, image, port)
	)
@func()
example(dbName: string, user: string, password: string, image: string, port: number): Service {
	return dag
		.daggerPipelines()
		.postgres()
		.service(dbName, user, password, image, port)
}

connectionString() 🔗

Build a libpq connection string for a bound Postgres service

host is the alias the service is bound under in the consuming container.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
hostString !"postgres"No description provided
dbNameString !"app"No description provided
userString !"postgres"No description provided
passwordString !"postgres"No description provided
portInteger !5432No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 connection-string --host string --db-name string --user string --password string --port integer
func (m *MyModule) Example(ctx context.Context, host string, dbName string, user string, password string, port int) string  {
	return dag.
			Daggerpipelines().
			Postgres().
			Connectionstring(ctx, host, dbName, user, password, port)
}
@function
async def example(host: str, dbname: str, user: str, password: str, port: int) -> str:
	return await (
		dag.dagger_pipelines()
		.postgres()
		.connectionstring(host, dbname, user, password, port)
	)
@func()
async example(host: string, dbName: string, user: string, password: string, port: number): Promise<string> {
	return dag
		.daggerPipelines()
		.postgres()
		.connectionString(host, dbName, user, password, port)
}

bind() 🔗

Bind a Postgres service to a container, ready to use

Waits until Postgres is actually accepting connections — a bound Postgres answers on its TCP port before it can serve queries, so this runs pg_isready in a retry loop against the service first and only returns once it reports ready. The returned container has the service bound under host and the connection string exported as connStringEnv (default DATABASE_URL), so DB-dependent steps can connect immediately.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
containerContainer !-No description provided
serviceService !-No description provided
hostString !"postgres"No description provided
dbNameString !"app"No description provided
userString !"postgres"No description provided
passwordString !"postgres"No description provided
portInteger !5432No description provided
imageString !"postgres:16-alpine"No description provided
connStringEnvString !"DATABASE_URL"No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 bind --container IMAGE:TAG --service PROTOCOL://HOST:PORT --host string --db-name string --user string --password string --port integer --image string --conn-string-env string
func (m *MyModule) Example(container *dagger.Container, service *dagger.Service, host string, dbName string, user string, password string, port int, image string, connStringEnv string) *dagger.Container  {
	return dag.
			Daggerpipelines().
			Postgres().
			Bind(container, service, host, dbName, user, password, port, image, connStringEnv)
}
@function
def example(container: dagger.Container, service: dagger.Service, host: str, dbname: str, user: str, password: str, port: int, image: str, connstringenv: str) -> dagger.Container:
	return (
		dag.dagger_pipelines()
		.postgres()
		.bind(container, service, host, dbname, user, password, port, image, connstringenv)
	)
@func()
example(container: Container, service: Service, host: string, dbName: string, user: string, password: string, port: number, image: string, connStringEnv: string): Container {
	return dag
		.daggerPipelines()
		.postgres()
		.bind(container, service, host, dbName, user, password, port, image, connStringEnv)
}

waitUntilReady() 🔗

Block until a Postgres service is ready to serve

Runs pg_isready from the Postgres image (which always ships it) against the bound service in a retry loop, forcing the service to start and settle before any caller depends on it. Throws if it never becomes ready.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceService !-No description provided
hostString !"postgres"No description provided
dbNameString !"app"No description provided
userString !"postgres"No description provided
portInteger !5432No description provided
imageString !"postgres:16-alpine"No description provided
attemptsInteger !60No description provided
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 wait-until-ready --service PROTOCOL://HOST:PORT --host string --db-name string --user string --port integer --image string --attempts integer
func (m *MyModule) Example(ctx context.Context, service *dagger.Service, host string, dbName string, user string, port int, image string, attempts int) string  {
	return dag.
			Daggerpipelines().
			Postgres().
			Waituntilready(ctx, service, host, dbName, user, port, image, attempts)
}
@function
async def example(service: dagger.Service, host: str, dbname: str, user: str, port: int, image: str, attempts: int) -> str:
	return await (
		dag.dagger_pipelines()
		.postgres()
		.waituntilready(service, host, dbname, user, port, image, attempts)
	)
@func()
async example(service: Service, host: string, dbName: string, user: string, port: number, image: string, attempts: number): Promise<string> {
	return dag
		.daggerPipelines()
		.postgres()
		.waitUntilReady(service, host, dbName, user, port, image, attempts)
}

testConnection() 🔗

Connect to a freshly started Postgres service and report its version

Starts a default service, waits for readiness, then runs SELECT version() with psql. Fails unless a real server answers — proof the binding works end to end, not just that a parameter threads through.

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 test-connection
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Postgres().
			Testconnection(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.postgres()
		.testconnection()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.postgres()
		.testConnection()
}

testConnectionCustom() 🔗

Connect using fully custom knobs and report the server version

Runs with a non-default database name, user, password, hostname, and connection-string variable to prove none of the parameters are ignored.

Return Type
String !
Example
dagger -m github.com/vpetkovic/dagger-pipelines@1661270ad7b038692c3fc340676e9680a9a7c009 call \
 postgres \
 test-connection-custom
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Daggerpipelines().
			Postgres().
			Testconnectioncustom(ctx)
}
@function
async def example() -> str:
	return await (
		dag.dagger_pipelines()
		.postgres()
		.testconnectioncustom()
	)
@func()
async example(): Promise<string> {
	return dag
		.daggerPipelines()
		.postgres()
		.testConnectionCustom()
}