cowsay
Not intended to be used as a dagger module because it's so simple, more of an example to copy from.Example .github/workflows/docker-publish.yaml:
``` name: 'build-and-push'
on: push: branches: - main
jobs: dagger: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4
- name: Dagger Build & Push uses: dagger/dagger-for-github@v5 with: version: "0.11.0" verb: call args: build-and-push --registry=$DOCKER_REGISTRY --image-name=$DOCKER_IMAGE_NAME --username=$DOCKER_USERNAME --password=env:DOCKER_PASSWORD --build-context . env: DOCKER_REGISTRY: ghcr.io DOCKER_IMAGE_NAME: ${{ github.repository }} DOCKER_USERNAME: ${{ github.actor }} DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} ```
This is how you acquire "packages" write permission, then call the dagger-for-github module with DOCKER_REGISTRY, DOCKER_IMAGE_NAME, DOCKER_USERNAME and DOCKER_PASSWORD set appropriately.
Nothing in the dagger module is specific to GHCR, it's just: * Build the container in the usual way with Dagger. Here we make a cowsay container that says "How now, brown cow", showing how to pass build context from the filesystem * Use `ctr.WithRegistryAuth(registry, username, password).Publish(ctx, registry+"/"+imageName)` to publish the container to the ghcr registry.
Installation
dagger install github.com/lukemarsden/dagger-ghcr-demo@v0.1.0Entrypoint
Return Type
Cowsay Example
dagger -m github.com/lukemarsden/dagger-ghcr-demo@afe4a466cc46f76e96d9c4554faae99580dcbf8f call \
func (m *MyModule) Example() *dagger.Cowsay  {
	return dag.
			Cowsay()
}@function
def example() -> dagger.Cowsay:
	return (
		dag.cowsay()
	)@func()
example(): Cowsay {
	return dag
		.cowsay()
}Types
Cowsay 🔗
build() 🔗
Application specific build logic
Return Type
Container !Arguments
| Name | Type | Default Value | Description | 
|---|---|---|---|
| buildContext | Directory ! | - | No description provided | 
Example
dagger -m github.com/lukemarsden/dagger-ghcr-demo@afe4a466cc46f76e96d9c4554faae99580dcbf8f call \
 build --build-context DIR_PATHfunc (m *MyModule) Example(buildContext *dagger.Directory) *dagger.Container  {
	return dag.
			Cowsay().
			Build(buildContext)
}@function
def example(build_context: dagger.Directory) -> dagger.Container:
	return (
		dag.cowsay()
		.build(build_context)
	)@func()
example(buildContext: Directory): Container {
	return dag
		.cowsay()
		.build(buildContext)
}buildAndPush() 🔗
Take the built container and push it
Return Type
Void !Arguments
| Name | Type | Default Value | Description | 
|---|---|---|---|
| registry | String ! | - | No description provided | 
| imageName | String ! | - | No description provided | 
| username | String ! | - | No description provided | 
| password | Secret ! | - | No description provided | 
| buildContext | Directory ! | - | No description provided | 
Example
dagger -m github.com/lukemarsden/dagger-ghcr-demo@afe4a466cc46f76e96d9c4554faae99580dcbf8f call \
 build-and-push --registry string --image-name string --username string --password env:MYSECRET --build-context DIR_PATHfunc (m *MyModule) Example(ctx context.Context, registry string, imageName string, username string, password *dagger.Secret, buildContext *dagger.Directory)   {
	return dag.
			Cowsay().
			BuildAndPush(ctx, registry, imageName, username, password, buildContext)
}@function
async def example(registry: str, image_name: str, username: str, password: dagger.Secret, build_context: dagger.Directory) -> None:
	return await (
		dag.cowsay()
		.build_and_push(registry, image_name, username, password, build_context)
	)@func()
async example(registry: string, imageName: string, username: string, password: Secret, buildContext: Directory): Promise<void> {
	return dag
		.cowsay()
		.buildAndPush(registry, imageName, username, password, buildContext)
}