#github-feed

1 messages ยท Page 14 of 1

vivid lintelBOT
#

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-image to 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...
ornate vigilBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
#

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 ...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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...
ornate vigilBOT
#

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...

ornate vigilBOT
#

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.

vivid lintelBOT
#

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...

vivid lintelBOT
#

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 ...

ornate vigilBOT
#

What

Replacing net/http with hashicorp/go-retryablehttp or something like it.

"The retryablehttp package 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?

vivid lintelBOT
#

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...
vivid lintelBOT
#

Problem

  1. The shell and CLI behave differently when it comes to stdout handling with TTY attached.
  2. 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...
vivid lintelBOT
#

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!
}
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

(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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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/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 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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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 ...
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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 `. ...

vivid lintelBOT
#

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...

vivid lintelBOT
#
  • renamed Engine to QueryExecutor due to clash with latest API. This aligns both QueryBuilder and QueryExecutor to 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...

vivid lintelBOT
#

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...
vivid lintelBOT
#

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 ...

vivid lintelBOT
#

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")
     ...
vivid lintelBOT
#

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_exec on 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"]), then ps aux does not display the socat p...
vivid lintelBOT
#

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 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...

vivid lintelBOT
ornate vigilBOT
#

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
``...
vivid lintelBOT
#

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....

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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...
vivid lintelBOT
#

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...
vivid lintelBOT
#

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

vivid lintelBOT
#

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...

void flame
#

Hola

vivid lintelBOT
#

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)
  • [ ] Ergonomic SDK APIs, without too much effort
    • So Go and Python SDKs were easy enough - moving on to TypeScript next
    • Th...
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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/.deps args - these...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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 {
       ...
vivid lintelBOT
ornate vigilBOT
#
ezh

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....
vivid lintelBOT
#

We seem to fairly consistently hit this php test flake.

Examples:

.E.............................................................  63 / 227 ( 27%)
..................
vivid lintelBOT
#

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)
...
vivid lintelBOT
#

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...

vivid lintelBOT
ornate vigilBOT
#

: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...
vivid lintelBOT
#

๐Ÿ’ก 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 ...

ornate vigilBOT
#
ezh

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...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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"}). // ...
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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.

https://github.com/dagger/dagger/blob/3cb2e55d898f3cae4673188c46107b76090db62f/cmd/codegen/generator/go/generator.go#L216

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   ...
vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
#

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...

vivid lintelBOT
#

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.

###...

vivid lintelBOT
vivid lintelBOT
#

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

vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
ornate vigilBOT
#
ezh

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...

ornate vigilBOT
#

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?

ornate vigilBOT
vivid lintelBOT
#

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 ...
vivid lintelBOT
#

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 dev module.

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 ...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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_KIND to client binding TypeDef
  • [ ] Add float support for marshal/unmarshal
  • [ ] Add float support on CLI
  • [ ] Add integrations tests
  • [ ] Add Go support
  • [ ] Add Typescript support
  • [ ] Add ...
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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:...
vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

ornate vigilBOT
#

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...

vivid lintelBOT
#

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=...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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 {
...
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

ornate vigilBOT
ornate vigilBOT
#

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

ornate vigilBOT
#

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...
ornate vigilBOT
vivid lintelBOT
#

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 ...
vivid lintelBOT
#

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...

vivid lintelBOT
#

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).

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

The previous version was able to catch things like:

  • 1m2.345s
  • 12.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...

vivid lintelBOT
vivid lintelBOT
#

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.

vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
#

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 ...
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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

vivid lintelBOT
vivid lintelBOT
#

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

Image

Dagger version

v0.15.3

Steps to reproduce

I can reproduce similar issue with when initializing ne...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

[!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 defaultPath and ignore pragmas
  • [ ] creates a dev container to help contributing without local toolchain
  • [ ] ...
vivid lintelBOT
vivid lintelBOT
#

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 ...

vivid lintelBOT
#

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 ...

vivid lintelBOT
vivid lintelBOT
#

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:

  1. Calling directory.WithoutDirectory()
    • Only supports filtering out a single directory, which must be known (can't wildcard)
  2. Calling directory.WithoutFile() + `directory.WithoutF...
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
#

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 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...

vivid lintelBOT
#

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.

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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:
...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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.

#...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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:

  1. Promote the escape hatch to a fully supported feature. This means replacing `_EXPERIMENTAL_DAGGER_RU...
vivid lintelBOT
#

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 withEnumMember API for enum members
  • [ ] Kick off migration from withEnumValue to withEnumMember in all SDKs
    • [x] Go
    • [ ] Python
    • [ ] Typescript
  • [ ] Backwards compat (this is gonna be bit tricky)
  • [ ] Fix inevitably broken tests
  • [ ] Clean up
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

[!NOTE]
To be merged after #9520


Allow to define a constructor on classes for an module object.

  • a default, empty, constructor calling super is 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 {
  /...
vivid lintelBOT
#

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 {
    ...
vivid lintelBOT
vivid lintelBOT
#

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 ...

vivid lintelBOT
vivid lintelBOT
#

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.

vivid lintelBOT
#

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 A client session, and call the target function ContainerEcho, which calls B's ...
vivid lintelBOT
#

This PR enables calling module dependencies from a regular client library. The setup is quite simple:

  1. Initialize a project in your favorite language
  2. Initialize a dagger module dagger init
  3. Install the dagger library
  4. Install any dependencies
  5. Run client generator dagger client add --generator=
  6. 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:
   ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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 ...
vivid lintelBOT
#

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

vivid lintelBOT
#

๐Ÿšง 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...
vivid lintelBOT
#

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 (#...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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.

vivid lintelBOT
#

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...

vivid lintelBOT
#

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:

  1. --debug would be DAGGER_DEBUG=true
  2. --progress would be DAGGER_PROGRESS=plain
  3. --silent would be DAGGER_SILENT=true
  4. etc ...

Related Discord: https://discord.com/chann...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

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...

vivid lintelBOT
#

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...
ornate vigilBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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 map

This is something that isn't happening with the Dagger CLI

dagger call do...
vivid lintelBOT
#

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...
vivid lintelBOT
#

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 -...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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:

  • [...
vivid lintelBOT
vivid lintelBOT
#

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 ...

vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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) {
 ...
vivid lintelBOT
vivid lintelBOT
#

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", ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#
  • 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'...
vivid lintelBOT
#

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...

vivid lintelBOT
#

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

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

[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/install

danger 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...

vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

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.

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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 ...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
#

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`

vivid lintelBOT
#

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...

vivid lintelBOT
#

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.

vivid lintelBOT
#

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...

vivid lintelBOT
#

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.

...

vivid lintelBOT
#
vivid lintelBOT
vivid lintelBOT
#

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...

vivid lintelBOT
#

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...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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.

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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

  1. Create moduleA that pulls in a local file like
    2. // +defaultPath=./myfile
  2. Push moduleA to repoA
  3. Create moduleB
  4. Install moduleA into moduleB (repo reference)
  5. Use moduleA function in moduleB
  6. dagger call -m moduleA function

Log out...

vivid lintelBOT
#

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:

...
vivid lintelBOT
#

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...
vivid lintelBOT
#

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        ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

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...
vivid lintelBOT
vivid lintelBOT
#

This pull request incorporate AI agents as an official use case of Dagger, alongside CI/CD pipelines.

  1. A new README that explains why Dagger is great for building AI agents
  2. A new agents directory with resources specific to building AI agents (merged from github.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.

vivid lintelBOT