#github-feed
1 messages ยท Page 14 of 1
This is follow-ups changeset comment in https://github.com/dagger/dagger/pull/8962
Changes to dev module:
- Bump image to Elixir 1.17.2 with OTP 27.2.
- Add a function named
sync-imageto sync between dev and runtime so we can change image only in dev module then it'll modify automatically after calling this function. - Bump engineVersion to the latest version (0.15.1).
- Run mix format.
Changes to runtime modules:
- Bump image to Elixir 1.17.2 with OTP 27.2 by using `syn...
This proposal #9007 could be one way -- nonetheless, I'll try to come up with an intermediary hack on the meantime ๐
relaying Justin's comment's (https://discord.com/channels/707636530424053791/1318581231465533450) here:
hm, i actually don't think that 9007 is actually the solution here
we'd implement 8809 in a similar way to how the git socket forwarding works i think
essentially, having a buildkit session attachable of some variety that can load git information from the cli...
What are you trying to do?
The purportedly whimsical environment variables NOTHANKS, SHUTUP, GOAWAY and others are both mildly offensive and confusingly named.
As a new-comer to the dagger tooling I am repeatedly put off by the existing supported environment variables to disable messaging about using dagger.cloud for tracing: https://github.com/dagger/dagger/blob/7bd6908820fb82e1cb457d92d2b59ab87d12537e/dagql/idtui/frontend.go#L53
Moreover, by not prefixing the names with `DA...
this doesn't attempt to cover all withexec metrics, but does cover disk write and memory bytes, both of which render consistently.
this prevents regressions like the one we had in our 0.15.0 release
This is only half written, doesn't build yet, has commits from #9204, etc. But has enough to show usage of all the new caching features added in https://github.com/dagger/dagger/pull/9204. Sending out in case it's helpful for groking that PR and what the "grand plan" is.
Goals here are:
- Fix various sources of excessive module building cache invalidation
- changing completely unrelated source files in context
- building different git commits that have no changes in the module sou...
Fixes https://github.com/dagger/dagger/issues/9095.
This fixes a bug where if the directory passed as a context directory had an exec anywhere in its history, it could not be built with an old syntax pragma (including docker/dockerfile:1.10 and before).
This is because a new exec.validexitcode capability was added when using llb.ValidExitCodes - which we were unconditionally using in every WithExec regardless of whether we actually need it or not. When passing this result to an ...
[dagger/dagger] Pull request opened: #9247 engine: return error if services don't have a command set
this addresses the issue introduced in v0.15.0 where services will hang
to start if neither CMD or ENTRYPOINT is used.
fixes #9190
Signed-off-by: Marcos Lilljedahl
Fixes #9242.
We'll now only recommend using the prefixed environment variable DAGGER_NO_NAG - no more randomly cycling through. However, we'll keep supporting the old environment variables, in case users are using that to silence this output. We can deprecate those in the future.
Some light rephrasing of the message is required to fit the extra DAGGER_ characters in - it's important we keep this line under 80 characters, so it fits nicely into standard sized 80x24 terminals.
This adds a new property - kind - which defaults to DaemonSet. It means that nothing will change for existing users.
For users that want to be able to deploy multiple Engines on a single node, they just need to set kind: StatefulSet, and the chart will take care of the rest.
This opens the door to experimenting with runtimes such as firecracker-containerd, gVisor, etc. for putting a sandbox around the Engine - should help address some of the CAP_SYS_ADMIN concerns.
Paired...
What is the issue?
Initially reported [in Discord](#github message), Dagger 0.15.1 running on GitHub Actions doesn't appear to respect ContainerWithFileOpts permissions as it did previously in 0.14.
The permissions are applied as defined in the dagger code in these cases:
- Local
- 0.14.x โ
- 0.15.x โ
- GitHub-hosted Runner
- 0.14.x โ
- 0.15.x ๐ซ
I expected the permissions set in Dagger t...
What is the issue?
When the write a function that returns Dagger.Void.t(), the Dagger will raise that Void! not found.
Dagger version
dagger v0.15.1 (registry.dagger.io/engine:v0.15.1) darwin/arm64
Steps to reproduce
Consider this code:
defn test(source: {Dagger.Directory.t(), default_path: "."}) :: Dagger.Void.t() do
elixir()
|> Dagger.Container.with_workdir("/dagster-pipes-elixir")
|> Dagger.Container.with_exec(~w"mix local.rebar --force")
|> Da...
We have several projects using the same dagger CI runner. So if one project creates a cache volume called pypi, then all of the other projects would also be able to share that cache. Ideally we'd like to isolate the caches of different projects.
One approach is to extend the cache volume's name ("key" it) with some project-specific string (e.g. pypi-foo for project foo, and pypi-bar for project bar), but this seems like it could be pretty error-prone. If we fail to extend on o...
I think this is similar to the issue described in https://github.com/dagger/dagger/issues/7211:
Cache volumes exist in the engine's global namespace: if modules A and B each create a cache volume with id foo, they will share read and write access to the same volume, as long as they are run on the same engine. This allows one module to corrupt the data of another module, either accidentally or maliciously.
Modules are the natural way to namespace this - these already have pretty much u...
This fixes the broken scan-engine check on main:
Hmm, it doesn't sound like it really solves the issue. If there's a module used between two projects then they'd share the cache, and they would no longer be isolated. It also wouldn't cover isolating merge requests from release pipelines.
It doesn't actually cover our use case either, as we haven't "bought into the daggerverse" either -- we've been finding it much simpler to just use the dagger python API directly, rather than introducing an extra layer of packaging on top of everything.
I can see #8724 adds a "namespace" parameter to each volume. I was hoping for a solution that allows us to globally append some string to all namespaces in a process, or something like that.
This is an issue we can easily encounter on the main branch of https://github.com/dagger/dagger.
Create a worktree:
$ git worktree add
$ cd
Try and get some git metadata:
$ dagger call -m version git head
...
fatal: not a git repository: /home/jedevc/Documents/work/dagger/dagger/.git/worktrees/
This occurs because we look for where .git exists - there's a git file created at .//.git - it's not a directory, and instead contains contents like: `gitd...
Bumps the sdk-python group with 1 update in the /sdk/python/runtime directory: astral-sh/uv.
Updates astral-sh/uv from 0.5.7 to 0.5.10
Release notes
Sourced from astral-sh/uv's releases.
0.5.10
Release Notes
Enhancements
Improve backtracking behavior when packages conflict repeatedly (#9843)
Patch Python sysconfig values such as AR at ar install time (#9905)
Patch Python sysconfig values such as clang to cc at install time (#9916)
Skip --native-tls in ...
What
Replacing net/http with hashicorp/go-retryablehttp or something like it.
"The
retryablehttppackage provides a familiar HTTP client interface with automatic retries and exponential backoff"
Why
Seems like a really good thing to have given how flaky CI/CD can often be by nature of where, what, and how it runs. e.g. Pushing artifacts to remote servers, sometimes over the public internet. Sometimes there's a thundering herd that causes a failure. Etc... Built...
We use dagger and see many transient errors on our pipelines and it would be nice to have built in retries in dagger instead of having to add them ad-hoc throughout our pipelines whenever we see them cropping up.
Interesting observation. In our personal use of Dagger which is quite extensive, I haven't seen net/http errors that often. Is there any particular operation through the net/http package that you generally see failing often in your particular case?
Yeah, potentially open to it :tada: The problem is that lots of the places this would be valuable would be in our use of buildkit.
So, yeah kinda curious where you see this, to see where we'd specifically want to change.
Leaving this as a reminder - we need to upgrade github.com/99designs/gqlgen, but this is going to enable a bunch of linting rules for our graphql queries. This is good... but for some reason these are failing for very non-obvious reasons.
TransportQueryError: Error while fetching schema: {'message': 'Fragment
"TypeRef" cannot be spread here as objects of type "__Type" can never be of type
"__Type".', 'locations': [{'line': 63, 'column': 8}], 'extensions': {'code':
'GRAPHQL_VALI...
Problem
- The
shellandCLIbehave differently when it comes tostdouthandling with TTY attached. - The response payload does not include the
_type.
This PR is attempt to produce a pragmatic fix. However, any reviews/pointers are welcome if the code's not up to standard. I found it quicker to fix the issues than to merely describe the problems.
In a nutshell this PR fixes
- Writes payload response to stdout when no TTY is attached to stdout.
- The response payload...
Add a core function to search the contents of a file.
extend type File {
"Search the contents of the file"
search(
"The pattern to match the contents. Follows the Extended Regular Expression format"
pattern: String!,
"Number of matches to include"
n: Int,
): [Match!]!
}
type Match {
line: Int!
column: Int!
contents: String!
}
This is a test to add more capabilities to magicsdk, don't merge it
What is the issue?
Seems like our line redraws don't quite work properly in Terminal.app. This issue doesn't repro in Iterm or VSCode terminal emulators.
it looks like this:
[reported in discord](#team message...
(Was working on this day before vacation, sending out in a spare moment but won't revisit before I'm back in 2 weeks)
This change replaces dumb-init with a custom one written in go that also serves session attachables for nested execs.
One motivation is to avoid a few minor headaches around cross-compiling C code (which dumb-init) is written in. Cross-compiling the new go implementation is trivial.
More than that, this allows transplants session attachables from the executor t...
What is the issue?
As far as I can tell, the usage example for the Rust SDK found does not compile.
Here's the code:
This is what happens when I try to compile it:
$ cargo add -q dagger_sdk tokio eyre
$ cargo build
Compiling dagger-...
When running a function from a module, and that function fails, the actual error is not visible. Instead we get: Error: input: foo.bar process "/runtime" did not complete successfully: exit code: 2
Bumps the sdk-go group in /sdk/go with 2 updates: github.com/99designs/gqlgen and google.golang.org/grpc.
Updates github.com/99designs/gqlgen from 0.17.57 to 0.17.61
Release notes
Sourced from github.com/99designs/gqlgen's releases.
v0.17.61
What's Changed
performance fix: only run generate code once by @โBrookke in 99designs/gqlgen#3436
more actionable federation errors for nil key field queries by @โStevenACoffm...
Bumps go.opentelemetry.io/otel from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by go.openteleme...
Bumps go.opentelemetry.io/otel/metric from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/metric's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by...
Bumps go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental ...
Bumps go.opentelemetry.io/otel/sdk/metric from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/sdk/metric's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments pro...
Bumps the docs group in /docs with 1 update: typedoc-plugin-markdown.
Updates typedoc-plugin-markdown from 4.3.2 to 4.3.3
Release notes
Sourced from typedoc-plugin-markdown's releases.
typedoc-plugin-markdown@4.3.3
Patch Changes
Correctly handle anchor resolutions with table formats.
Fix invalid typescript syntax for type aliases inside declaration code blocks when "useCodeBlocks&quo...
Bumps the engine group with 10 updates:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.61 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | 27.4.0+incompatible |
27.4.1+incompatible |
| github.com/docker/docker | 27.4.0+incompatible |
`2... |
Bumps go.opentelemetry.io/otel from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by go.openteleme...
Bumps go.opentelemetry.io/otel/sdk from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/sdk's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by go.op...
Bumps go.opentelemetry.io/otel/metric from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/metric's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by...
Bumps go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp from 0.52.0 to 0.58.0.
Release notes
Sourced from go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp's releases.
Release v1.33.0/v0.58.0/v0.27.0/v0.13.0/v0.8.0/v0.6.0/v0.5.0
Overview
Added
Added support for providing endpoint, pollingIntervalMs and initialSamplingRate using environment variable OTEL_TRACES_SAMPLER_ARG in go.opentelemetry.io/contrib/sa...
Bumps the sdk-typescript group in /sdk/typescript with 8 updates:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.0 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.0 |
| @opentelemetry/sdk-node | ... |
Bumps the sdk-python group in /modules/ruff/build with 1 update: astral-sh/ruff.
Updates astral-sh/ruff from 0.8.3 to 0.8.4
Release notes
Sourced from astral-sh/ruff's releases.
0.8.4
Release Notes
Preview features
[airflow] Extend AIR302 with additional functions and classes (#15015)
[airflow] Implement moved-to-provider-in-3 for modules that has been moved to Airflow providers (AIR303) (#14764)
[flake8-use-pathlib] Extend check for invalid path suf...
Bumps the sdk-python group in /sdk/python/runtime with 1 update: astral-sh/uv.
Updates astral-sh/uv from 0.5.10 to 0.5.11
Release notes
Sourced from astral-sh/uv's releases.
0.5.11
Release Notes
Enhancements
Normalize platform_system to sys_platform (#9949)
Improve retry mechanisms on Windows for copy_atomic and write_atomic (#10026)
Add nuance to prefetch logging (#9984)
Update to python-build-standalone 20241219
Preview features
Build backend: Pres...
Bumps the sdk-java group in /sdk/java with 5 updates:
| Package | From | To |
|---|---|---|
| io.smallrye:smallrye-graphql-client-api | 2.11.0 |
2.12.0 |
| io.smallrye:smallrye-graphql-client-implementation-vertx | 2.11.0 |
2.12.0 |
| io.netty:netty-common | 4.1.115.Final |
4.1.116.Final |
| org.junit:junit-bom | 5.11.3 |
5.11.4 |
| org.assertj:assertj-core | ... |
What is the issue?
I was chatting with @jedevc and he said that our code implies that you should be able to use floating point numbers as a standard type.
https://github.com/dagger/dagger/blob/main/dagql/builtins.go
However, when you try to return a float, Dagger complains that float32 is an unsupported basic type.
Dagger version
dagger v0.15.1 (registry.dagger.io/engine:v0.15.1) darwin/arm64
Steps to reproduce
func (m *Go) FloatingNumber() float32 {
return ...
Problem
I can't use the dagger shell to write files with special characters like newlines or tabs.
Solution
This would require either 1) support for interpreting escape sequences like \n or \t, or 2) functional heredocs and/or 3) multi-line editing.
What is the issue?
For the following interface:
type Project interface {
DaggerObject
Name(ctx context.Context) (string, error)
Build(ctx context.Context, runChecks bool) (dagger.Container, error)
}
dagger develop generates a struct implementing it.
The code for Build returns only one value (no error) and fails to compile:
func (r *projectImpl) Build(ctx context.Context, runChecks bool) (dagger.Container, error) {
q := r.query.Select("build")
q...
Remove reference to magiccache since we are winding down the service for now and its leading to some confusion for folks.
What happened? What did you expect to happen?
When i ran dagger functions, i got this issue.
Error: failed to serve module: input: moduleSource.withContextDirectory.asModule failed to create module: select: failed to update module dependencies: failed to load module dependencies: select: failed to load pre-configured dependencies: failed to create module source from dependency: select: failed to resolve git src to commit: failed to fetch remote https://github.com/scottames/dagger...
Quick PR to fix a panic affecting Cloud v3 - just making sure the commit is in the Git network so I can point to it via submodule.
What are you trying to do?
I am trying to install a package with apt but it fails with the following error
. โ container | from rust | with-exec apt update | with-exec apt install -y vim
Error: could not parse arguments for function "with-exec": unknown shorthand flag: 'y' in -y
Doing this the "old" way works as expected
container | from rust | with-exec apt update | with-exec apt,install,-y,vim
I also would not mind if I could do something like this `. ...
What is the issue?
While the codegen works with NPM, Yarn and PNPM as package managers the respective lockfiles contain more or less information about the actual dependencies and where to take them from.
Relying on packages which reside on private repositories work when working with NPM and Yarn as their respective lock files contain the full path to the packages - created via scoped package definitions defined in .npmrc. pnpm-lock.yaml on the other hand does not include that info...
-
renamed Engine to QueryExecutor due to clash with latest API. This aligns both
QueryBuilderandQueryExecutorto be similar and related -
update introspection.graphql, Looks to be some changes to the original introspection.graphql, so I updated it
-
update nuget packages
-
removal of netstandard2.0: dotnet 8 as netstandard is being phased out and not recommended: This one needs some discussion but I was able to get it generating perfectly fine with net8! There is no need to ta...
What is the issue?
I am using dagger as a part of my blog publishing workflow and one feature that includes is being able to preview my blog locally by wrapping hugo in a dagger function.
// build and serve local hugo site
func (m *Publish) ServeDev(ctx context.Context) *dagger.Service {
path := "/src"
return m.base().
WithMountedDirectory(path, m.Src).
WithWorkdir(path).
WithExposedPort(1313).
WithExec([]string{"hugo", "serve", "--bind", "0.0.0.0"}).
AsSer...
There are 4 tests in ModuleTest that put undue stress on local and remote test runners:
TestLotsOfDeps -> creates web of nested modules, then calls the outermost one
TestLargeObjectFieldVal -> plumbs a huge # of "a"s through function calls
TestLotsOfFunctions -> creates 100 functions in python, go, and typescript modules, then calls 10
TestCallSameModuleInParallel -> calls a nested module fn concurrently 10 times
these tests also happen to look a lot like benchmarks, where ...
What is the issue?
When creating this basic function
import { argument, dag, Directory, func, object } from "@dagger.io/dagger";
export type RequiredInput = {
cleanGitRepo: Directory
}
@object()
export class First {
requiredInput: RequiredInput;
constructor(@argument({ defaultPath: "/.git" }) gitRoot: Directory) {
console.log("CBO Root constructor");
this.requiredInput = {
cleanGitRepo: dag.container()
.from("alpine:latest")
...
What is the issue?
I have recently started using Dagger and have experienced a lot of friction, due to not being able to understand how Dagger behaves. Here are two examples of things, which I found confusing as user:
- When running
with_execon container, and starting a process in background such as socat, for example using.with_exec(["/bin/sh", "-c", "socat tcp-listen:2375,reuseaddr, fork tcp:dockerd:2375 &"]).with_exec(["ps", "aux"]), thenps auxdoes not display the socat p...
Bumps the sdk-typescript group with 8 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.0 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.0 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opente... |
Bumps the engine group with 13 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.61 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | 27.4.0+incompatible |
27.4.1+incompatible |
| github.com/docker/docker | `27.4.0... |
Bumps go.opentelemetry.io/otel/sdk from 1.27.0 to 1.33.0.
Changelog
Sourced from go.opentelemetry.io/otel/sdk's changelog.
[1.33.0/0.55.0/0.9.0/0.0.12] 2024-12-12
Added
Add Reset method to SpanRecorder in go.opentelemetry.io/otel/sdk/trace/tracetest. (#5994)
Add EnabledInstrument interface in go.opentelemetry.io/otel/sdk/metric/internal/x.
This is an experimental interface that is implemented by synchronous instruments provided by go.op...
Bumps the sdk-go group with 3 updates in the /sdk/go directory: github.com/99designs/gqlgen, github.com/vektah/gqlparser/v2 and google.golang.org/grpc.
Updates github.com/99designs/gqlgen from 0.17.57 to 0.17.61
Release notes
Sourced from github.com/99designs/gqlgen's releases.
v0.17.61
What's Changed
performance fix: only run generate code once by @โBrookke in 99designs/gqlg...
Bumps the docs group with 2 updates in the /docs directory: typedoc and typedoc-plugin-markdown.
Updates typedoc from 0.27.5 to 0.27.6
Release notes
Sourced from typedoc's releases.
v0.27.6
Features
Added ignoredHighlightLanguages option to specify languages which will be
allowed in code blocks but not highlighted, #2819.
Bug Fixes
@include and @...
Bumps the sdk-python group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates python from 2b00791 to 10f3aaa
Updates astral-sh/uv from 0.5.10 to 0.5.13
Release notes
Sourced from astral-sh/uv's releases.
0.5.13
Release Notes
Bug fixes
Avoid enforcing URL check on initial publish (#10182)
Fix incorrect mismatched constraints reference (#10184)
Revert "Update reqwest (#10178)" (#10187)
Install uv 0.5.1...
Bumps the sdk-elixir group in /sdk/elixir with 2 updates: credo and ex_doc.
Updates credo from 1.7.10 to 1.7.11
Release notes
Sourced from credo's releases.
v1.7.11
Check it out on Hex: https://hex.pm/packages/credo/1.7.11
Fix compatibility & compiler warnings with Elixir 1.18
Fix crashing for invalid strings in issue messages
Show required Elixir version for skipped checks
Add options :exit_status and :cate...
currently failing to me for mysterious reasons... the error logs look exactly like what I'd expect, yet we fail...
An SDK module can define RequiredPaths. The Go SDK's Required Paths are
return []string{
"**/go.mod",
"**/go.sum",
"**/go.work",
"**/go.work.sum",
// TODO: the below could be optimized by scoping only to go modules that actually
// end up being needed for the dagger module.
// including vendor/ is potentially expensive, but required
"**/vendor/",
// needed in order to re-use go.mod from any parent dir (otherwise it's an invalid go module)
"**/*.go",
}, nil
``...
What is the issue?
I have two modules, one of which depends on the other. "Module-B" is installed in "Module-A". I updated the signature of one of the functions in "Module-B." Afterward, I ran dagger develop to update the code, but the internal code generation didn't reflect the updates. I tried deleting the internal files and clearing the cache using dagger core engine local-cache prune, but it continues to generate the initial version of the code.
Dagger version
dagger v0.15....
Problem
Dagger 0.15 introduced a simpler networking API. As a side-effect, we lost out-of-the-box compatibility with the Docker ecosystem - specifically long-running services packaged as turnkey OCI images.
For a real-life example of this problem, and extensive discussion of the causes and possible solutions, see #9190.
Bumps the docs group with 3 updates in the /docs directory: docusaurus-plugin-typedoc, typedoc and typedoc-plugin-markdown.
Updates docusaurus-plugin-typedoc from 1.1.1 to 1.2.0
Changelog
Sourced from docusaurus-plugin-typedoc's changelog.
1.2.0 (20...
So that the Engine can run in alternative runtimes, such as kata, gvisor etc.
Docs for the Daggerverse!
What is the issue?
When browsing the documentation, it's difficult to navigate to the section on module development. Right now this is buried underneath Dagger API > Working With Modules. There is also a reference under the features section called Features > Reusable Modules that links to Custom Functions.
For a new user, or even someone relatively famil...
Bumps the docs group with 8 updates in the /docs directory:
| Package | From | To |
|---|---|---|
| @docusaurus/core | 3.6.3 |
3.7.0 |
| @docusaurus/preset-classic | 3.6.3 |
3.7.0 |
| @docusaurus/theme-mermaid | 3.6.3 |
3.7.0 |
| [do... |
Bumps the sdk-typescript group with 10 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.0 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.0 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opent... |
Bumps the sdk-python group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Updates astral-sh/ruff from 0.8.3 to 0.8.6
Release notes
Sourced from astral-sh/ruff's releases.
0.8.6
Release Notes
Preview features
[format]: Preserve multiline implicit concatenated strings in docstring positions (#15126)
[ruff] Add rule to detect empty literal in deque call (RUF025) (#15104)
[ruff] Avoid reporting when ndigits is possibly negative (RUF0...
Bumps the sdk-python group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates python from 2b00791 to 10f3aaa
Updates astral-sh/uv from 0.5.10 to 0.5.14
Release notes
Sourced from astral-sh/uv's releases.
0.5.14
Release Notes
Enhancements
Add --exact flag to uv run (#10198)
Add --outdated support to uv pip tree (#10199)
Add a required version setting to uv (#10248)
Add loongarch64 to supported Python platform ta...
Bumps the engine group with 15 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.62 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | 27.4.0+incompatible |
27.4.1+incompatible |
| github.com/docker/docker | `27.4.0... |
Bumps the sdk-java group with 6 updates in the /sdk/java directory:
| Package | From | To |
|---|---|---|
| io.smallrye:smallrye-graphql-client-api | 2.11.0 |
2.12.0 |
| io.smallrye:smallrye-graphql-client-implementation-vertx | 2.11.0 |
2.12.0 |
| io.netty:netty-common | 4.1.115.Final |
4.1.116.Final |
| org.junit:junit-bom | 5.11.3 |
5.11.4 |
| [org.assertj:assertj-core](https://github.com/asser... |
Bumps the sdk-go group with 2 updates in the /sdk/go directory: github.com/99designs/gqlgen and google.golang.org/grpc.
Updates github.com/99designs/gqlgen from 0.17.57 to 0.17.62
Release notes
Sourced from github.com/99designs/gqlgen's releases.
v0.17.62
What's Changed
If the graphql.AddError err arg is nil, early return by @โStevenACoffman in 99designs/gqlgen#3445
chore(deps): bump actions/upload-artifact from 4...
Given the following Talos v1.9.1 cluster:
kind: Cluster
name: dagger-ci-2025-01-02
talos:
version: v1.9.1
kubernetes:
version: v1.32.0
patches:
# Single-node cluster FTW! ๐ช
- name: allow-scheduling-on-controlplanes
file: ../patches/allow-scheduling-on-controlplanes.yaml
# https://www.talos.dev/v1.9/talos-guides/network/kubespan
- name: kubespan
file: ../patches/kubespan.yaml
# https://github.com/siderolabs/omni-feedback/issues/41
# https://s...
Fixes https://github.com/dagger/dagger/actions/runs/12602450696/job/35125546961?pr=9309
Run thollander/actions-comment-pull-request@v2
with:
message: This PR has been marked with `needs/changelog`, but no changelog has been created.
Run `changie new` to generate one (see [CONTRIBUTING.md](https://github.com/dagger/dagger/blob/main/CONTRIBUTING.md) for details).
GITHUB_TOKEN: ***
mode: upsert
create_if_not_exists: true
Error: Resource not accessible b...
Fixes #9291
Signed-off-by: Tom Chauveau
Javadoc comments are wrapped between HTML `` tags. In this case & is not a valid entity and generates the following error:
error: bad HTML entity
* Set chart & app version
This happen when you generate the documentation using mvnw package -Pjavadoc
The fix is quite basic, just for &. Maybe we need something more resilient, like to use some kind of escape html, but at least that solves this one issue.
cc @jcsirot
Fixes https://github.com/dagger/dagger/security/dependabot/1096.
For some reason, dependabot (in its infinite wisdom) has decided it doesn't want to do this automatically, so here it is manually.
Bumps the engine group with 14 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.62 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | 27.4.0+incompatible |
27.4.1+incompatible |
| github.com/docker/docker | `27.4.0... |
Problem
Dagger doesn't support mounting NFS directories directly into containers. Instead, the user must mount them into the client machine, and copy them from there into the engine, like any other host directory. This works reliably, but is less efficient than a direct bind-mount.
Solution
At this time there is no design for bypassing the copy into the engine. Nikola Jokic has [proposed implementing support for direct bind mounts](https://discord.com/channels/70763653042405379...
Hola
Proof-of-concept; API is not final at all, using names 1:1 with OTel for now that we may want to pivot away from or tuck away as a lower-level implementation detail of higher-level APIs. (Rough consensus on using "task" instead of "span" for example.)
Goals:
- [x] High level API for OTel spans with
- e.g.
async with dag.span("my span", internal=true)
- e.g.
- [ ] Ergonomic SDK APIs, without too much effort
- So Go and Python SDKs were easy enough - moving on to TypeScript next
- Th...
When cloning a git repository, the branch is accidentally confused with a tag, and we get a false tag hovering around - we should not have this.
$ dagger -s core git --url https://github.com/dagger/dagger.git branch --name=main tree entries --path .git/refs/tags
main
See https://github.com/moby/buildkit/issues/4557 for the upstream buildkit issue.
Oops. Fixup from https://github.com/dagger/dagger/pull/9235.
Dependabot not having a neat way to check the schema before merging is annoying.
- ci: add magicache benchmark
- trigger workflow
- ci: add scheduled workflow run for magicache benchmark
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.8.3 to 0.8.6
Release notes
Sourced from astral-sh/ruff's releases.
0.8.6
Release Notes
Preview features
[format]: Preserve multiline implicit concatenated strings in docstring...
Bumps the sdk-typescript group with 10 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.0 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.0 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opent... |
Bumps the engine group with 15 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.62 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | 27.4.0+incompatible |
27.4.1+incompatible |
| github.com/docker/docker | `27.4.0... |
This just looks like a typo from #9244 - I don't think we actually intend to do this?
A various collection of improvements to shell autocompletions:
- [x] Fixed completions of command substitution for
container | with-directory $(...) - [x] Partial completions for
container | ... - [ ] Partial completions for
container | with-directory $(...- Something seems to be wrong with the smallest stmt selection logic
- `` positions are kinda tricky to select the right node from :thinking:
- [x] Fixed false-positive completions for
.stdlib/.core/.depsargs - these...
While technically true, the implication is that the produced tarball is gzip-compressed, which it is not! This updates the docs to clarify that the file produced is a raw tar archive.
We were pinned to an old version of the php sdk that didn't have the proper OTEL work that allowed us to actually observe errors happening.
By unpinning it, we'll always get the same version as the engine.
Fixes https://github.com/dagger/dagger/issues/8591
This ensures that we avoid immediately flashing the terminal message, and not showing any progress messages while we're building the service container on demand.
Ideally, the TUI would handle this by default - but currently showing the terminal just entirely suspends all progress output. This needs fixing at some point, but it's worth fixing with this hack now (it doesn't have any extra cost to do this).
Internal ticket: https://linear.app/dagger/issue/DEV-4839
It's better to use the dagger-built binaries as part of our goreleaser release, instead of having goreleaser build them itself. This has a few advantages:
- Consistency. The fewer process differences between local builds and release builds, the better.
- Extensibility. At some point in the future, we want to bundle the engine into the CLI - this will require the CLI release build to use dagger, instead of being a simple `go bu...
At some point I want to put the shell and type inspections in their own sub-packages and avoid name clashing with the rest of the CLI, but this is a much quicker first step to make it easier to navigate the code.
There's no code changes to make it easier to review and follow git history.
This proposal is for a variation of the design prototyped in #8730. It started as a comment in that PR, which I'm formalizing here.
Overview
In #8730 we introduce the concept of secret providers: an expansion of Dagger's ability to load secrets, with 1password integration as the reference implementation of a provider. This makes the user experience better, by making Dagger itself smarter and less dependent on lon...
Problem
While trying to come up with a With helper function to wrap chainable calls into custom spans, I've found that not being able to return errors from within the func (*dagger.Container) *dagger.Container With argument leads to some weird error handling. For example:
func (m *Lolo) Test(ctx context.Context) *dagger.Container {
return dag.Container().From("alpine").
With(Span(ctx, "mycustomspan", func(c *dagger.Container) *dagger.Container {
...
Signed-off-by: Marcos Lilljedahl
I want to repeat something like
FROM scratch
COPY --from=0 / /
ENTRYPOINT ["/bin/bash"]
I read https://github.com/dagger/dagger/pull/3827, https://github.com/dagger/dagger/issues/3673 and checked all discussions. Still didn't find a solution.
I do
func (m *Daggertest) Test(
ctx context.Context,
) (string, error) {
base := dag.Container().
From("my.registry/multilayer:1.0.0")
renovate := dag.Container().WithDirectory("/", base.Rootfs())
addr, err := renovate....
We seem to fairly consistently hit this php test flake.
Examples:
- Recently: https://github.com/dagger/dagger/actions/runs/12690493305/job/35371467890?pr=8730#step:5:14974
- Quite old: https://github.com/dagger/dagger/actions/runs/11478378808/job/31942452004?pr=8763
- There was a discussion in #php message
.E............................................................. 63 / 227 ( 27%)
..................
Summary
Add Interface Support for Typescript! I already did some manual tests and works great!
There's no need to update the codegen since most of the job regarding interface is done by the server.
Technical details
Compared to Go, supporting interface is a bit harder because I do not generate self module binding.
When you create an interface in Go, example:
// my-module/main.go
type Duck interface {
DaggerObject
Quack(ctx context.Context) (string, error)
...
This is an attempt to fix the PHP flake from https://github.com/dagger/dagger/issues/93461.
What appears to be happening is that despite confirming that the output we read has session_token in it, we're somehow decoding a JSON object that doesn't have the port property.
Not really sure how this can possibly be happening - but assuming that the PHP library works as intended (not unreasonable), and that the dagger session code is good (we don't see any other flakes like this for o...
What is the issue?
This is a common source of confusion because we do not specify the difference between the two.
The short answer is:
The difference between withDirectory and withMountedDirectory is that withDirectory will include a directory in an image if you export it, and withMountedDirectory will not.
We should add this to our docs but also to the API docs for these two methods.
:wave: the reason why the above doesn't work is because Dagger relies on MergeOp when copying things to / for performance reasons ref: https://github.com/marcosnils/dagger/blob/ed2603df3b0ba400a4c8a6f55e128945c5a2c300/core/directory.go?plain=1#L585-L614. Here's a workaround you can do to achieve what you need:
n := dag.Container().From("nginx")
dag.Container().WithDirectory("/", n.Directory("/"), dagger.ContainerWithDirectoryOpts{Include: []string{"**/*"}}).Publish(context.B...
Modify the invoke function to return null and discard the value when function declare return type as Dagger.Void.
Fixes #9251
๐ก This is purely an internal code improvement PR ๐ก
Replace the manual ID loading with a call to client.loadXXXFromID to remove boilerplate.
Add copy method to context.
Simplify codegen and remove big boilerplates specially when loading arrays.
This saves around 400 lines of codegen and even more when dependencies are involved ๐
NOTE: Originally, we discussed about that idea with @helderco and wanted to move the loading logic inside Context but it's not possible since ...
It looks like we can pass other arguments to break the statement, not only Include.
๐ค Maybe COPY --from=0 / / is a nice case to put a few strings in a cookbook documentation. ๐คท
๐ Thank you very much.
canDoDirectMerge := copyInfo.Mode == nil &&
copyInfo.ChownOpt == nil &&
len(copyInfo.ExcludePatterns) == 0 &&
len(copyInfo.IncludePatterns) == 0 &&
input.DestDir == "/" &&
input.SrcDir == "/" &&
// TODO:(sipsma) we could support direct merge-op with individual...
:wave: the reason why the above doesn't work is because Dagger relies on MergeOp when copying things to / for performance reasons ref: https://github.com/marcosnils/dagger/blob/ed2603df3b0ba400a4c8a6f55e128945c5a2c300/core/directory.go?plain=1#L585-L614. Here's a workaround you can do to achieve what you need:
n := dag.Container().From("nginx")
dag.Container().WithDirectory("/", n.Directory("/"), dagger.ContainerWithDirectoryOpts{Include: []string{"**/*"}}).Publish(context.B...
The image we use here by default is the image built off of main - but that may actually not have been built, which is sad, and causes flakes in this test.
The solution here is to just avoid the image pull step, by pre-loading the image.
Follow up to https://github.com/dagger/dagger/pull/9347 to Ts interface support to the doc page
Depends on https://github.com/dagger/dagger/pull/9347 and should be merge after this one
- Add interface registration support
- Add interface argument loading through a dynamic wrapper.
- Update TypeScript unit test
Signed-off-by: Tom Chauveau
What is the issue?
On a dagger.Container, using WithSecretVariable will not invalidate the cache of the following layers if the secret name does not change.
i.e.
token := dag.SetSecret("foo", time.Now().String()) // 1. This secret value will change on every call
dag.Container().From("alpine:latest").
WithSecretVariable("TOKEN", token). // 2. I expect the value of $TOKEN to change on every call
WithExec([]string{"sh", "-c", "echo $TOKEN | rev"}). // ...
We want to make sure that remote Engines are ready before we start measuring this, otherwise we will be adding up Engine startup time which is not useful in this context.
This starts the work of encoding the high level process of a release entirely in dagger (instead of splitting across RELEASING.md and github actions). The idea is to split this out so that the releaser module assembles lots of little lego bricks from different components in our CI, and publishes them all, and finally produces a pretty report that we can display in the CI run.
As we start to split more components of our CI out (e.g. into modules for each SDK, etc), then the releaser m...
So that it matches the filter when comparing the duration of this job in alternative runners.
This fixes several concurrency issues. Commits are granular.
don't defer the telemetry finalization so it doesn't account for the
initializeModuleConfig function
Signed-off-by: Marcos Lilljedahl
What is the issue?
Although technically it's not easy to get to unless you accidentally remove the go directive from go.mod file, it's possible.
Dagger version
dagger v0.15.1 (registry.dagger.io/engine:v0.15.1) darwin/arm64
Steps to reproduce
No response
Log output
panic: runtime error: invalid memory address or nil pointer dereference ...
What is the issue?
Dagger is not correctly recognizing or using the GOPROXY environment variable to configure the cmd environment when executing go cmd.
Dagger version
dagger v0.15.1 (registry.dagger.io/engine:v0.15.1) darwin/arm64
Steps to reproduce
No response
Log output
What is the issue?
In main it seems that these two pipelines should be equivalent:
dagger core container from --address postgres without-entrypoint with-default-args --args docker-entrypoint.sh,postgres,-c,log_min_messages=notice with-exposed-port --port 5432 with-env-variable --name POSTGRES_PASSWORD --value postgres up
dagger core container from --address postgres with-default-args --args docker-entrypoint.sh,postgres,-c,log_min_messages=notice without-entrypoint...
Bumps the docs group in /docs with 2 updates: docusaurus-plugin-typedoc and typescript.
Updates docusaurus-plugin-typedoc from 1.2.0 to 1.2.1
Changelog
Sourced from docusaurus-plugin-typedoc's changelog.
1.2.1
Patch Changes
Expose CSS class name to deprecated sidebar items (#747).
Commits
7ad3980 Version Packages
b27cbf9 fix(docusaurus): e...
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.8.3 to 0.9.1
Release notes
Sourced from astral-sh/ruff's releases.
0.9.1
Release Notes
Preview features
[pycodestyle] Run too-many-newlines-at-end-of-file on each cell in note...
Bumps the engine group with 16 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.63 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | `27.4.0+incompati... |
Bumps the sdk-typescript group with 12 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.0 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.0 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opent... |
[dagger/dagger] Issue opened: #9370 ๐ calling up on multiple services only tunnels the first item
What is the issue?
Calling up on a dagger function that returns multiples services will only spawn a tunnel to the first service in the list. dagger call -m up.
I would expect that all returned services would get a tunnel created in parallel instead of only the first one. Also, the documentation site only shows examples of returning a single service but the CLI does understand the concept of returning multiple services from a dagger function so I would expect this to work.
###...
Adds a section on the documentation about supporting arrays as arguments.
This causes some very hard-to-read CI failures when we use this - this means that instead of waiting for everything to finish, we bail quickly on the first error. E.g. when linting, we error out on the first lint failure, instead of waiting for all the checks to pass or fail.
For example, of a hard-to-read failure see https://v3.dagger.cloud/dagger/traces/168ed3748bb12bdb7d858df98a9adb94
What is the issue?
The gif shows the old approach, WithExec([]string{"python", "-m", "http.server", "8080"}) which no longer works. It's also missing the up at the end, as in dagger call http-service up
I suggest that we re-record without the cat, and add up at the end of the command. If we want to go the extra mile, we should record the curl http://localhost:8080 response too.
cc @vikram-dagger
We've received numerous requests in just the past couple of weeks for more ability to control the UI.
At a base level, we know we don't want developers to have to work directly with the OpenTelemetry SDK like they have to now. But it's not just that: some users also want more control over where things show up in the UI, and want the ability to show something instead of the lower-level details, so we need to figure out the rules for that, too.
This issue is to corral all the feedback...
It is possible for function argument names to collide with dagger CLI global flags causing unexpected behavior without warning.
An example is if a function has an argument called output. This will cause the dagger call to attempt to export the final object at the path of --output.
Additionally, if multiple --output flags are passed to different function calls in a chain, only the final value will be passed to all function calls because of how global flags are processed. For exam...
Bumps the engine group with 16 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.63 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | `27.4.0+incompati... |
Thanks to the :expect flag on calls to withExec
The custom-module always-exec used in the PhpSdkDev is now obsolete.
This PR removes the depedency on the custom module always-exec.
Quick follow-up to https://github.com/dagger/dagger/pull/9231 before v0.15.2.
First, a fix to a flake that could occasionally occur when there was a host port conflict :scream:
Then, Container.up should also be marked as impure, just like Service.up, since it modifies host state.
Found while working on some improved tests in #9381, when I discovered that some tests were mistakenly missing from LegacyTest.
Essentially, what I wanted to test was - AsService.Up works, and Container.Up works. But in this test, I end up calling these within the same session. I think at some point maybe this used to work, but now we have this logic: https://github.com/dagger/dagger/blob/504787f4370a4032788161af0defdcb8b64bd17f/core/services.go#L145-L148
The key we use for st...
See discussion in #1323311418325471315 message, raised by @wingyplus.
This fixes the issue where an dagger version will be treated as if we should try and install the dev version of dagger.
Attempt to fixes the flakes around TS test that timeout (example: https://github.com/dagger/dagger/actions/runs/12770326585/job/35594928990?pr=9384)
I read many tickets in this repo and found that some time ago, with a cue, it was possible to mount the host directory. I see things like client.Host()..., but there is no such thing in the latest Go SDK.
Is it possible to do something like
dag.Container().
From(config.Image).
WithMountedDirectory("/host/dir", "/dir")
For example, the dagger engine is in Kubernetes, and 3rd party service updates files in "/dir", where the dagger engine runs.
I want to provide my local fi...
I don't need a bidirectional bind mount. I'll be happy to have any access.
Hey there!
All the files passed to your functions need to be via function arguments and accessible by the client. This is done so the security model is consistent as accessing arbitrary files from the engine might compromise this model.
Isn't there a way where you could run the update process where the client lives so the client sends those files via function arguments each time?
That's a significant drop in the scope. But I am happy that's only a design decision.
The idea was to mount a few terabytes of data and read a few kilobytes for processing from there. IMO, a lot of ETL pipelines do something like that.
Hey there!
All the files passed to your functions need to be via function arguments and accessible by the client. This is done so the security model is consistent as accessing arbitrary files from the engine might compromise this model.
Isn't there a way where you could run the update process where the client lives so the client sends those files via function arguments each time?
I see.. we've opened this issue for those cases: https://github.com/dagger/dagger/issues/9326
What is the issue?
I have a function that returns a list of objects. e.g.
func (m *Github) ListPullRequests(token *dagger.Secret, owner, repo string) ([]PullRequest, error) {
I then call this function from another module.
prs, err := dag.Github().ListPullRequests(ctx, token, owner, repo) // First evaluation of Github.ListPullRequests
if err != nil {
return nil
}
for _, pr := range prs {
s, err := pr.State(ctx) // Bug: This will NOT use a cached version ...
What are you trying to do?
It is time to talk about the Dagger Module for DotNet SDK. My goal is to have:
- Basic module support, we have a class, declare a method that accepts arguments, and return a type.
- Dogfooding it by rewriting the
devmodule.
References implementations:
I have been trying to implement a prototype at https://github.com/wingyplus/dagger-dotnet-sdk/pull/7 a long time ago. The idea behind that prototype is using attribute to annotate a class and let the ...
Problem
@pjmagee reports that as of Dagger 0.15.2, the experimental dagger shell does not work well in Windows.
What happened? What did you expect to happen?
docker run --rm -it -v $PWD/docs:/data plantuml/plantuml context.puml -t svg
I don't know how to call this with dagger.
Fixes #6927, enables #9098, and continues the project of rebuilding the Ship of Theseus :tada:
This PR introduces a new way of marrying dagger's dagql and buildkit's LLB. Currently, dagql is used to query the graphql API schema, while LLB is used to query the buildkit dag. dagql is much more flexible and easy to extend, while LLB has significantly better caching behavior.
DagOp allows us to combine the best of both worlds. Essentially, it allows us to execute a graphql selection *as a...
Summary
Add float support and fixes #9280.
Examples
package main
import "context"
type Test struct{}
func (m *Test) Test(n float64) float64 {
return n
}
func (m *Test) TestFloat32(n float32) float32 {
return n
}
TODO
- [ ] Add
FLOAT_KINDto client bindingTypeDef - [ ] Add float support for marshal/unmarshal
- [ ] Add float support on CLI
- [ ] Add integrations tests
- [ ] Add Go support
- [ ] Add Typescript support
- [ ] Add ...
This fixes the following data race when setting the CustomExit in the REPL:
==================
WARNING: DATA RACE
Read at 0x00c0003eb6e8 by goroutine 34:
github.com/dagger/dagger/dagql/idtui.(*frontendPretty).recalculateViewLocked()
/Users/helder/Projects/dagger/dagql/idtui/frontend_pretty.go:518 +0x54
github.com/dagger/dagger/dagql/idtui.FrontendSpanExporter.ExportSpans.deferwrap2()
/Users/helder/Projects/dagger/dagql/idtui/frontend_pretty.go:340 +0x34...
What are you trying to do?
It takes roughly 2 to 3 minutes for me to install private modules and then have it execute the functions.
It would be great if I can create custom dagger engine with some of the private modules pre-installed and then run this engine in our CI (gitlab cicd).
Why is this important to you?
It will save us time.
How are you currently working around this?
No response
Without this, we can end up accidentally using the wrong module by default! This means we end up with distinct cache volumes for these, when they should be shared everywhere.
(split out of #9389)
Bumps the engine group with 12 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.63 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | `27.4.0+incompati... |
Fixes https://github.com/dagger/dagger/issues/9264
Fixes https://github.com/dagger/dagger/issues/8893
Before
โฏ dagger core --silent container from --address alpine with-exec --args ls,wat stdout
Error: input: container.from.withExec.stdout process "ls wat" did not complete successfully: exit code: 1
โ container | from alpine | with-exec ls wat | stdout
Error: input: container.from.withExec.stdout process "ls wat" did not complete successfully: exit code:...
And while in the area, updated the logic for reading the os-release file (so as to allow a fallback according to https://www.linux.org/docs/man5/os-release.html).
What is the issue?
We have recently started seeing issues with private modules
When moving tags get updated on the repo containing the dagger modules, the first few dagger calls will error on loading the dependencies.
The error looks like this:
From ssh://github.com//
* branch bf8c67bef729d2754633367b112060ef39adfcea -> FETCH_HEAD
! [rejected] actions-v1 -> actions-v1 (would clobber existing tag)
! [rejected] modules-v2 -> modules-v2 (would clobber exi...
[dagger/dagger] Issue opened: #9406 PHP SDK: Document that `methodNames` are called as `method-name`
What is the issue?
When generating a module using the PHP SDK, the templates includes a README.md.
The README does not make it immediately obvious that functions are renamed to kebab-case when called through dagger.
What is the issue?
When generating a module using the PHP SDK, the templates includes a README.md.
This is helpful for understanding how it works, but it would also be nice to have a Quickstart guide so people can get to the stage of playing around with it sooner. Similar to the Quickstart Docs for the SDKs maintained by the core team.
Any documentation writt...
Follow up to https://github.com/dagger/dagger/pull/9396 to add doc content on float.
I also added some doc for integer since it was missing.
Fix the first example to use the Doc Attribute.
This PR follow up #9396.
This allows the engine to correctly setup certificates in case there's
any custom certs configured
Signed-off-by: Marcos Lilljedahl
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.9.1 to 0.9.2
Release notes
Sourced from astral-sh/ruff's releases.
0.9.2
Release Notes
Preview features
[airflow] Fix typo "security_managr" to "security_manage...
Bumps the sdk-typescript group with 14 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.1 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.1 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opent... |
Bumps the sdk-java group in /sdk/java with 2 updates: io.netty:netty-common and org.assertj:assertj-core.
Updates io.netty:netty-common from 4.1.116.Final to 4.1.117.Final
Commits
3b03648 [maven-release-plugin] prepare release netty-4.1.117.Final
28a81c6 Update java versions (#14660)
1bd459a Correcly handle comments appended to nameserver declarations (#14658)
ad00d19 Add configure to be able to use perf / intellij p...
Bumps the docs group in /docs with 2 updates: docusaurus-plugin-typedoc and sass.
Updates docusaurus-plugin-typedoc from 1.2.1 to 1.2.2
Changelog
Sourced from docusaurus-plugin-typedoc's changelog.
1.2.2
Patch Changes
Correctly handle typedoc executable in Windows (#762).
Commits
b0f8f67 Version Packages
10bccd8 fix(core): correctly handle typed...
Steps to reproduce:
./hack/with-dev go run -race ./cmd/dagger shell --no-mod
Dagger interactive shell. Type ".help" for more information. Press Ctrl+D to exit.
โ
When in the prompt, resize the terminal window. Should get something like this:
==================
WARNING: DATA RACE
Read at 0x00c000370308 by goroutine 28:
github.com/charmbracelet/bubbletea.(*Program).checkResize()
/Users/helder/.local/go/pkg/mod/github.com/charmbracelet/bubbletea@v1.2.4/tty.go:117 +0x3c
gi...
Something I've wanted to do for a while. Instead of .., should use _ for interpreter builtins:
Before
..echo foo & ..echo bar & ..wait
After
_echo foo & _echo bar & _wait
Just noticed this, seems to have been accidentally added in https://github.com/dagger/dagger/pull/8624.
This PR allows to create Dagger modules using Java.
$ dagger init --sdk=java my-java-module
$ tree my-java-module
my-java-module
โโโ dagger.json
โโโ pom.xml
โโโ src
โโโ main
โโโ java
โโโ io
โโโ dagger
โโโ sample
โโโ module
โโโ MyJavaModule.java
โโโ package-info.java
8 directories, 4 files
This will create the modul...
For example:
โฏ dagger shell -m modules/alpine
Dagger interactive shell. Type ".help" for more information. Press Ctrl+D to exit.
./modules/alpine โ alpine -h
Usage of alpine:
--arch string
--branch string
--distro string
-...
Instead of passing PHP SDK source directory to every functions in dev module, set it at constructor and use DefaultPath to load parent directory by default.
In the Dagger module, modify the SDKPHP to set PHP SDK source directory to module initialization instead of function call.
What are you trying to do?
Passing arrays to Dagger functions via the CLI is currently done with comma separation. What if I'm passing a string that needs to include a comma? What if I'm passing an array of arrays? I found that \ doesn't escape commas (if it did, it would probably be bad for some Windows users).
I'm not suggesting that JSON array syntax should be the only option. But if an array input begins with [, it should be treated as a JSON array. Google's GN is an ex...
What is the issue?
The daggermod folder is mounted such that only root can write to it. If a container is returned that has .WithUser("not-root"), introspection/invocation will fail.
Dagger version
v0.15.2
Steps to reproduce
Check out https://github.com/M-Pixel/dagger/tree/m-pixel-csharp
Remove .WithUser("0") from /sdk/dotnet/module/main.go
From the dotnet directory, run dagger init --sdk=../module test; dagger call -m test default-cow
Or re-create the scenario on...
[dagger/dagger] New comment on discussion #9303: RequiredPaths should be scoped to the module source
RequiredPaths shouldn't be scoped to the module source because the reason it was created in the first place was to pick files outsite the module for deep integration in monorepos, out of the box. The problem is it's very static and hard to generalize as a useful thing. We've since been thinking that it might be best to default to a more isolated approach, but still allow manual tweaking of a module's includes (in dagger.json) to support deep monorepo integration for those that need it. Se...
While doing some profiling while investigating the slow down discussed in #1328789786718371861 message, I figured I'd look at the slow dev engine start up times (which I'd never managed to pin down).
An example logs snippet of a particularly degenerate case (it seems to take over a minute to create a worker):
time="2025-01-22T14:28:58Z" level=debug msg="finished setting up network namespace vvui13myjimofuv8wm9ei0rgb"
time=...
This changeset remove /root/.mix cache volume out of the runtime because sometimes, the mix local.hex --force got cached, cause /root/.mix cache volume got empty.
And also update dev module to use latest version of elixir SDK and bump engineVersion in dagger.json.
Bumps the engine group with 12 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.63 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | `27.4.0+incompati... |
Relates to #8730
TODO
[] Update screen recordings in feature page
Hide these from the supported functions available on the command line (since they're for SDKs only).
Additionally, move the helper for this into the dagui package, so that we can use it to hide output in the progress view - this has the largest impact when building complex modules in CI (which uses plain progress output), like in our own CI (for example: https://github.com/dagger/dagger/actions/runs/12928659633/job/36056419424#step:5:209)
This was prompted by noticing our plain progre...
Fixes https://github.com/dagger/dagger/issues/9423
Before
โ alpine -h
Usage of alpine:
--arch string
--branch string
--distro string
--packages strings
Error: constructor: pflag: help requested
After
โ module...
Fixes https://github.com/dagger/dagger/issues/9257 :tada:
This bumps all our relevant graphql dependencies. This is a bit trickier than just bumping stuff up, since previously we weren't definitely validating our queries! This wasn't really any issue, but we should have really been doing it all along. Also, the next version of gqlgen imports rules, so all validation gets enabled anyways, so we should get it working.
We also need to track schema.PossibleTypes for some reason - this i...
Secrets args should be the same as BuildArg and be a list of object with a name and the secret value so we don't have to set the name with in a hacky way.
Also explained by @helder at https://github.com/dagger/dagger/issues/7358#issuecomment-2321481240
type SecretArg struct {
Name string
Value *Secret
}
// DirectoryDockerBuildOpts contains options for Directory.DockerBuild type DirectoryDockerBuildOpts struct {
...
What happened? What did you expect to happen?
Hello all,
I'm having an issue that I assume is user error and/or an uncommon use case and would like to understand if I can make it work the way I am envisioning.
Using docker compose, I would like to have dagger code running in a container be able to publish a container to a docker registry container running within the same docker compose network. Right now, it seems that dnsmasq on the dagger engine container is unable to resolve the doc...
v0.13.1 was released, and requires a more recent version of rust than we're currently using.
Bumps the engine group with 13 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/99designs/gqlgen | 0.17.57 |
0.17.63 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| github.com/containerd/stargz-snapshotter | 0.15.1 |
0.16.3 |
| github.com/docker/cli | `27.4.0+incompati... |
Follow up for https://github.com/dagger/dagger/pull/9204#discussion_r1918811370
My previous change had caused these to diverge, updated them now to be consistent for easier maintainability.
Before this PR, the function call was not getting cache because the compilation occurred every time it ran the mix run command. In this PR, add a compilation step before trigger the entrypoint to ensure a function will compile only once during initialization.
Benchmark
TBD
The experimental functions in golang.org/x/exp/slices have been included in the standard library as of Go 1.21.
Reference: https://go.dev/doc/go1.21#slices
What is the issue?
I am sorry if it is not a bug, i am new to dagger, but this looks quite odd to me. This is my first time trying Dagger.
ff := []*dagger.File{
source.File("main.go"),
source.File("go.mod"),
source.File("go.sum"),
}
dirpath := "/root/src"
a := dag.Container().
From("golang:1.23.5-alpine3.20").
WithFiles(dirpath, ff).
Terminal()
if dirpath ends with a slash / then the files end up in a subdirectory of /root/src/, like /root/src/src/, but...
Am I right to understand that the "Container.publish" API uses https by default ?
Is there a way to publish to a bare http registry ? iow not deployed behind https ?
Publish is currently using buildkit's default publishing mechanism and the way to allow it to publish to non-https registries Is by setting something like this in the engine's config https://github.com/moby/buildkit/blob/81d49f78197cd471bb92ed800a4873384389bfd4/docs/buildkitd.toml.md?plain=1#L180
Here's our docs on how to customize the engine config:
https://docs.dagger.io/configuration/engine/
Let us know if you have other questions
Thanks for this very useful answer.
Now I get authentication problem when trying to publish to host.containers.internal:
! failed to export: failed to push host.containers.internal:8080/gotcha/alpine: failed to authorize: failed to fetch anonymous token: Get "http://localhost:8080/v2/token?scope=%2A%3A%3A&scope=repository%3Agotcha%2
Falpine%3Apull%2Cpush&service=container_registry": dial tcp [::1]:8080: connect: connection refused```
How am I supposed to setup the authenticatio...
I have read deeper and found the with_registry_auth method on Container. However it does not seem to accpet a password even though my registry lets me login and push with the given password.
I am wondering if I am misusing dagger.Secret. How could I prove myself that the proper password is passed to the call ?
What is the issue?
Reporting as requested from [this short exchange in Discord](#typescript message). When the class name in a module has a number in it, it seems the SDK doesn't process it correctly. This is an example class with the issue:
import { dag, Container, object, func, Directory } from "@dagger.io/dagger"
@object()
export class M8A {
/**
* Returns a container that echoes whatever string argument ...
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.9.2 to 0.9.3
Release notes
Sourced from astral-sh/ruff's releases.
0.9.3
Release Notes
Preview features
[airflow] Argument fail_stop in DAG has been renamed as fail_fast (AIR3...
Bumps the sdk-typescript group with 14 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.4 |
1.12.5 |
| @opentelemetry/exporter-trace-otlp-http | 0.56.0 |
0.57.1 |
| @opentelemetry/sdk-metrics | 1.29.0 |
1.30.1 |
| [@opentelemetry/sdk-node](https://github.com/open-telemetry/opent... |
This (is a WIP) stab at updating the dagger.json's sdk field from a string to a struct.
I am opening this PR to collect initial feedback while I am trying to figure out how we can extend this to include environment variables in the runtime container. (I am guessing we will need those env variable at Codegen time instead of Runtime (to ensure those work for codegen for the private module's dependency, but that is wht I am currently evaluating).
Follow-up from https://github.com/dagger/dagger/pull/9446.
This is currently causing the python linter to fail.
:scream: https://github.com/dagger/dagger/pull/9443 didn't catch everything.
We really need a better way of type-checking this kind of thing - wonder if dagger shell could do this.
Fixes https://github.com/dagger/dagger/issues/9448.
The code that propagates operations to a container's underlying directory wasn't quite correct. It was incorrectly making the assumption that combining filepath.Dir + filepath.Base gives you the original path.
However, when passing a path with a trailing slash to filepath.Dir, you actually get the entire input - instead of going up a level. So, instead, we should avoid this, and instead filepath.Clean the input so that we ensur...
Summary
I fixed a small problem linked to module name that contains a number. The generated class name wasn't consistent with the name search by the introspection.
Basically, a module named m8a generated as M8A but converted to M8a by the introspector instead of M8A.
I also added a bunch of tests cases to verify other format
Result of the #9451 reported issue with this branch version:
Fixes #9451
What are you trying to do?
If I'm instrumenting my tests with custom spans, I'd like to be able to x-reference those spans based on git metadata so my initiated-from-main CI runs are distinguishable from my intiated-from-branch CI runs. CI Infra engineers responsible for pipeline maintenance are often looking to understand how long each test case takes to run across different environments and versions, as well as how often they suceed or fail to determine test flakiness. [Datadog has som...
This reverts commit f2c5dc5d2908ecbafaf6dbe4c5663791161a40a8.
The previous version was able to catch things like:
1m2.345s12.34s
But wasn't able to catch:
1m23s
But it looks like it happens, sometimes:
+++ actual
@@ -11,7 +11,7 @@
โ โ starting session X.Xs
-โ load module X.Xs
+โ load module 1m13s
โ โ finding module configuration X.Xs
-โ โ initializing module X.Xs
+โ โ initializing module 1m12s
โ โ inspecting module metadata X.Xs
โ โ loading type definitions X.X
For instance: https://v3.dagger.cloud...
Checks if the TF_BUILD environment variable is set and marks the run as CI with the vendor as Azure.
@vito asking for your review as you most recently edited :smiling
The custom module always-exec had been removed from the dev module but I mistakenly left it's usage in one of the less frequently used methods.
This removes it and fixes the method.
Also upon using 0.15.2 it automatically updated a few Go dependencies, which I assume are okay to commit.
What happened? What did you expect to happen?
I'm quite new to Dagger. I'm getting an error about GitPython not being able to find the git executable. I'm using container image Node:20. I have conformed that the git executable is in the image. I did add the environment variables GIT_PYTHON_GIT_EXECUTABLE and GIT_PYTHON_REFRESH to the container definition in the function. However, the problem seems to occur elsewhere, but I'm not sure where.
ERROR
! failed to ser...
From @TomChv , consider the following example:
package main
import (
"context"
"dagger/test/internal/dagger"
)
type Test struct{}
func (t *Test) Test(ctx context.Context) *dagger.Container {
_, err := dag.Container().
From("redis:alpine").
WithEnvVariable("ALLOW_EMPTY_PASSWORD", "yes").
WithExposedPort(6379).
AsService(dagger.ContainerAsServiceOpts{UseEntrypoint: true}).
WithHostname("redis").
Start(ctx)
if err != nil ...
Sometimes, the code snippets aren't updated from the netlify build, and manual intervention is neccessary:
This hasn't really gone away, and is a bit annoying - we should either:
- Disable the cache entirely, and suffer through the slower deployment times
- Fix the underlying issue (ideally)
Just opening this to track, not 100% sure what's actually going on.
FYI @vikram-dagger
What are you trying to do?
reduce the amount of logging when running dagger call -qq (or -qqq)
Why is this important to you?
One of my modules has hundreds of lines when run in gitlab CI, like this, even when running dagger call -qq, and gitlab has a limit on the size of jobs logs, but I still want to the see the output so I can't run in silent mode (-s).
94 : TypeDef.withFunction(
94 : โ โ function: Function.withArg(
94 : โ โ โ name: "ctr"
94 : โ โ โ sourceMap: sourceMap(col...
previously the withexec network tx and rx numbers would run up over the course of a call or even multiple calls. this is because buildkit likes to re-use network namespaces when it can, so the stats for the namespace persist between individual calls.
this PR samples a baseline for the namespace on construction.
it's totally possible there are other ways to bug out these numbers, knowing what we know. like if one of these recyclable netnses can be concurrently re-used by multiple execs...
What are you trying to do?
docker run -i allows users to run images that accept ongoing communication on stdin. as far as i can tell, this is not currently possible in dagger - you can't pass the CLI host's stdin to an engine-ran process.
Why is this important to you?
MCP servers all use stdio as transport, but stdio servers can also be useful for greenfield server development.
How are you currently working around this?
No response
What is the issue?
Currently the PHP SDK lacks documentation akin to the Python SDK reference or Go SDK reference.
It would be good to have this information generated with a link to it from the sdk/php/README.md
What is the issue?
We have few dagger Python modules using dagger v0.15.2
They are used in Azure Pipelines, where the latest Dagger CLI is downloaded before module execution.
Since this morning, Dagger CLI v0.15.3 is download and dagger module initialization fails with below error message
Dagger version
v0.15.3
Steps to reproduce
I can reproduce similar issue with when initializing ne...
Bumps the engine group with 15 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.6 |
| github.com/99designs/gqlgen | 0.17.57 |
0.17.64 |
| github.com/containerd/containerd | 1.7.24 |
1.7.25 |
| [github.com/containerd/stargz-snapshotter](https://github.com/containerd/starg... |
We previously needed to make function calls impure to handle various
corner cases around Secrets (covered by TestModule/TestSecretNested).
However, recently sometime this resulted in us getting duped telemetry
output for calls. It makes sense in that a call may often get
re-evaluated (i.e. it's a base image for multiple vtxs in a DAG). It's
not clear why this only started happening recently though.
Either way, we can fix it by having function calls be cached per-client
via a custom...
v16 of the action we're using has a fix for the error we're seeing on main https://github.com/dagger/dagger/actions/runs/13067469981/job/36462427359:
Updating Homebrew
Error: Unknown option: --preinstall
Usage: brew update, up [options]
Fetch the newest version of Homebrew and all formulae from GitHub using git(1)
and perform any necessary migrations.
--merge Use git merge to apply updates (rather than
...
See my [message on Dagger Discord](#1334842695633473536 message).
Demo
# Checkout to my PR
dagger shell
โ engine | container | with-exec usr/local/bin/dagger-codegen help | stdout
Usage:
codegen [flags]
codegen [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
introspect
Flags:
-h, --help ...
[!NOTE]
This issue allows to track progress, ideas, feedback about a Dagger Java SDK.
[!WARNING]
๐ง This is in progress, the lists below are not exhaustive and can change over time
Needs for a first release
- [x] Entrypoint generation: see #9422
- [x]
dagger init --sdk=java: #9422 - [x]
dagger develop: #9422 - [ ] support constructors and fields
- [ ] support
defaultPathandignorepragmas - [ ] creates a dev container to help contributing without local toolchain
- [ ] ...
What happened? What did you expect to happen?
I have begun setting up Dagger for my monorepo.
This monorepo uses Nx to generate an execution graph (ensure dependencies are built + tested first).
So as a first step, I have re-created these Nx targets in Dagger, and attempt to build projects in sequential order.
For example if B depends on A, A will be built + ...
if you're digging on SDK/module init performance, these spans make it much harder to get confused about which step you're in, and child spans of these steps dominate module init runtime and look similar --- you'll see the codegen binary invoked in the go SDK steps and the module SDKs, for example.
These spans also make it very clear where Codegen ends and Runtime begins, which can be confusing bc at least in for ts, the tail end of codegen installs runtime dependencies like corepack, and ...
Today we have benchmarking for running very basic benchmarks for
dagger init (to create the Dagger module with the default layout and example functions) and then dagger functions (to list the available functions) a few times (first uncached, then cached, then after modifying source code), that show latency of these commands and improvement areas for the SDKs around "getting things ready to run".
https://github.com/dagger/dagger/actions/workflows/benchmark.yml
We should also be running ...
What are you trying to do?
I believe Pre-call filtering should apply when calling modules/functions from other modules.
It appears to be a conscious decision to not support so filing as a feature request rather than a bug report (although it was a surprise to me).
An example of this manifesting as an issue in this branch.
Dagger supports pre-call filtering on _...
What are you trying to do?
Imagine a directory that has many files in it, some relevant but many not. In order to trim the directory down the relevant files (which will hopefully reduce future processing time, as well as improve caching)
Presently, the only way to select/filter the directories are:
- Calling
directory.WithoutDirectory()- Only supports filtering out a single directory, which must be known (can't wildcard)
- Calling
directory.WithoutFile()+ `directory.WithoutF...
What is the issue?
No official docs on interfaces so users have to search through issues/PRs/codebase/discord to find solutions.
#1266406743018311826 message
#1266406743018311826 message
What is the issue?
Dagger traces are shown in Dagger UI and help see every call against dagger native methods
as well as external modules.
Ideally this is roughly a 1-1, with one "span" per call to dagger.
However when referencing resources that may have already "resolved" and then are used later, dagger will repeat the span.
When dealing with directories that may get repeated many times in future, this can result in major multiplier to number of spans shown...
Bumps the docs group in /docs with 1 update: docusaurus-plugin-typedoc.
Updates docusaurus-plugin-typedoc from 1.2.2 to 1.2.3
Changelog
Sourced from docusaurus-plugin-typedoc's changelog.
1.2.3
Patch Changes
Bootstrap TypeDoc using API instead of child_process to avoid cross-platform issues (#762).
Commits
73a29b7 Version Packages
8f307fe fix(docusaurus): bootstrap TypeDoc using AP...
Bumps the sdk-typescript group in /sdk/typescript with 6 updates:
| Package | From | To |
|---|---|---|
| @trivago/prettier-plugin-sort-imports | 5.2.1 |
5.2.2 |
| @types/mocha | 10.0.7 |
10.0.10 |
| @types/node | 22.10.10 |
22.13.0 |
| [@typescript-eslint/eslint-plug... |
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.9.2 to 0.9.4
Release notes
Sourced from astral-sh/ruff's releases.
0.9.4
Release Notes
Preview features
[airflow] Extend airflow context parameter check for BaseOperator.execu...
Bumps the engine group with 16 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.6 |
| github.com/99designs/gqlgen | 0.17.57 |
0.17.64 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/containerd/containerd | 1.7.24 |
`1.7... |
Bumps the sdk-java group with 4 updates in the /sdk/java directory: io.smallrye:smallrye-graphql-client-api, io.smallrye:smallrye-graphql-client-implementation-vertx, io.netty:netty-common and org.assertj:assertj-core.
Updates io.smallrye:smallrye-graphql-client-api from 2.12.0 to 2.12.1
Updates io.smallrye:smallrye-graphql-client-implementation-vertx from 2.12.0 to 2.12.1
Updates `io.smallrye:smallrye-graphql-clie...
This fixes a shell regression in v0.15.3, but only in interactive mode.
I don't fully understand why but Frontend.Background can swallow output if you add a newline (fmt.Fprint vs fmt.Fprintln).
Current solution isn't perfect. You may see extra newlines than intended. For example:
โ _echo hello
hello
โ _echo -n hello
hello
โ
That happens because the _echo builtin, for example, sends two separate writes with _echo hello:
"hello"
"\n"
So on the...
Noticed some people expect to be able to type "exit" to leave the shell REPL.
There's an exit builtin and at first I just delegated to it, but it requires the interp runner to run, only to exit right after. So this feels simpler and snappier. Builtin is still available at _exit, but it won't exit the REPL. I tried that but got tangled with knowing the difference between exiting a prompt vs exiting the REPL.
What is the issue?
Contrary to the docs, which states that mounted directories are included, Container.directory() does not include mounted directories when listing entries or calling export on a parent directory.
Our use case is to include log files from a mounted build directory when errors or warnings occur, in order to export them to the CI runner context. We scan the build log to extract absolute...
The python and typescript examples will need to be checked as they aren't my thing.
This PR is a prototype for native LLM support in Dagger.
- New core type:
Llm. Represents the state of a LLM - which it turns out fits perfectly in a DAG of immutable states! - Add any Dagger object to the Llm state: the LLM can now discover the object's functions, and call them - making it an agent! It's like magic
This paves the way to using Dagger as a backend for agentic workflows. Most AI agent platforms focus on 1) distributed infrastructure for event dispatching, job queues, s...
Goals here are:
- Fix various sources of excessive module building cache invalidation
- changing completely unrelated source files in context
- building different git commits that have no changes in the module source
- etc.
- Use the filesync improvements + new caching features in #9204 to cleanup tons of cruft from the API (ResolveFromCaller, Module.initialize, etc.)
So far the results are looking good.
Comparing the runtime of the load module step for the dagger repo:
...
The docker run command in this page does not work: the engine container image version must be prefixed by v otherwise an error occurs
Error: initializing source docker://registry.dagger.io/engine:0.15.3: reading manifest 0.15.3 in registry.dagger.io/engine: manifest unknown
[dagger/dagger] Issue opened: #9507 support `~/` notation when reading and writing files on the host
Problem
When reading and writing files on the host (via Host.directory, Host.file, Directory.export, File.export), the path cannot be relative the client's home directory on the host. This is not an issue for external clients - they can access their own environment easily. But for the dagger shell, which by design relies on the Dagger API for host access, this is a problem.
Examples of tasks that are currently impossible using the dagger shell, and would be possible with this cha...
What are you trying to do?
We want to inject some environment variables into Dagger containers from GitHub Actions. Currently, we need to pass in each environment variable as a flag which can become a bit clunky. We are calling dagger cli from Github actions and have a lot of environment variables setup in the workflow. Dagger cli should have an option to load env variables when starting a container or user should be able to pass in a file which contains the env variables to the cli.
#...
Bumps the engine group with 21 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.7 |
| github.com/99designs/gqlgen | 0.17.57 |
0.17.64 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/charmbracelet/bubbletea | 1.2.4 |
`... |
This PR has a little collection of fixes:
- Avoid use of
engine.tomlfor our own CI where possible (it's still needed for configuring registries now, patch incoming for that soon hopefully). - Simplifies our own CIs construction of engine config + args.
- Fixes https://github.com/dagger/dagger/issues/9009 by requiring
security.insecureto explicitly be unset if it's not being used.
Experimental (X1) runners on always-on infrastructure:
- CPU: EPYC 9454P
- MEM: 256GB DDR5 ECC
- NVMe: MZQL21T9HCJR-00A07
- NET: 10G
What are you trying to do?
We are currently daggerizing harbor from Makefiles and bash scripts to dagger.
Our published images currently have an healthcheck attached to them. We are trying to do the same in Dagger.
But we found that there is no HEALTHCHECK command while publishing images in Dagger.
Why is this important to you?
We are trying to use Dagger in our Workflow and as main part of the CI. This includes having healthchecks as a part of dagger published images. so we n...
Problem
Officially, there is no supported way to connect remotely to an engine. But there is an escape hatch (_EXPERIMENTAL_DAGGER_RUNNER_HOST) and lots of people use it in production. In fact it has become a de facto standard for everyone running Dagger in self-hosted CI clusters.
This disconnect between what users do, and what we support, must be resolved. We face a simple choice:
- Promote the escape hatch to a fully supported feature. This means replacing `_EXPERIMENTAL_DAGGER_RU...
Oops, https://github.com/dagger/dagger/actions/runs/13177476543/job/36780091370.
Looks like the grep expression wasn't right.
The report looks mostly nice though (also pushed a fix to tidy up the link header formatting):
Fixes https://github.com/dagger/dagger/issues/8671 - the aim is to fix all the remaining little nits with enums that make them tricky to use (also wanting to unblock #8608).
TODO:
- [x] Tidy up core enum names
- [ ] Improved
withEnumMemberAPI for enum members - [ ] Kick off migration from
withEnumValuetowithEnumMemberin all SDKs- [x] Go
- [ ] Python
- [ ] Typescript
- [ ] Backwards compat (this is gonna be bit tricky)
- [ ] Fix inevitably broken tests
- [ ] Clean up
Allow to define fields from a class or record and register them.
For now it's only limited to registering the fields, they will then be used by constructors.
What are you trying to do?
I am specifically in the go sdk, so my example is specific to that, but I assume this is not "just a change to the go sdk." I am importing a directory into a function and for the construction of some custom types (and for logging), I'd like to use the base name of the directory that was passed in. While I am specifically after the basename, I think the full path makes the most sense as I can do with that what I will. That said, the File type has a name metho...
[!NOTE]
To be merged after #9520
Allow to define a constructor on classes for an module object.
- a default, empty, constructor calling
superis still required - only the first non empty constructor will be registered
This constructor can have as the first parameter a io.dagger.client.Client arg.
In this case the Dagger client will be injected. Please be sure to then call super with the client:
@object
public class MyModule extends AbstrctModule {
/...
Based on this thread with @nipuna-perera in discord: #1336068640168218756 message
Module setup:
// testmod
package main
import (
"dagger/testmod/internal/dagger"
)
type Testmod struct{}
func New() *Testmod {
return &Testmod{}
}
// Returns a container that echoes whatever string argument is provided
func (m *Testmod) ContainerEcho(
//+defaultPath=./certs/test.crt
cert *dagger.File,
) *dagger.Container {
...
Without this change, any OTel instrumentation within the wrapped command will be invisible to the TUI. With this change, we set up an OTel proxy that just delegates to the CLI, so all received OTLP data goes to both the TUI and any other configured OTel exporters (including Cloud).
with a cold cache, this shaves ~7 seconds off TS module init with a hello world-ish module. prior to this change, it'd take ~31s on my machine and after it's somewhere in the 24s range. it makes my dev image 4MB larger, which is a bit of a tradeoff, but the dev image is already 449Mb, so 4mb is like 0.8% of the image size.
this is very half-baked at the moment. see my inline github comments plz :)
if this works well, i'm intending to attempt to bundle the rest of the sdk-required node ...
This PR adds two checks in the annotation processor for Java modules. It verifies that Objects (annotated with @Object) and Functions (annotated with @Function) are declared as public.
This prevents runtime exceptions such as java.lang.IllegalAccessException or java.lang.NoSuchMethodException when calling module functions.
[dagger/dagger] Pull request opened: #9529 Fix java module entrypoint Scalar typedef code generation
This PR fixes a bug in the code generation of a Java module's entry point. When a function's parameter or return type is a scalar, the engine throws the error failed to find mod type for function "xxx" return type/arg because scalar types are defined using dag.typeDef().withObject.
The PR fixes the generated code for module functions registration by defining scalar types with dag.typeDef().withScalar.
Fixes https://github.com/dagger/dagger/issues/9524.
LoadContext could easily produce a Directory that's dependent on a Secret. We have logic to ensure that Secrets are all correctly transferred between various clients.
The underlying bug was occurring because of this chain of events:
- Main client session loads all the dependencies, and we inject git credentials
- We enter the top-level module
Aclient session, and call the target functionContainerEcho, which callsB's ...
This PR enables calling module dependencies from a regular client library. The setup is quite simple:
- Initialize a project in your favorite language
- Initialize a dagger module
dagger init - Install the dagger library
- Install any dependencies
- Run client generator
dagger client add --generator= - Import the generated client and use it like if the library :)
This introduce few changes in an engine:
- A module can be initialized even if it does not contains sources (on...
Handle @DefaultPath and @Ignore annotations.
For instance the following module:
@Object
public class Testjava extends AbstractModule {
public Testjava() {
super();
}
@Function
public Directory dir(@DefaultPath(".") @Ignore({"**", "!*.json"}) Directory directoryArg) {
return directoryArg;
}
}
$ dagger call dir -q
_type: Directory
digest: sha256:461847f561c209b33811c523376fcc839335c6a46ae1a5941781d9c33c824ef0
entries:
...
fixes vulnerability inside transitive dependency:
org.eclipse.parsson:parsson โ CVE-2023-7272
This should fix the scan issue
fix some function names in comment
This is recovered work from months ago. It isolates components more cleanly so, for example, provisioning can be excluded in modules.
Another objective was to put the client bindings in a Python namespace package, so it can be exported to a module's src/ directory instead of sdk/, and committed to git.
This patch, introduces object and field for declaring fields in object. Then the object is uses, it will convert to Elixir struct with mark as required in struct if the field is not optional. And add support for return/accept to a function in object.
Let's take a look at the example:
defmodule Hello do
@moduledoc false
use Dagger.Mod.Object, name: "Hello"
# Start declaring a field
object do
# Declare a field. First argument is name, the second is ...
One slight issue with this: We never explain the peculiarities of returning an array of values.
In the PHP SDK we have:
#[ListOfType]as an attribute to put on arguments.#[ReturnsListOfType]as an attribute to put on the function itself
My thoughts are to add a second example function within the PHP tab for array arguments what are your thoughts? @jpadams @vikram-dagger @carnage
๐ง DRAFT
Add Thunder Platform Support for GPU Workloads
This PR adds support for running Dagger pipelines on Thunder's cloud GPU infrastructure, providing an alternative to local GPU execution.
Changes
- Added Thunder support in the container builder and executor
- Implemented Thunder-specific container configuration and mounts
- Added environment variables for Thunder authentication and configuration
- Integrated with existing GPU detection and enablement flow
- Add...
What is the issue?
Add an example of returning an array to https://docs.dagger.io/api/return-values/
Bumps the sdk-typescript group with 10 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.5 |
1.12.6 |
| @opentelemetry/semantic-conventions | 1.28.0 |
1.29.0 |
| @trivago/prettier-plugin-sort-imports | 5.2.1 |
5.2.2 |
| [@types/mocha](https://github.com/DefinitelyTyped/Defin... |
Bumps the docs group with 5 updates in the /docs directory:
| Package | From | To |
|---|---|---|
| docusaurus-plugin-image-zoom | 2.0.0 |
3.0.1 |
| docusaurus-plugin-typedoc | 1.2.2 |
1.2.3 |
| sass | 1.83.4 |
1.84.0 |
| typedoc | `0... |
Bumps the sdk-elixir group in /sdk/elixir with 1 update: ex_doc.
Updates ex_doc from 0.36.1 to 0.37.0
Changelog
Sourced from ex_doc's changelog.
v0.37.0 (2025-02-05)
Thanks to @โliamcmitchell and @โhichemfantar for the extensive contributions in this new release.
Enhancements
Optimize and parallelize module retriever, often leading to 20x-30x faster docs generation
Considerably improve page loading times in the browser
Allow customizing search_...
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 2 updates in the /sdk/python/runtime directory: python and astral-sh/uv.
Updates astral-sh/ruff from 0.9.2 to 0.9.5
Release notes
Sourced from astral-sh/ruff's releases.
0.9.5
Release Notes
Preview features
Recognize all symbols named TYPE_CHECKING for in_type_checking_block (#...
Bumps the engine group with 22 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.7 |
| github.com/99designs/gqlgen | 0.17.63 |
0.17.64 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/charmbracelet/bubbletea | 1.2.4 |
`... |
This was bad, since the CLI is built for Windows, but our buildkit package uses Unix constants.
We can just move the offending environment variable names into engine, which is safe to import from the CLI.
TODO:
- [x] Add
hack/build - [ ] Remove
dev-export - [ ] Remove the last traces of mage
- [ ] Remove
hack/dev+hack/with-dev
What is the issue?
If declare a function that returns a list of type ([]*T, []*dagger.Container for example), the Go codegen will render as []T instead of []*T that look break the convention.
Dagger version
dagger v0.15.3 (registry.dagger.io/engine:v0.15.3) darwin/arm64
Steps to reproduce
Create a module that has a function like this example below:
func (m *KptBuilder) Build(source *dagger.Directory) (ctrs []*dagger.Container) {
// ...
}
Then, create a n...
Upon occasion, since we merged https://github.com/dagger/dagger/pull/8442, with returnError, it looks like we've started occasionally flaking:
https://github.com/dagger/dagger/actions/runs/13261220656/job/37018061021?pr=9530#step:5:4951
1 : check --targets=sdk/go
1 : [1m8s] | Error: failed to serve module: input: moduleSource.withContextDirectory.asModule failed to create module: select: failed to update module dependencies: failed to initialize dependency modules: failed to initi...
Previously, we were filtering these, and limiting them to just the go sdk - we should inject them everywhere we can (for consistency).
Follow-up to, and partial reversion of https://github.com/dagger/dagger/pull/9454.
Reverting this temporarily, we still need more design discussion around this, there's still some things to work out. But ideally, we shouldn't block the release.
We keep the struct-ification of the sdk field though, that's useful, since we intend to extend that with pin and friend in the future: see https://github.com/dagger/dagger/issues/9156.
This avoids the annoying "can not add field "call_id" messages that can appear in our logs.
time="2025-02-11T12:05:08Z" level=debug msg="starting container" logrus_error="can not add field \"call_id\"" ...
See the logic in logrus that generates this error: https://github.com/sirupsen/logrus/blob/d1e6332644483cfee14de11099f03645561d55f8/entry.go#L140
See https://v3.dagger.cloud/dagger/traces/7ac8bb11c84ec5925eab8c0c8528c9d7#c8b39737d86fb4f8:EL46:
assertion failed:
--- expected
+++ actual
@@ -31,4 +31,5 @@
โ .stdout: String! X.Xs
! process "/bin/sh -c echo im failing && false" did not complete successfully: exit code: 1
+โ โ remotes.docker.resolver.HTTPRequest X.Xs
Error logs:
You can run 'go test . -update' to automatically update testdata/TestTelemetry/TestGolden/docker-build-fail to the new expected value.'
Most of the...
Corrects some unclear recordings.
What are you trying to do?
It would be nice to support environment variables to configure aspects of the CLI. Specifically things like --progress without requiring those to be set each time call run is invoked.
Some examples from the CLI reference page:
--debugwould beDAGGER_DEBUG=true--progresswould beDAGGER_PROGRESS=plain--silentwould beDAGGER_SILENT=true- etc ...
Related Discord: https://discord.com/chann...
ignore this, im just curious what happens when we change all these go module versions... right now it feels to me like we're only managing to cache go SDK module dependencies on a wing and a prayer...
Bumps the sdk-elixir group with 1 update in the /sdk/elixir directory: ex_doc.
Updates ex_doc from 0.36.1 to 0.37.1
Changelog
Sourced from ex_doc's changelog.
v0.37.1 (2025-02-10)
Enhancements
Support umbrella projects via the CLI
Bug fixes
Make sure docs are rendered inside iframes
v0.37.0 (2025-02-05)
Thanks to @โliamcmitchell and @โhichemfantar for the extensive contributions in this new release.
Enhancements
Optimize and paralleli...
What happened? What did you expect to happen?
Hello!
The following code works perfectly fine with ActivityComponent:
@EntryPoint
@InstallIn(ActivityComponent::class)
interface ActivityEntryPoint {
fun dep(): Dep
}
// Later when called from Activity:
val entryPoint = EntryPoints.get(context, ActivityEntryPoint::class.java)
However, when I change `...
net.minidev:json-smart โ CVE-2024-57699
fixed in version 2.5.2
I just began implementing dagger and am not quite sure why I need to have the sdk in my local repo.
To give a bit more perspective:
I am currently working on a pnpm monorepo and my idea was to just create a package for dagger which has all our functions integrated.
I wonder if there is anything against simply doing:
{
"type": "module",
"dependencies": {
"@dagger.io/dagger": "0.15.3",
"typescript": "^5.5.4"
}
}
in the package.json, drop the `ya...
Upon occasion, tests fail with this flake in TestCall/TestArgTypes/secret args/cmd/sad here
1 : insecure --token cmd:exit 1
2 : โ connect
2 : โ connect DONE [0.0s]
3 : โ load module
4 : โ โ finding module configuration
5 : consuming /v1/traces
5 : consuming /v1/traces DONE [0.0s]
6 : consuming /v1/logs
6 : consuming /v1/logs DONE [0.0s]
7...
Answered the same thing minutes ago: https://github.com/dagger/dagger/issues/8583#issuecomment-2654117616. ๐
Vendoring was a quick solution when we were working on releasing Dagger modules, because we needed to generate custom client bindings, depending on module.
If you donโt have module dependencies then itโll be the same as the published dagger package (i.e., only client bindings for the core API). But if you add a dependency (`dagg...
Answered the same thing minutes ago: https://github.com/dagger/dagger/issues/8583#issuecomment-2654117616. ๐
Vendoring was a quick solution when we were working on releasing Dagger modules, because we needed to generate custom client bindings, depending on module.
If you donโt have module dependencies then itโll be the same as the published dagger package (i.e., only client bindings for the core API). But if you add a dependency (`dagg...
Thanks for the quick answer - seems like my github search queries weren't good enough to find those issues ๐
disables the default GC policy when starting the engine with local cache
disabled
Signed-off-by: Marcos Lilljedahl
Fixes #9556
Fix any methods that return list of object must return in form of []*T.
The go template override FormatReturnType to make it works and expose FormatType from common functions type make it accessible from FormatReturnType.
What is the issue?
Hi,
I have a Dagger root module which depends on external modules. This module has been created using Dagger v0.12.2. When I updated my external modules using the latest version of Dagger (v0.15.4), it updated the dagger.json file using the new pin feature, but it did not update the engineVersion field. This made my CI fail, because it installs the Dagger version configured in engineVersion, but this module was not buildable using Dagger v0.12.2 any more. That...
TL;DR
This issue describes the MagicSDK project and aim to gather opinions and feedbacks from the community.
The goal is simple: make it possible to adopt Dagger in a project without writing code on day one.
Description
Adopting Dagger requires some investment, you need to learn the concept of module, how to create your own with SDKs, use the published on Daggerverse etc.. it's a big learning curve and even if the rewards are great after adoption, it's still a lot.
The goal is t...
Fixes https://github.com/dagger/dagger/issues/9576.
We need to add this into our calls to AsModule to get the engine version to update.
What is the issue?
Reported on Discord #1339586071557701744 message
I was doing some tests of the dockerSDK on a project with dagger shell and I keep hitting the same issue when I try to configure the ports:
docker | build | up --ports 8000:8000 --args ./tls-exterminator,8000:github.com Error: unsupported argument of kind mapThis is something that isn't happening with the Dagger CLI
dagger call do...
Overview
Dagger should make it very easy to generate clients for a Dagger module, and use these clients as part of an existing development workflow. The same generated clients should be usable whether developing Dagger Functions, or an external program.
Examples of generated clients:
- Bindings for Go, Python, Typescript... Same as those already generated by Dagger SDKs, but decoupled from server-side API extensions (custom types and functions)
- CI configurations (eg. reusable Github Ac...
Overview
Dagger should natively support .env files. It's a de facto standard for managing environment-specific configuration in a lightweight, portable way. It is widely supported, included by docker and docker-compose.
Proposed design
Default behavior
If .env exists in the current directory, or any parent directory, dagger should load it by default.
--env-file
An env file can be specified explicitly with `dagger -...
See @vito's comment here: https://github.com/dagger/dagger/pull/9569#issuecomment-2657252489
We essentially need the equivalent of #9344 for those, so we can avoid marking pending states as DONE.
Bumps the engine group with 23 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.7 |
| github.com/99designs/gqlgen | 0.17.63 |
0.17.64 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/charmbracelet/bubbletea | 1.2.4 |
`... |
We started relying on functionality introduced in v1.14.1 of php-graphql-client. But we failed to bump to v0.14.0.
This wasn't caught during testing, but only when upgrading an older module to the latest version of dagger.
Overview
In the context of a new LLM type, it would be amazing if we could send token count as otel metrics, the same way we already send cpu, memory and IO metrics.
Design considerations
The design is still TBD. But it seems feasible.
Per @sipsma on Discord:
sgtm, the current metrics only come from exec-ops but the underlying infra will work in any other api call I believe.
to sketch out what you'd need to do the equivalent of using current code as an example:
- [...
Add a new function to generate PHP SDK documentation pages using doctum
Resolves #9480
What Happens
This works as expected:
#[DaggerObject]
class MyModule
{
#[DaggerFunction]
public function returnSelf(): MyModule
{
return $this;
}
}
However, this fails:
#[DaggerObject]
class MyModule
{
#[DaggerFunction]
public function returnSelf(): self
{
return $this;
}
}
What A PHP Developer Might Expect
Both examples to work identically.
Solution
I'm not sure of all the intricacies of self as a return ...
If any function return an object type (Service, Directory, etc.), the function will crash with error:
protocol Jason.Encoder not implemented for %Dagger.Directory{query_builder: %Dagger.Core.QueryBu
der{name: "directory", args: nil, prev: %Dagger.Core.QueryBuilder{name: nil, args: nil, prev: ni
alias: ""}, alias: ""}, client: %Dagger.Core.Client{url: "http://127.0.0.1:35329/query", conn:
agger.Core.EngineConn{port: "35329", token: "v9is1sa301qrtzb3pabmk4aq7", session_pid: nil}, co...
Also fix a few inconsistencies in documentation examples.
Bumps the docs group in /docs with 2 updates: sass and typedoc-plugin-frontmatter.
Updates sass from 1.84.0 to 1.85.0
Release notes
Sourced from sass's releases.
Dart Sass 1.85.0
To install Sass 1.85.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.
Changes
No longer fully trim...
Bumps the sdk-typescript group with 12 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.5 |
1.12.6 |
| @opentelemetry/exporter-trace-otlp-http | 0.57.1 |
0.57.2 |
| @opentelemetry/sdk-node | 0.57.1 |
0.57.2 |
| [@opentelemetry/semantic-conventions](https://github.com/open-teleme... |
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 1 update in the /sdk/python/runtime directory: astral-sh/uv.
Updates astral-sh/ruff from 0.9.5 to 0.9.6
Release notes
Sourced from astral-sh/ruff's releases.
0.9.6
Release Notes
Preview features
[airflow] Add external_task.{ExternalTaskMarker, ExternalTaskSensor} for AIR302 (#1...
Bumps the sdk-java group in /sdk/java with 2 updates: io.netty:netty-common and org.testng:testng.
Updates io.netty:netty-common from 4.1.117.Final to 4.1.118.Final
Commits
36f95cf [maven-release-plugin] prepare release netty-4.1.118.Final
87f4072 Merge commit from fork
d1fbda6 Merge commit from fork
f844d78 Upgrade netty-tcnative to 2.0.70.Final (#14790)
8afb5d9 Only run 2 jobs with leak detection to minimize bui...
Bumps the engine group with 21 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.7 |
| github.com/99designs/gqlgen | 0.17.63 |
0.17.66 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/charmbracelet/bubbletea | 1.2.4 |
`... |
Ensure the java object is extending the right base class and check the default constructor exists.
This removes the home made @Nullable annotation and replace it by the built in Optional.
Before:
@Function
public String echo(@Nullable String arg) {
if (arg == null) {
arg = "the arg was null";
}
return arg;
}
After:
@Function
public String echo(Optional arg) {
return arg.orElse("the arg was null");
}
Optional also works with @Default:
@Function
public String echo(@Default("Foo") Optional arg) {
...
What are you trying to do?
As an example, take a module I use for loading a container with NodeJS installed.
A bit simplified, it looks like this:
type Node struct {
// Version to use
Version string
}
func New(
// Version to use
version string,
) *Node {
return &Node{
Version: version,
}
}
// Returns a container with NodeJS installed
func (m *Node) NodeContainer() *da...
What are you trying to do?
It is possible to write some dagger code like:
func (m *MyModule) doLotsOfStuff() {
baseContainer := dag.Container();
parallelBuilds = []*dagger.Container{
baseContainer.WithExec([]string{"do", "stuff", "a"}),
baseContainer.WithExec([]string{"do", "stuff", "b"}),
baseContainer.WithExec([]string{"do", "stuff", "c"}),
baseContainer.WithExec([]string{"do", "stuff", "d"}),
baseContainer.WithExec([]string{"do", ...
This commit adds a recipe to answer a common query (example: https://discord.com/channels/707636530424053791/1338800595842240543)
Enums will be supported in the future, however they are unsupported currently. This informs users who visit the page that the PHP SDK does not currently support enums.
Include a warning that PHP dagger modules should not be installed through composer.
These fields are technically optional with OTel logging (logs aren't always associated to a trace or span), so these would panic trying to convert nil to a fixed-length array.
Based on https://discord.com/channels/707636530424053791/1336739628350439454.
This PR adds a function name to the Directory API to retrieve the latest name of the branch.
TODOS
- [ ] API changes
- [ ] Client generation
- [ ] Integration tests
- Support
dagger.io/ui.reveal=true. Revealed spans will always be shown in the UI, without having to expand anything. They'll be contextualized beneath their topmost parent span, and all other sibling/ancestor spans will be hidden - i.e. only 'revealed' spans are shown initially, which can be toggled at a per-span level. - Support
dagger.io/ui.message="sent"|"received"which hints to the UI that the span's primary content are its logs, which should be shown immediately so the user doesn'...
What is the issue?
Shortly after we extracted BenchmarkModule to only run on chron-main and labels, BenchmarkModule started failing to cancellation. on further investigation, it turns out engines are getting oomkilled partway through each run.
I hand-bisected and tracked this problem down to https://github.com/dagger/dagger/pull/9483. The tests pass prior to that commit and fail afterwards.
We can scale down the levels of nesting in the test from 6 to 4 and then they can pass with 16...
This is a somewhat dramatic change to the dagger shell UX and implementation.
Previously shell started the TUI and backgrounded it to show the prompt and accept user input. After accepting user input it would foreground the TUI to show progress, and then background it when its command completed. This had the downside of not being able to let progress "linger" in the scrollback.
Now shell is directly integrated into the TUI, where we show a prompt and history of commands (using the...
Should fix https://github.com/dagger/dagger/issues/9619, can run BenchmarkLotsOfDeps locally now without excessive memory usage.
Extremely kludgy and ugly atm, would ideally like to find something a little more elegant but if not will clean this up as much as possible and go with it for now. Sending out for now to see what CI thinks and if it has any effect on test runtimes generally, besides just the benchmark test
Due to details in our version comparisons, the recent min version bump to v0.16 has caused our helm job to start breaking. See https://github.com/dagger/dagger/actions/runs/13409473465/job/37456077136.
This is because the helm job starts an image from main. This is not ideal, and the versions between these are kind of mutually incompatible. We might want to loosen these at some point a bit, but I don't really have the time to reason through the implications of that right now - so this ...
This PR enables setting the engine pod annotations in the same way as the labels.
Based off of @gerhard's work in 2273cd2 (#9504).
We should be able to merge this directly to main, and once llm is rebased, the tagging should work a bit easier.
This is now gone since #9513
This PR is a prototype for native LLM support in Dagger.
- New core type:
Llm. Represents the state of a LLM - which it turns out fits perfectly in a DAG of immutable states! - Add any Dagger object to the Llm state: the LLM can now discover the object's functions, and call them - making it an agent! It's like magic
This paves the way to using Dagger as a backend for agentic workflows. Most AI agent platforms focus on 1) distributed infrastructure for event dispatching, job queues, s...
Bumps the engine group with 22 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/1password/onepassword-sdk-go | 0.1.3 |
0.1.7 |
| github.com/99designs/gqlgen | 0.17.63 |
0.17.66 |
| github.com/Khan/genqlient | 0.7.0 |
0.8.0 |
| github.com/charmbracelet/bubbletea | 1.2.4 |
`... |
This brings the shell to the root command. Also added "Experimental" on the welcome message when entering the interpreter mode:
โฏ dagger -c version
v0.16.0-010101000000-dev-4a017b8bfbc1
โฏ dagger
Experimental Dagger interactive shell. Type ".help" for more information. Press Ctrl+D to exit.
. โ
The tsx that's being bundled is always x86 so doesn't work on arm64.
We can fix this and remerge fairly easily but want to get the fix out asap
What is the issue?
tl;dr linebreaks and json are all rendered explicitly, so one gets a slur of concatenated formatting and lines - including json - with "\n". It appears to be a fmt::Debug over a format fmt::Display
Dagger version
dagger v0.15.4 (registry.dagger.io/engine:v0.15.4) linux/amd64
Steps to reproduce
Just make a dockerfile() call with some failing entry.
Log output
No response
What is the issue?
Debugging failing builds during the initial setup is a PITA, migrating larger pieces is time intense. The root cause is mostly the lack of relating error messages to the error source. So file and line information of the last call are missing, which is particularly painful when dealing with larger projects.
Dagger version
dagger v0.15.4 (registry.dagger.io/engine:v0.15.4) linux/amd64
Steps to reproduce
Fail any container().exit_code().await call and try to...
Documentation for dagger secrets in Java
Services documentation for Java
What are you trying to do?
- start Dagger enging with gpu access
- create a service that loads and LLM model and expose an OpenAI API
- create awesome agents with LLM
Why is this important to you?
Testing my agents with a standalone and private workflow
How are you currently working around this?
Nope, but @shykes told me that it should be easy to implement :)
Documentation for programmable pipelines in Java
Documentation for debugging in Java
[As noticed by @jpadams](#1319379215849881631 message) during the release of v0.16:
A new release of dagger is available: v0.16.0-llm.1 โ v0.16.0 To upgrade, see https://docs.dagger.io/installdanger of leaving a bunch of daggers lying around
We really shouldn't be prompting users to upgrade from pre-releases (that have been cut directly off of main, or from another branch). We were doing this already for...
It's required by #9531 because it loads a standalone SDK not related to the current source.
I first wanted to create expose the SDK with API call but I figured out that we can keep it internal as long as it's not
bundle to a specific object so it can call from anywhere.
When we do pre-releases, like for our LLM branch, we should avoid publishing to our homebrew tap, etc. To handle this, we create a new config and use that for our pre-releases.
(this also includes some nice changes to make it easier to --dry-run and debug the cli publish step, by returning the dist directory, and having optional secrets)
As a lot of projects are programmed in Java and C# nowadays - it would be cool to use the same language for Dagger.
While working on the Java SDK documentation, I realized float type is not correctly handled.
This fixes it and adds it to the main test to ensure we can generate the code.
@hcnp we actually have SDKs for those right now that we're actively working on in collaboration with the community :tada:
You can track the ongoing Java work here: https://github.com/dagger/dagger/issues/9486
For dotnet, I'm not sure we have a tracking issue, but there is a channel on our discord for discussion: https://discord.com/channels/707636530424053791/1193736711801409658
This will let us tag v0.17.0-llm.2, which would then create a "pointer" at v0.17.0-llm on the remote file server.
Then, we also update install.sh to allow handling these build pointers. In addition, this also lets us set DAGGER_VERSION=0.16 (since we already have major.minor pointers) set.
I don't think we were using these pointers before? (cc @gerhard, maybe there was some use I wasn't familiar with). But we can pretty easily just integrate this in.
We need coverage of module loading on arm64 to catch problems where x86 artifacts (built by our x86 ci runners) accidentally end up in arm64 images.
This is a quick update to our provision tests to give us that additional coverage. Just runs dagger call -m ... --help to trigger a module load for the SDKs covered here.
I could not for the life of me figure out how to trigger publish jobs on the PR in https://github.com/dagger/dagger/pull/9650 so I went ahead and just pushed to see what happened, didn't work.
Have fixes here, but will bang my head until I can convince gh to run the job here so we don't have to repeat this loop more
^ in the title, this reapplies #9526.
Giving https://github.com/dagger/dagger/pull/9621 another try. I ended up reverting it for v0.16.1 because, for some reason, sdk dev tests on main started consistently failing due to a problem with it seemingly out of nowhere. The problem had to do with .(Enumerable) assertions not working, which should have been caught much earlier in the original PR itself, but wasn't somehow.
Either way, this makes some adjustments ...
Otherwise this will append v to versions when publishing to S3, which we do not want.
Before the built dependencies were copied, replace it by a cache and re-use the same container. This improve the performances when creating multiple modules for instance.
This PR introduces the anthropic support to the llm feature of Dagger.
It is based on @samalba's https://github.com/shykes/dagger/pull/297.
The implementation introduces a SendQuery interface that every provider needs to implement, as anthropic is not openai client retrocompatible.
This sets the foundation to a more granular, per provider implementation.
The Anthropic implementation streams the output the same way the openAI client does, with the same span collection, for a s...
I was having trouble loading the type declaration file in my project. I noticed that the "types" path in the package.json didn't match the actual location of the declaration file. I tried updating it with a yarn patch operation in my project and the issue was gone!
When there's no dagger.json found we are loading the full source root directory, which defaults to . if not specified. If the dir has a lot of files this makes hitting error cases slow and, worse, makes fallback behavior of the shell to just load core slow.
There's some weird corner cases involved here, starting by seeing what integ tests fail when we don't do this and going from there. Likely solution is to defer context loading for these cases until actually needed (or never if clients...
Previously we tried removing this, but then it switched to goreleaser's default template:
{{ incpatch .Version }}-{{ .ShortCommit }}-nightly
What we really want is the tag, sans "v" - turns out there's a trimprefix template function for exactly that.
All other links on this page involving an article had the article listed as normal text, so opted to follow suit.
The Version correctly shouldn't have a v (according to goreleaser docs).
However, the v is present in the name template for the archive - so we need to make sure it's there.
Bumps the sdk-elixir group with 1 update in the /sdk/elixir directory: ex_doc.
Updates ex_doc from 0.36.1 to 0.37.2
Changelog
Sourced from ex_doc's changelog.
v0.37.2 (2025-02-19)
Bug fixes
Fix code highlighting for languages with non-alphanumeric characters
v0.37.1 (2025-02-10)
Enhancements
Support umbrella projects via the CLI
Bug fixes
Make sure docs are rendered inside iframes
v0.37.0 (2025-02-05)
Thanks to @โliamcmitchell and @...
Bumps the sdk-python-docker group with 1 update in the /modules/ruff/build directory: astral-sh/ruff.
Bumps the sdk-python-docker group with 1 update in the /sdk/python/runtime directory: astral-sh/uv.
Updates astral-sh/ruff from 0.9.5 to 0.9.7
Release notes
Sourced from astral-sh/ruff's releases.
0.9.7
Release Notes
Preview features
Consider new methods as special function type for enforcing class method or sta...
Bumps the engine group with 6 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/containerd/platforms | 1.0.0-rc.0 |
1.0.0-rc.1 |
| github.com/dagger/testctx/oteltest | 0.0.1 |
0.0.2 |
| github.com/docker/cli | 27.5.1+incompatible |
28.0.0+incompatible |
| github.com/docker/docker | `27.5.1+incompati... |
Bumps the sdk-typescript group with 13 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.5 |
1.12.6 |
| @opentelemetry/exporter-trace-otlp-http | 0.57.1 |
0.57.2 |
| @opentelemetry/sdk-node | 0.57.1 |
0.57.2 |
| [@opentelemetry/semantic-conventions](https://github.com/open-teleme... |
Nope, Tag is not set in this context helpfully, so instead just use v + Version here.
The PHP SDK could use integration tests. With modules created, purely for testing, to assert PHP modules work when called through dagger.
For reference: #php message
We should explicitly avoid trying to even parse future-versioned dagger.jsons. This avoids us from getting completely useless and unreadable errors when running an old dagger version against a new config file.
Note - this does remove one tiny piece of functionality, which we probably should never had in the first place. You now can't downgrade a dagger.json engineVersion from a version that the engine doesn't know about. This was always a bit dodgy in the first place, since we coul...
Move part of the SDK loading logic inside core and decouple the requirement for an SDK to implement all methods.
Now an SDK can implement either ModuleRuntime, Codegen or both.
Todo
- [ ] Add unit tests
Bumps the engine group with 7 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/containerd/platforms | 1.0.0-rc.0 |
1.0.0-rc.1 |
| github.com/dagger/testctx/oteltest | 0.0.1 |
0.0.2 |
| github.com/docker/cli | 27.5.1+incompatible |
28.0.0+incompatible |
| github.com/docker/docker | `27.5.1+incompati... |
The first follow-up (I expect of several) to #9555.
This is useful, so that the named engine is always selected as a leftover (which means we'll reuse it).
Without this, dev builds were working but could give some very odd errors in the case of a failure.
In case @Module, @Object or @Function annotation defines a description field, uses it instead of the JavaDoc comment.
[!NOTE]
to be merged after #9523
Only the last commit is relevant, the rest is #9523
Fix SDK Java test case, due to concurrent changes on the last two PRs merged.
The Helm app.kubernetes.io/version label is not sanitized. This can lead to incorrect template generation on some system updating the version.
For example with flux, we need to use an OCI registry as the source of the helm chart (because HEAD requests on registry.dagger.io/dagger-helm/dagger: fails with 403 unauth, preventing usage of HelmRepository resource). The default behavior of flux is to append the digest to...
There's some performance improvements around maps and memory allocation, interested to see if we get anything noticeable from them: https://go.dev/doc/go1.24
The fallback behavior of these commands when failing to load a module meant that even if a dagger.json was found but completely invalid, we silently went ahead and skipped the module load. The intention was to only fallback when no module was found though.
Those commands now error out as expected in that case.
As a first step for upgrading dagql caching, I want to move it from being per-session to engine-wide, while keeping it all in memory (for now).
This is a pre-req for just about everything else and requires solving a fair bit of problems up front without being too overwhelming in scope. e.g. This will require adding pruning to the cache (so it doesn't grow forever), which in turn requires we explicitly release cache refs when we're done with them.
Currently early, just consolidati...
What is the issue?
When doing this command :
dagger call build-env --source=.
I have a local registry up and running
and when i do a curl
Dagger version
dagger v0.16.1 (registry.dagger.io/engine:v0.16.1) linux/amd64
Steps to reproduce
dagger call build-env --source=.
Log output
What is the issue?
It looks like since we last updated the docs, a newer section was added for downloading/installed a development version
The correct command should be something like this:
Invoke-WebRequest -UseBasicParsing -Uri https://dl.dagger.io/dagger/install.ps1 | Invoke-Expression; Install-Dagger -DaggerCommit 6a2c1b9bf9aa4ba124d5f7fdb3517e1683c26259
Notice the Invoke-Expression' and Install-Daggerbefore the-DaggerCommit`
We expect better performance
When a Java module is initialized with no subdirectory (for instance dagger init --sdk=java my-module) some temporary files will be copied to the user directory because they are under the ModSourceDirPath (/src).
Those files are a temporary copy of the sdk/java. From there the different files will be generated, built, packaged, but we don't want them to be exported to the user.
This change simply move the temporary copy of sdk/java out of /src, this ensures those files will be...
Anthropic's API sometimes returns an empty content whilst not accepting it:
anthropic.BadRequestError: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'messages: text content blocks must be non-empty'}}
This workaround overwrites the empty content to space character. As soon as this issue is resolved, we can remove this hack: https://github.com/anthropics/anthropic-sdk-python/issues/461#issuecomment-2141882744.
Bumps the sdk-java group in /sdk/java with 1 update: org.junit:junit-bom.
Updates org.junit:junit-bom from 5.11.4 to 5.12.0
Release notes
Sourced from org.junit:junit-bom's releases.
JUnit 5.12.0 = Platform 1.12.0 + Jupiter 5.12.0 + Vintage 5.12.0
See Release Notes.
New Contributors
@โchris-carneiro made their first contribution in junit-team/junit5#3938
@โamaembo made their first contribution in junit-team/junit5#4024
@โvdmitrienko made their fir...
Bumps the docs group in /docs with 1 update: typedoc.
Updates typedoc from 0.27.7 to 0.27.8
Release notes
Sourced from typedoc's releases.
v0.27.8
Features
The visibilityFilter option now supports individual signatures, #2846.
The favicon option may now be given a link starting with https?:// instead of a path, #2851.
TypeDoc now supports specifying # as the link in externalSymbolLinkMappings to indicate the type should not be linked to, #2853.
...
Bumps the engine group with 8 updates in the / directory:
| Package | From | To |
|---|---|---|
| github.com/containerd/platforms | 1.0.0-rc.0 |
1.0.0-rc.1 |
| github.com/dagger/testctx/oteltest | 0.0.1 |
0.0.2 |
| github.com/docker/cli | 27.5.1+incompatible |
28.0.0+incompatible |
| github.com/docker/docker | `27.5.1+incompati... |
Bumps the sdk-typescript group with 13 updates in the /sdk/typescript directory:
| Package | From | To |
|---|---|---|
| @grpc/grpc-js | 1.12.5 |
1.12.6 |
| @opentelemetry/exporter-trace-otlp-http | 0.57.1 |
0.57.2 |
| @opentelemetry/sdk-node | 0.57.1 |
0.57.2 |
| [@opentelemetry/semantic-conventions](https://github.com/open-teleme... |
This reverts https://github.com/dagger/dagger/pull/9625 - looks like the PHP tests have started failing after it, not sure why.
cc @carnage @charjr
Example failure: https://v3.dagger.cloud/dagger/traces/1e0e5e64a1c90d597a534d6e8a6faf82?span=1f0ea2d68e44a4e2&logs
The tests that are failing:
These only started failing on main because these tests fetch the ...
Align .dagger/sdk_java with sdk/java.
Fix disable SVE on arm64 machines so we can use java 23 everywhere (align maven and jre images).
Update maven and jre images, smaller, alpine based, less vulnerabilities.
Looks like a recent refactor moved this - it should be for local sources, as well as dir sources.
Re-applied from #9530.
[!WARNING]
This absolutely needs a test - sloppy work from me, since I didn't do that originally - would have avoided this lol.
There's a problem upstream where a canceled context during batchSpanProcessor.ForceFlush leaks a goroutine. I saw this actually happen while testing stuff and it's extra bad because it leaks quite a substantial amount of memory that's indirectly referenced in our various span processors.
For now, this just mitigates it. I have an upstream fix that we will hopefully pick up someday after it's released and we've upgraded.
c...
Using positional args in shell is great!
However:
- It is harder to demo because people don't know what the positional args are for
- For the same reason, Dagger executions in scripts (like in a CI yaml) will prefer to use
dagger call - This makes it less clear when we show "see the same thing we ran locally runs in CI" if that then has to be translated from shell to call
I'm proposing the option to use flags for required args in shell to avoid the split between call vs shell. This will m...
This commit attempts to improve discoverability of documentation for default paths and filters for users of directory/file arguments, by cross-linking the relevant pages. It is a further iteration on the proposal in #9534 based on #php message
The VS Code java plugin is missing some features for years: the ability to code complete based on the target/generated-sources files. This allows to explicitly instruct maven/vs code by adding the generated source directories as source directories so that code completion can happen.
Also added some comments to the pom.xml file to help understand which are the critical parts of the file that shouldn't be touched by the user.
Adds the java examples to the SDKs page. I have left out the custom applications bit because I want to get some feedback before adding that section, or if we even decide to add it.
Adds a test which takes the local ./sdk/php to test if the current changes work.
This is to help avoid issues like this.
[!WARNING]
Needs #9596
Instead of convert input arguments from FunctionCallArgValue to atom.
Convert argument name in argument definition to string instead.
This changeset starts adding PHP integration tests to core/integration start by port a default value tests from Java test suite. It has a module in core/integration/testdata/modules/php and in TestPHP, calling a module to make sure the functionality works as expected.
What is the issue?
When calling an external module (callee), and that external module references files that are local to that module, the engine throws an error.
Dagger version
dagger v0.15.4 upwards
Steps to reproduce
- Create moduleA that pulls in a local file like
2.// +defaultPath=./myfile - Push moduleA to repoA
- Create moduleB
- Install moduleA into moduleB (repo reference)
- Use moduleA function in moduleB
dagger call -m moduleA function
Log out...
part of Java SDK work, but doesn't need to wait
- Add (mostly AI generated) transformations to handle different types of metrics data (cc @cwlbraa)
- More gracefully handle log records with missing data (resource / trace ID)
Problem
Coming from: https://discord.com/channels/707636530424053791/1342430286331379712
Given the following pipeline:
func main() {
ctx := context.Background()
d := dag.Host().Directory(".")
dc := d.Directory("contracts")
dag.Container().From("ubuntu").
WithMountedDirectory("/workdir", d).
WithMountedDirectory("/workdir/contracts", dc).
WithExec([]string{"apt", "update", "-y"}).Sync(ctx)
}
with the following file structure:
...
This is a mix of smallish cleanups/preparation for more changes:
Impure is gone now and replaced with:
CachePerCall- a custom cache key impl that lets the API always run when called but be cached after the result of that call is passed around (i.e. for snapshots of mutating state)DoNotCache- a setting that exists purely on the Field now rather than being tied into IDs. We still want to straight-up skip caching values for various reasons (correctness and memory usage), but ther...
this is the output of dagger --help :
A tool to run CI/CD pipelines in containers, anywhere
DAGGER CLOUD COMMANDS
login Log in to Dagger Cloud
logout Log out from Dagger Cloud
DAGGER MODULE COMMANDS
call Call one or more functions, interconnected into a pipeline
config Get or set module configuration
core Call a core function
develop Prepare a local module for development
functions List available functions
init ...
We build the binaries outside of goreleaser now, so this hook isn't required - additionally it makes the build fail in cases when the goreleaser version is a little bit old.
While I'm here:
- Update goreleaser
- And fix a little bit of the tag detection logic that was making it annoying to test the changes with
This should solve the problem faced during this revert
What is the issue?
If you try to clone a Git repository using the cookbook example over SSH it will fail with the following error.
~/dagger # dagger call clone --repository=git@gitea:admin/test.git --locator=BRANCH --ref=main
โ connect 0.1s
โ load module 1.0s
โ parsing command line arguments 0.0s
โ daggerGitCloneOverSshBroken: DaggerGitCloneOverSshBroken! 0.0s
โ .clone(lo...
Update Dagger intro to match readme as of 2/26/25.
This pull request incorporate AI agents as an official use case of Dagger, alongside CI/CD pipelines.
- A new README that explains why Dagger is great for building AI agents
- A new
agentsdirectory with resources specific to building AI agents (merged fromgithub.com/dagger/agents) -> TODO
Note: this does not change the docs - that will have to be done separately, without too much delay to avoid discrepancies.