#github-feed

1 messages · Page 26 of 1

ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Dagger paniced again and again when executing my plan.

Log output

7:03PM INF actions.up.getIngressEndPoint.get._exec | computing
7:03PM DBG actions.up.getIngressEndPoint.get._exec | dependency detected dependency=actions.up.getIngressEndPoint._kubectl.dep._dag."0"._op
7:03PM DBG actions.up.getIngressEndPoint.get._exec | dependency detected dependency=actions.up.getIngressEndPoint._kubectl.run._exec
7:03PM DBG actions.up.getIngressEndPoint.get._exec | dep...

ornate vigilBOT
#

Hi @helderco, here's the code:

package symfony_demo

import (
	"dagger.io/dagger"
	"dagger.io/dagger/core"
	"universe.dagger.io/docker"
)

dagger.#Plan & {
	_vendorMount: "/srv/app/vendor": {
		dest: "/srv/app/vendor",
		type: "cache",
		contents: core.#CacheDir & {
			id: "vendor-cache"
		}
	}
	_phpunitMount: "/srv/app/bin/.phpunit": {
		dest: "/srv/app/bin/.phpunit",
		type: "cache",
		contents: core.#CacheDir & {
			id: "phpunit-cache"
		}
	}

	client: {...
#

How's this (not tested)?

package symfony_demo

import (
	"dagger.io/dagger"
	"universe.dagger.io/docker"
)

dagger.#Plan & {
	_vendorMount: vendor: {
		dest: "/srv/app/vendor",
		type: "cache",
		contents: id: "vendor-cache"
	}
	
	_phpunitMount: phpunit: {
		dest: "/srv/app/bin/.phpunit",
		type: "cache",
		contents: id: "phpunit-cache"
	}

	client: {
		filesystem: {
			"./": read: {
				contents: dagger.#FS,
				exclude: [
					".github",
					".editorcon...
#

I like the new syntax, here's the updated version:

package symfony_demo

import (
	"dagger.io/dagger"
	"universe.dagger.io/docker"
)

dagger.#Plan & {
	_vendorMount: "/srv/app/vendor": {
		dest: "/srv/app/vendor",
		type: "cache",
		contents: id: "vendor-cache"
	}
	_phpunitMount: "/srv/app/bin/.phpunit": {
		dest: "/srv/app/bin/.phpunit",
		type: "cache",
		contents: id: "phpunit-cache"
	}

	client: {
		filesystem: {
			"./": read: {
				contents: dagger.#FS,...
#

Oh, that's nice, can we see this as a boilerplate for following steps? Maybe like a contract for each call?

Here's the "prettier" structure:

package symfony_demo

import (
	"dagger.io/dagger"
	"universe.dagger.io/docker"
)

dagger.#Plan & {
	_vendorMount: "/srv/app/vendor": {
		dest: "/srv/app/vendor",
		type: "cache",
		contents: id: "vendor-cache"
	}
	_phpunitMount: "/srv/app/bin/.phpunit": {
		dest: "/srv/app/bin/.phpunit",
		type: "cache",
		contents: id: "ph...
ornate vigilBOT
#

Yes, I know, I mean, now I understand the goal of the directive, that was the question 😅

BTW, a huge thanks to both of you for the support, I can now explore Dragger with a better starting point, I have other questions about the Docker building phase (especially on how to copy executable from external image) but I'll see if I can solve them before asking for help in the discussions 🙂

Again, a huge thank you for the help 😊

ornate vigilBOT
vivid lintelBOT
#

What is the issue?

When I use dagger.#Writefile and mount it with mount, it says mounts is not set, and does not say that the dagger.#Writefile package does not exist. Finally I realized with the help of @grouville that some packages were migrated from dagger to core.

I think there should be a more friendly alert, such as a direct message that the package does not exist, or a way to automatically link to the core package.

Finally, I think this kind of migration should be a 0.2 to 0...

vivid lintelBOT
#

What are you trying to do?

Get up and running as fast as possible with minimal friction

Expect

git clone https://github.com/dagger/dagger
make mdlint
....
file lint success!

Actual

git clone https://github.com/dagger/dagger
make mdlint
bash: line 1: markdownlint: command not found
make: *** [Makefile:87: mdlint] Error 127

Why is this important to you?

Doing things automatically for a developer lets them get to their innerLoop faster.
Optimise ...

vivid lintelBOT
#

What are you trying to do?

Dogfooding notes/wishlist from #1984

/cc @shykes @helderco @samalba

  • I wish I could do dagger do build lint (a la Makefile)
  • I wish console outputs were available. It would have been a tremendous help to debug. Also very helpful to inform what just happened (e.g. dagger do build should print the revision we just built). I hacked around by writing a file and then removed that line before committing
  • I wish the platform defaulted to buildkitd's ...
#

What is the issue?

When attempting to use an image containing an entry point:

	_image: docker.#Pull & {
		source: "tmknom/markdownlint:0.31.1"
	}

	container: docker.#Run & {
		input: _image.output
		mounts: "source": {
			dest:     "/src"
			contents: source
		}
		workdir: "/src"
		command: {
			args: ["./docs"]
		}
	}

I get actions.lint.markdown.container._exec.args.1: cannot convert non-concrete value string

Removing command works (I get the help m...

#

Bumps amplitude-js from 8.17.0 to 8.18.0.

Release notes
Sourced from amplitude-js's releases.

v8.18.0
8.18.0 (2022-03-31)
Features

Add versionId to tracking plan data (#518) (26dd38b)

Changelog
Sourced from amplitude-js's changelog.

8.18.0 (2022-03-31)
Features

Add versionId to tracking plan data (#518) (26dd38b)

Commits

eca4003 chore(release): 8.18.0 [skip ci]
26dd38b feat: Add versionId to tracking plan data (#518)
36adf79 d...

#

What are you trying to do?

I think it's performance critical to do this ASAP. I know we have unfinished discussions regarding the DX for multi-platform and how to override one.

I propose as a stopgap to add a --platform flag to dagger do for overrides -- no CUE syntax.

Background:

When the requested architecture (e.g. linux/amd64 -- which is our default) is different from buildkit's architecture (e.g. linux/aarch64 -- which is the actual architecture of my MacBook), buil...

vivid lintelBOT
#

The following definitions should be moved from dagger.io/dagger to dagger.io/dagger/core:

  • #ImageConfig (tightly coupled to our image-related core actions)
  • #HealthCheck (same)
  • #Ref (same)
  • #Scratch (tightly coupled to our fs-related core actions)

I just hit the issue while developing a plan. I used core.#Copy and automatically assumed core.#Scratch. This is made worse by #1635 because if a definition doesn't exist (in this case core.#Scratch) it's not clear at...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

BuildKit does not seem to be spawning

Log output

$ dagger do build -l debug
10:49PM DBG spawning buildkit job attrs=null localdirs={}
... forever ...

Steps to reproduce

Installed from GitHub.tar.gz

tried to run the examples from universe

Dagger version

0.2.4

OS version

Debian 10 on ChromeOS | amd64

vivid lintelBOT
#

What are you trying to do?

I try to get logs with no colors so it is easy to read dagger logs collected by some CI system.

Why is this important to you?

It is hard to read when ANSI color codes are displayed in a log when coloring is not available.

How are you currently working around this?

no workaround, getting json is not an option as it is totally not human readable

vivid lintelBOT
#

What is the issue?

I run this:

dagger do build --cache-from type=local,src=~/cc --cache-to type=local,mode=max,dest=~/cc

and in current directory new folder was create that was named ~.

dagger should expand ~ to current user home folder path.

Log output

nothing in logs

Steps to reproduce

dagger do build --cache-from type=local,src=~/cc --cache-to type=local,mode=max,dest=~/cc

Dagger version

0.2.4

OS version

ubuntu 21.10

vivid lintelBOT
ornate vigilBOT
#

@gerhard I created a simple dagger pipe for bitbucket pipelines just like dagger-for-github
But ended up with following error

{"level":"error","error":"exit status 125","output":"docker: Error response from daemon: authorization denied by plugin pipelines: --privileged=true is not allowed.\nSee 'docker run --help'.\n","time":"2022-04-03T07:20:49Z","time":"2022-04-03T07:20:49Z","caller":"/home/runner/work/dagger/dagger/util/buildkitd/buildk...
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

There's no binary that I could find on the latest release for 32-bit ARM or Raspberry Pi.

Why is this important to you?

I'm attempting to add dagger support to the arkade marketplace, many people use Raspberry Pis with the default 32-bit ARM OS provided.

How are you currently working around this?

Perhaps it could be built from source. Or is there a technical reason why this isn't supported?

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

I'm trying to push an image to our private registry, but docker.#Push is failing with x509: certificate signed by unknown authority.

I'm running dagger locally on macOS and can confirm that the our private CA cert is indeed present in the system keychain as described here. I am able to manually run docker push $private-registry/$image without issue.

Log output

[✗] action...

#

Overview

If there's a change that requires migrations from users, an easy thing we can do right now is to make them clear in the changelog. In Python, I'm used to read the release notes for packages before updating them.

The convention, according to https://www.conventionalcommits.org is to add a ! before the ::

  • chore!: Move packages to core
  • feat!: Rename field X

RFCs

  1. I thought about using break: instead, but decided to go with the convention above in c...
vivid lintelBOT
vivid lintelBOT
#

The current guide is a bit hidden and we need to rely on links. Users will find it more easily in the source code, which is where I'd search for it anyway.

We are currently using the dagger/.github repo to share the guidelines amongst the organization, but there's also an argument for moving the guide here and reference this one in other places instead. Just not sure about the automatic "Contributing" links that GitHub adds automatically in some places.

Signed-off-by: Helder Correia
...

ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

If contents is wrongly set to dagger.#FS instead of string when reading a file from the host filesystem, dagger do hangs indefinitely without any error message.

dagger.#Plan & {
	client: {
        filesystem: {
            "./app": read: contents: dagger.#FS
            "./manifest": read: contents: dagger.#FS
            "./kubeconfig/config": read: contents: dagger.#FS     //Should be a string here for example
        }

Log out...

vivid lintelBOT
vivid lintelBOT
frosty smelt
ornate vigilBOT
vivid lintelBOT
#

Bumps github.com/docker/buildx from 0.8.1 to 0.8.2.

Release notes
Sourced from github.com/docker/buildx's releases.

v0.8.2
Notable changes

Update Compose spec used by buildx bake to v1.2.1 to fix parsing ports definition #1033
Fix possible crash on handling progress streams from BuildKit v0.10 #1042
Fix parsing groups in buildx bake when already loaded by a parent group #1021

Commits

6224def Merge pull request #1042 from tonistiigi/update-buildkit-2...

#

Bumps sass from 1.49.10 to 1.49.11.

Release notes
Sourced from sass's releases.

Dart Sass 1.49.11
To install Sass 1.49.11, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.
Changes

Add support for 64-bit ARM releases on Linux.

Embedded Sass

The embedded compiler now correctly sets the id field for all OutboundMessages.

See the full changelog for changes in earlier releases.

Ch...

#

Bumps concurrently from 7.0.0 to 7.1.0.

Release notes
Sourced from concurrently's releases.

v7.1.0

Excluding pattern support added, e.g. concurrently npm:lint:*(!fix) (#305, #306)
Fixed programmatic API docs to resemble v7.0.0 changes (#303)

New Contributors

@​naxoc made their first contribution in open-cli-tools/concurrently#303
@​NullVoxPopuli made their first contribution in open-cli-tools/concurrently#306

Commits

1762f88 7.1.0
49...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

As a Dagger user, I want to be able to use private keys from the SSH agent to clone private dependencies in order to avoid configuring a username and password or explicit private key

Why is this important to you?

This is important in order to publish and maintain privately accessible Dagger modules

How are you currently working around this?

Manually cloning repository contents

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Type a simple command that gives me basic information about my Dagger project

  • Its location on the filesystem
  • Location and status of available plans (do they load ok?)

Why is this important to you?

No response

How are you currently working around this?

No response

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

Hello developers! Now that we have launched, we are turning our attention to incremental improvement. There are many bugs to fix, features to implement, and documentation to write. We want to prioritize this work based on your feedback.

Based on your experience using Dagger so far, what should we work on next? How can we make Dagger the best possible tool, and why?

  • Please reply below with your most pressing requests
  • If you have multiple requests, please split them into separate a...
#

Cryptic error messages

The biggest pain I have experienced was lack of clarity in error messages. In particular:

  • When I reference the wrong definition in a package (for example git.#Clone instead of git.#Pull), it doesn't cause a CUE error. Instead, my action runs and I get a very confusing "FS is not set" error.

  • When I run a container, and the command in that container fails, I don't get any details, just "execution of command failed". I have to re-run with `--log-format...

#

Console Outputs

I'd like to be able to define console outputs in a #Plan: https://github.com/dagger/dagger/issues/1351

This is very helpful for developing/debugging a plan, and as a plan user, to get some feedback on what happened (e.g. URL).

Furthermore, I'd like to be able to chose the output format (e.g. console, json, ...). This would allow to programmatically extract information (for instance, bats tests could extract a field, e.g.)

Also, once outputs can be extracted p...

ornate vigilBOT
#

Console UI

The console experience (e.g. status of dagger do) is not great. Oftentimes, we have to resort to --log-format plain --log-level debug because the default suppresses important information. In no particular order:

  • TTY rendering is buggy (e.g. flashing/broken lines)
  • Some errors are suppressed when run fails (e.g. container logs)
  • It's not clear what's going on, the list of actions is confusing. Currently the CUE path of all "actions" is displayed. I think there are...
#

Persistent caching on CI

There's 2 caching systems in buildkit:

  • Layer caching: Avoid running the same operation if it was already completed with the same inputs
  • Cache directories (e.g. core.#CacheDir): Mount a directory with the same contents (e.g. for node_modules etc)

Currently, both are tied to the local machine. Layer caching can be used on a CI environment using --cache-to (supports registry, GitHub caching, etc). However, core.#CacheDir doesn't work on CIs which...

ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
#

Dagger TDD/BDD as first class concept


We can create a Dagger definition and a plan to test that new definition using bash/bats, like dagger team does in universe package.
I would like Dagger introduce tdd/bdd using cue syntax

dagger.#Spec & { // Like Dagger plan
  "removeSNames": dagger.#Describe & {
    "should remove all S names": dagger.#It & {
       // verify definition
     }
  
    "should not remove other names": dagger.#It & {
        // verify d...
vivid lintelBOT
vivid lintelBOT
#

This feels like it should work, but when it runs it fails and I can't work out how to get further debugging information.

9:53AM DBG actions.rawkode.apply._exec | #6 Exec ["kubectl", "apply", "--kubeconfig", "/kubeconfig", "-f", "/work"]
9:53AM DBG actions.rawkode.apply._exec | #6 sha256:c676aabdc1af55ae8852a03a5a7e25a92009e466a0ae932db97e4ce140e19827
9:53AM ERR actions.rawkode.apply._exec | failed: process "kubectl apply --kubeconfig /kubeconfig -f /work" did not complete successful...
ornate vigilBOT
ornate vigilBOT
#

RE: output formats, I've always been a fan of programs writing user-facing information to stderr and leave stdout for programmatic access. My solution to the logger vs output problem would then be that the TTY logs to stderr, not stdout. That sounds like a huge breaking change though so I'm not sure how much political will there is to make it.

Not a breaking change, the logger is already outputting to stderr.

The issue is that when you output to stdout for this feature, it's messy wit...

ornate vigilBOT
#

Declaratively Trust CA Certificates

  • As a developer, I'd love it if I could declaratively tell dagger/buildkit that I want to trust my organization's private CA cert, so that, for example, actions like docker.#Pull and docker.#Push work with our internal registry.
    • Currently, a buildkit instance must be created manually with the private CA cert(s) mounted into it.
      • E.g. `docker run --net=host -d --restart always -v $PWD/my-cert.pem:/etc/ssl/certs/my-cert.pem --name da...
ornate vigilBOT
ornate vigilBOT
#

Agreed. And cookbooks are usually of great help.
And not only complex ones, but simple examples help as well.

One of my favourite documents references is from Ansible. They layout each functionality, explain the options into an easy-to-read table and then wrap it up with several examples.
Here is the documentation for the copy modules for reference:
https://docs.ansible.com/ansible/2.4/copy_module.html

vivid lintelBOT
#

What are you trying to do?

Once a CUE action fails, we can't know which CUE node fail specifically.

For example, if I run the following CUE code:

up: bash.#Run & {
	script: contents: #"""
		some_problem_here
		"""#
}

I could tell the up command fail from the logs from dagger do up --log-format plain.

But dagger as the engine should know that up node failed, and can get the stdout/stderr from bash.#Run. It would be great if dagger can expose these thre...

vivid lintelBOT
#

What are you trying to do?

Expose my buildkit daemon container through TCP or SSH without expose my docker daemon.

Why is this important to you?

I want to start a buildkitd container for each user so they can use my machine to execute their dagger plan.
After they executing their dagger plan, I will delete that particular container.
At the same time, I can't share my docker daemon with them because I don't want them to start containers other than buildkitd on my machine.
By the ...

vivid lintelBOT
#

What is the issue?

@jpluscplusm reported that he had a log deduplication issue on his Dagger Plan, both locally and on GHA.

After checking it, It's the exact same behavior as #449, but no #Push operation is involved in the process 🤔 I personally didn't believe this was possible.

Making it an issue so that we don't lose track of that.

Log output

Downloading https://dl.dagger.io/dagger/releases/0.2.4/dagger_v0.2.4_linux_amd64.tar.gz
Extracting Dagger
/usr/bin/tar xz --...
ornate vigilBOT
ornate vigilBOT
ornate vigilBOT
#

Document better actions inputs / outputs

Sometimes I find myself jumping between a task definition [1] and it's corresponding source code [2] to understand what some actions are doing in regards to inputs and outputs. The API docs [3] also don't mention this information.

It'd be nice to have a page a la terraform registry [4] with more structured information about the actions and their corresponding inputs / output values
[1]: https://github.com/dagger/dagger/blob/v0.2.4/pkg/dagg...

vivid lintelBOT
#

buildkit caching is not additive, e.g., it can only import/export cache off a single dagger do.

In our own CI, it means that each PR is overwriting the cache with that PR's content. Which in turn means each PR is invaliding each other's cache. Example:

  • PR 1 has some go changes. Cache is built using that source code and exported
  • PR 2 has different go changes. Cache is re-built using that source code, overwriting PR 1 cache
  • PR 1 has an update. It will load cache from `PR...
ornate vigilBOT
vivid lintelBOT
#

Bumps amplitude-js from 8.18.0 to 8.18.1.

Release notes
Sourced from amplitude-js's releases.

v8.18.1
8.18.1 (2022-04-06)
Bug Fixes

update analytics-connector to 1.4.1 (#520) (956d53b)

Changelog
Sourced from amplitude-js's changelog.

8.18.1 (2022-04-06)
Bug Fixes

update analytics-connector to 1.4.1 (#520) (956d53b)

Commits

d6df263 chore(release): 8.18.1 [skip ci]
956d53b fix: update analytics-connector to 1.4.1 (#520)
See full...

ornate vigilBOT
#

Proxied for user @Lutin on Dagger Discord:

We already have a decent amount of infrastructure built on top of Buildkite pipelines.
Need for UI, task history, visualizations of DAG, etc. is pretty high up on the list when comparing different ways to do things. Yes we can use Dagger with Buildkite, but parsing out the DAG that it runs from log lines is a bit painful and a worse UX, and often parts of that DAG are running under different service accounts with different permissions in dif...

vivid lintelBOT
#

What are you trying to do?

We have the circumstance where a build could engage a large amount of expensive steps to all be engaged in order to assemble the pieces necessary to create a final build artifact. A number of these steps are large enough that even a well equipped machine might have a hard time coping with it.

My intent is to be able to schedule some/all actions as separate Pods scheduled on a K8s cluster. We could define their resource constraints so that K8s would be able t...

ornate vigilBOT
#

I have a semi-complete simple implementation for azure devops at https://github.com/joachim-isaksson/dagger-for-azure-devops

It's based on the existing github actions implementation. Sadly I don't have the time to finish for the next few days, so if someone is so inclined, feel free to take it over :)

The task runs, dagger downloads and installs, runs correctly and the task fails in cleanup (a recursive delete that won't)

#

Right. The part that is missing is calling get-login-password automatically in an action. Right now you have to call it yourself on the client machine.

Got it, so what would be the right level of composability here?

  • An aws.#ECRPull that automatically pulls the image and wraps the core.#Pull one?
  • An aws#ECRLogin action that returns the password as a dagger secret which the user can later use in a standard core.#Pull?

What's the criteria to have in mind when creating n...

vivid lintelBOT
#

feat: Adding project info command to find where project is located

Implement part of #2038. Only question is testing this change. I attempted to add basic test but nothing concrete. Any ideas to better test this are appreciated. Also I wouldn't mind adding a 'Test' section to the contributing page to let other users understand this better as well with it looking like a non-standard golang testing structure.

vivid lintelBOT
ornate vigilBOT
#

re: tty logger.

It's possible to stop it (tty.Stop()), so I guess we could finish the Do(), stop the tty logger, then Printf the console outputs

Once stopped the tty logger won't refresh the screen anymore.

Pseudo-code:

// Use tty logger for Do
tty.Start()
err = cl.Do(ctx, p.Context(), func(ctx context.Context, s *solver.Solver) error {
	return p.Do(ctx, target, s)
})
tty.Stop()

// Optional: Reset the context logger to be non-tty
lg = logger.New()  // re-create...
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

Bumps go.opentelemetry.io/otel/trace from 1.6.1 to 1.6.2.

Release notes
Sourced from go.opentelemetry.io/otel/trace's releases.

Release v1.6.2
1.6.2 - 2022-04-06
Changed

Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0.
This replaces the use of the now deprecated Instrumentat...

#

Bumps github.com/moby/buildkit from 0.10.0 to 0.10.1.

Commits

5bc9c7b Merge pull request #2790 from tonistiigi/k8s-examples-update-v0.10
58b5892 examples/kubernetes: replace deprecated seccomp annotations with securityContext
939c71d Merge pull request #2780 from tonistiigi/cherry-picks-v0.10.1
42f892f vendor: update containerd and continuity
6ee29df vendor: github.com/containerd/containerd v1.6.2
6221947 Dockerfile: update containerd to v1.6.2, v1.5.11
9...

#

Bumps go.opentelemetry.io/otel/exporters/jaeger from 1.6.1 to 1.6.2.

Release notes
Sourced from go.opentelemetry.io/otel/exporters/jaeger's releases.

Release v1.6.2
1.6.2 - 2022-04-06
Changed

Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0.
This replaces the use of the now d...

#

Bumps go.opentelemetry.io/otel/sdk from 1.6.1 to 1.6.2.

Release notes
Sourced from go.opentelemetry.io/otel/sdk's releases.

Release v1.6.2
1.6.2 - 2022-04-06
Changed

Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0.
This replaces the use of the now deprecated InstrumentationL...

#

Bumps sass from 1.49.11 to 1.50.0.

Release notes
Sourced from sass's releases.

Dart Sass 1.50.0
To install Sass 1.50.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.
Changes

@extend now treats :where() the same as :is().

Command Line Interface

Closing the standard input stream will now cause the --watch command to stop running.

Embedded Sass

Fix a bug where the JS embedded ...

vivid lintelBOT
#

Before this change, if BUILDKIT_HOST was set to an invalid value that
resulted in the connection of the grpc client to the server to fail,
then deadlock occured waiting for the eventsCh to be closed.

This happened because the call to the buildkit client's Build method
returned an error before the provided callback was executed, which is
where the eventsCh gets closed.

This change places the creation of eventsCh inside the Build callback,
which avoids the increment of the Wait...

ornate vigilBOT
#

Improve Package Management

Non exhaustive list of requirements, in random order:

  • Do not require to commit vendored packages in git (e.g. commit only dagger.mod and dagger.sum, just like go)
  • Treat dagger.io/dagger and universe.dagger.io as external packages
    • Fetch them from git rather than embedding in the binary
    • Figure out version management
  • Support "tidy"'ing, i.e. remove stuff in cue.mod/pkg that's not being used
  • Support replace directives like ...
vivid lintelBOT
#

What is the issue?

Error messages start with the word "FTL", for example:

5:15AM FTL failed to execute plan: task failed: actions.lint.markdown._exec: process "/home/nonroot/entrypoint.sh markdownlint ./docs README.md" did not complete successfully: exit code: 1

Several people have asked me "what does FTL mean"? The answer is "fatal error". But clearly that is not at all obvious.

Log output

Steps to reproduce

Run dagger do of an action that fails. Look at ...

ornate vigilBOT
#

Dogfooding notes/wishlist from #1984

/cc @shykes @helderco @samalba

  • I wish I could do dagger do build lint (a la Makefile)
  • I wish console outputs were available. It would have been a tremendous help to debug. Also very helpful to inform what just happened (e.g. dagger do build should print the revision we just built). I hacked around by writing a file and then removed that line before committing
  • I wish the platform defaulted to buildkitd's platform. The performance is hor...
#

I wish the platform defaulted to buildkitd's platform. The performance is horrible in any other setting. I know we had long discussions around the API for this, but it's so important my recommendation would be to default to buildkitd and provide a --platform flag (so we don't need to define the whole CUE DX before making this change)

Not aware of this. Want to know more.

Opened a separate issue #1996 with more details

#

Console outputs (or another hermetic-seal-breaking-but-not-really equivalent): very hard agree!

I'm trying to debug a universe/aws.cli run that's working locally but failing in GHA, and I'm almost out of ideas for how to surface the underlying AWS response error.

As a slight extra ask in the console output space: it'd be great to have a way to unconditionally print some output from a step, regardless of if the DAG failed at that step. My current strategy breaks (I think!) because the `c...

#
  • Converting this line from our Makefile resulted in 40 lines of CUE: go build -ldflags '-s -w -X go.dagger.io/dagger/version.Revision=$(git rev-parse --short HEAD). Mostly because of the point above

You could also use the local host:

client: commands: gitVersion: {
	name: "git"
	args: ["rev-parse", "--short", "HEAD"]
}

actions: {
	build: go.#Build & {
		ldflags: "-s -w -X go.dagger.io/dagger/version.Revision=\(client.commands.gitVersion.stdout)"
	}
}

But t...

ornate vigilBOT
#

This project seems promising, but regarding https://docs.dagger.io/1201/ci-environment and CI pipelines

With multiple stages and jobs, wouldn't you always have to execute each dagger action independently to be able to use parallelism and autoscaling of pipeline agents/workers? So in fact you are always tied to writing a pipeline file (for those platforms that support Pipelines as Code) and call dagger actions from that?

#

You will need to write a pipeline file specific to the CI environment in order to run dagger do <action> commands. Dagger uses BuildKit to run these actions. By default, BuildKit gets created as a container in the local Docker instance. If you try running this locally, you will see the dagger-buildkitd container running. All actions will be represented as a DAG, and many will be cached. Subsequent runs will be faster.

Now imagine that you have a cluster of BuildKit instances, perhaps r...

ornate vigilBOT
#

Currently the dagger Github Action can install dagger binary:

    - name: Install Dagger
      uses: dagger/dagger-action@v1
      with:
        install-only: true

But running dagger up in Action will fail for any buildkit operations. For example:

patchGrafana: {=

	#up: [
		op.#Load & {
			from: kubernetes.#Kubectl & {
				version: "v1.23.3"
			}
		},
		...
		op.#Exec & {
			always: true
			args: [
				"/bin/bash",
				"--noprofile",
				"--no...
#

Here is a working example.

Some things to consider:
You need to set your SOPS key as a Github secret, for the action to be able to decrypt your dagger.#Secret.

That's what I do in the below code: secrets.DAGGER_AGE_KEY. This key lies inside the ~/.config/dagger/keys.txt file.
You also need to pass an arg: which dagger command do you want to run ?

name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  deploy:
    runs-on...
#

Hi @grouville

Yes It works locally.

Here's the full code sample: https://github.com/hongchaodeng/ai-demo/blob/1ef4b706292b742c1b47471ca1a2d0b079b72bf0/plans/ai-demo/monitoring.cue#L10

That's what I do in the below code: secrets.DAGGER_AGE_KEY.

I saw it in the tutorials. But I can't really understand what it means. Instead I used plain dagger input xxx:
https://github.com/hongchaodeng/ai-demo/blob/264043e5136af6843c5ba5d0247f675301265add/.github/workflows/workflow.yml#L23

#

I added you as a collaborator on a simple private repro case, showing you in 2 branches how you can change your workflow to make it simpler.

However, my repro shows that what you do works. Your issue seems to be related to https://github.com/hongchaodeng/ai-demo/runs/5152739855?check_suite_focus=true#step:5:67.

What you can do as a next step is to change your workflow to run dagger up --log-format plain -l debug instead of dagger up in order to have more logs in the CI.

As I told...

ornate vigilBOT
#

When deploying A and B, if A succeeds then B fails the rollout is left as is. This can result in a broken deployment since we now have a new version of A with an old version of B.

Ideally, if a version N of a plan fails, dagger should be re-apply N-1 to bring back A and B to the same version.

/cc @samalba

#

Sometimes my configuration fetches a git or docker repository without specifying a digest, and I want to add the current digest to avoid unexpected changes in the future. But how do I find out the current digest? Dagger does not provide a command to do this. I have to search for specialized tooling and learn how to use it, just to get that ref.

Since git and docker refs and digests are important concepts in Dagger, it makes sense for the dagger command to make it easy to manage digests.

ornate vigilBOT
#

Having spent a significant amount of my last six weeks on https://github.com/dagger/dagger/issues/1327, I thought that it would help to share my learnings, current state and the steps that I see us taking next.

While this is the continuity that I imagine, now is a good time to share your perspectives and drive the improvements that you would like to see in https://docs.dagger.io as we open up Dagger to the world.

Learnings worth sharing

It served me well to have a clear user in mi...

#

Maybe we could have a common pitfalls page. Examples would be recommending disjunctions over if conditions and templates over for loops. We can leave in draft and add to it until it's mature enough to publish.

Also, sometimes I feel docs are too basic and need more examples (in general). Maybe a section for more in-depth or advanced concepts? React has a Main Concepts section and an Advanced Guides and I've found those helpful. Y...

ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

There is a lost of users who can't run hello world example or any other example in the docs because they forgot to tip dagger project update.

It is not explicitly explained in the doc and there is no tip in the CLI.

What would be awesome is that you have a small message after dagger project init to remember you to tip dagger project update to install dagger dependencies.

Example

$ dagger project init
Project initialised! To install ...
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

speaking this is not a bug strictly, maybe can change a kind/enhancement tag

Log output

no need

Steps to reproduce

In official example todoapp, run dapper do build, The following two runners will be called:

  • client.filesystem."./".read
  • actions.deploy.container.script._load

the first PreRun is excepted, but second in deploy stage, maybe can optimization by some logical judgments.

Dagger version

dagger devel (def93a29) linux/arm64

#...

vivid lintelBOT
vivid lintelBOT
#

Adds the ability to select a template which will create a new file
in the CWD with the template name. Templates present in the
"cmd/dagger/project/templates" directory are automatically embedded in the dagger
binary when building and then listed in the dagger project init help output.

Usage:

dagger project init -t 

One idea that we had while pairing on this is to eventually try
improving this UX by extending the dagger project command by adding
sub-commands like `dagger project tem...

vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
#

Bumps go.opentelemetry.io/otel/sdk from 1.6.2 to 1.6.3.

Release notes
Sourced from go.opentelemetry.io/otel/sdk's releases.

Release v1.6.3
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

Changelog
Sourced from go.opentelemetry.io/otel/sdk's changelog.

[1.6.3] - 2022-04-07
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator typ...

#

Bumps go.opentelemetry.io/otel from 1.6.2 to 1.6.3.

Release notes
Sourced from go.opentelemetry.io/otel's releases.

Release v1.6.3
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

Changelog
Sourced from go.opentelemetry.io/otel's changelog.

[1.6.3] - 2022-04-07
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set...

#

Bumps go.opentelemetry.io/otel/exporters/jaeger from 1.6.2 to 1.6.3.

Release notes
Sourced from go.opentelemetry.io/otel/exporters/jaeger's releases.

Release v1.6.3
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

Changelog
Sourced from go.opentelemetry.io/otel/exporters/jaeger's changelog.

[1.6.3] - 2022-04-07
Fixed

Allow non-comparable global MeterProvider, Tr...

#

Bumps go.opentelemetry.io/otel/trace from 1.6.2 to 1.6.3.

Release notes
Sourced from go.opentelemetry.io/otel/trace's releases.

Release v1.6.3
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#2772, #2773)

Changelog
Sourced from go.opentelemetry.io/otel/trace's changelog.

[1.6.3] - 2022-04-07
Fixed

Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagat...

ornate vigilBOT
#

Cache invalidation explain

It's very common for an action (or a set of actions) to be re-executed given that "something" in the build cache changed. While speaking with @gerhard today across several topics, we came up with the idea that it'd be great if Dagger could output some optional detailed information about why the cache is being invalidated. I think this could potentially help to prevent mistakes and/or find issues/improvements in already executed pipelines.

As side nice-to...

ornate vigilBOT
#

Yeah "why am I getting a cache miss here" is a very frequently asked question in the Buildkit slack channel, something like this would be great for Dagger and Buildkit in general.

The decisions on whether to re-use cache or not are buried inside Buildkit's solver, so we'd probably want to integrate with it somehow. One possibility might be to re-use the progress system for this. The solver already publishes progress events like "this vertex is starting", it could also publish events when a...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

In the docs we have this example of how to get the client platform's os and arch:
https://docs.dagger.io/1203/client#platform

package main

import (
    "dagger.io/dagger"
    "universe.dagger.io/go"
)

dagger.#Plan & {
    client: _

    actions: build: go.#Build & {
        os:   client.platform.os
        arch: client.platform.arch
        // ...
    }
}

But if you flesh this out to make it runnable (package name, imports) and run th...

ornate vigilBOT
vivid lintelBOT
#

I run dagger in my virtual machine ubuntu, when i want update dagger cue pkg, so i run dagger project update in my terminal, but not work

After some checking, I found that there was something wrong with the directory that mounts to the virtual machine, but the error was hidden

dagger project update                                                                            │>
6:43PM FTL system | vendor pkg failed: open /**/code/github.com/dagger-demos/cue.mod/pkg/dagger.lock:...
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

Retry

From my 2 days of observation with build kit...I found that dagger action failed sometime because of my miss configuration of buildkit, Other case can be registry is down. There are multiple case where dagger action can fail.

If you see any CI/CD Provider, This problem exist before a long time. Pipeline failed sometime because of package manager has issue or something else but no provider provide any solution for that.

But dagger is more like a DAG and if a DAG has retry o...

vivid lintelBOT
#

What are you trying to do?

Add CUE syntax highlighting support to highlight.js which is used by Discord in code blocks.

Why is this important to you?

Highlighted code is more readable and pleasant to look at for many users.

How are you currently working around this?

Today, I often hijack the typescript to render CUE code with some syntax highlighting, but there should be proper support for CUE.

e.g.

```typescript
      params: {
            imageBuild: {
     ...
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

I've been trying to figure out what's going on here..
I'm on Windows 10, and can't seem to get dagger to work

dagger do build
4:24AM FTL failed to load plan: import failed: cannot find package "dagger.io/dagger":
    C:\Users\agw\git\dagger-src\ci.cue:4:2
: running `dagger project update` may resolve this

I've run through a few things already, project initing project updateing
Destroying and recreating the docker host; I'm using Rancher Desktop v1....

vivid lintelBOT
#

What is the issue?

docker.#Run has a concrete definition that the command is always python3

I will add a one-line PR to fix this.

Log output

After changing pkg/universe.dagger.io/python/test/test.cue to add `image: "python3.8":

3:37PM FTL system | failed to load plan: 0: conflicting values "python3.8" and "python3":
    /d/workspace/github.com/nottheeconomist/dagger/pkg/universe.dagger.io/docker/run.cue:92:11
    /d/workspace/github.com/nottheeconomist/dagger/pkg/u...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

Hi everyone, I've been looking at Dagger over the weekend and I'm excited by its possibilities! I think I've started to get to grips with how to build, run tests and deploy with it.

One thing issue I'm running into is knowing how to do one other part of my CI flow. Using pre-built tools to check the code, for example how to use this tool? https://github.com/zricethezav/gitleaks. On Github I would use the prebuilt action for this and on Gitlab I would simply run a step in the container and...

ornate vigilBOT
#

Yes, you can create an action that does this. If you're willing to contribute docs on that, please do! We appreciate contributions 🙂

Just a few pointers. There's two ways to go about it:

  1. Run the whole plan once (dagger do deploy), but you need to make sure that the gitleaks action is a dependency of something in order to run before it. We don't have explicit dependencies yet, so if you need actions do depend on this one's success, and there's no clear field to use as a dependency,...
vivid lintelBOT
ornate vigilBOT
#

Thanks for the reply @helderco. Thats good advice, I would probably add it as a dependency of test I imagine. I'm going to try and mock one of current workflows that I have on a project.

Is it expected that I would install Brew and install this tool manually or is there a way to run this container and bring the repo in then execute?

As for the docker vs install locally thing. Any recommendation on what would be best?

vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
ornate vigilBOT
#

Expose (and shout about!) the CLI's ability to run actions at any level of the DAG

It's taken me some weeks of using the dagger to discover that if I've defined:

actions: foo: bar: {
  baz: { ... }
  quux: { ... }
}

... then I can directly invoke quux via dagger do foo bar quux, with Dagger doing the hard work of figuring out, through the DAG, which pre-reqs from anywhere inside actions it needs to run first - and running only those.

This is a fantastic f...

ornate vigilBOT
#

Clearly and prominently document this feature and it's invocation on docs.dagger, explicitly calling out its fantastic "only perform the bare minimum pre-reqs" behaviour

This is a great idea, we should definitely document this better. Thx for the suggestion. Seems like you currently have a real case minimum example where this is worth to highlight. Mind sharing a more concrete case so we can add it to the docs?

Change the dagger do [--help] behaviour to display a nested tree of the ...

vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
#

Overview

This proposes a design in Dagger 0.2 to solve #940.

Problem

Most of the time, dependencies between Dagger tasks are implicit, thanks to the magic of CUE references. If a config value for task foo is referenced by a config value for task bar, Dagger implicitely knows that foo must run before bar.

But sometimes, foo must run before bar even though there is no dependency between their configurations. For example, foo might upload an artifact at a known...

#

@shykes The problem @grouville is facing (if I understand correctly) is: how does this work with higher level packages?

Let's say you want yarn.#Package to wait for a docker.#Run to complete.

The problem in dagger mainstream is you have no idea which fields are the output of tasks (e.g. can be used as completed field) and which ones are inputs of tasks, since you're working with an abstraction (multi layered at that, e.g. docker.#Run -> docker.#Command -> os.#Container -> `a...

#

@shykes The problem @grouville is facing (if I understand correctly) is: how does this work with higher level packages?

Let's say you want yarn.#Package to wait for a docker.#Run to complete.

The problem in dagger mainstream is you have no idea which fields are the output of tasks (e.g. can be used as completed field) and which ones are inputs of tasks, since you're working with an abstraction (multi layered at that, e.g. docker.#Run -> docker.#Command -> `os.#Contai...

#

Most of the time, dependencies between Dagger tasks are implicit, thanks to the magic of CUE references. If a config value for task foo is referenced by a config value for task bar, Dagger implicitely knows that foo must run before bar.

This makes me think any reference is valid.

The problem in dagger mainstream is you have no idea which fields are the output of tasks (e.g. can be used as completed field) and which ones are inputs of tasks, since you're working with an a...

#

I don't have a strong opinion on all these alternatives, but I like the UX of the third option (@helderco's one) the most (even though his current example isn't fully functional atm [theoritically]). From what I understand, helderco's proposition might be possible with your Option 1: id convention.

The second option seems more "risky" because it relies on Cue to expose subfields in the scope of the if (which led to some issues in the past). @helderco's comment is also relevant, it may ...

#

Picking this up.

  • I updated the top comment, with a summary table of our 3 options.
  • Per discussion with @jlongtine : it’s not clear which options work out of the box within the limitations of cue/flow. It’s possible that none do. There is a chance that option 1 (#Wait) does work if designed correctly: Joel is testing this now
  • Overall my favorite candidate is Option 1 at the moment.
    • An explicit engine API call remains the cleanest way to synchronize IMO. Since it’s the same ...
ornate vigilBOT
#

a real case minimum example

For me, having the ability to target nested actions is when I have this:

actions: {
  build: { ... emit BuildImage, but don't push it remotely ... }
  test: {
   tool1: { ... use BuildImage ... }
   tool2: { ... use BuildImage ... }
   tool3: { ... use BuildImage ... }
  }
}

... and having to choose between dagger do test as my pass/fail cycle while I make changes, versus dagger do test tool2.

In other words: because my entry poin...

vivid lintelBOT
#

Bumps cypress from 9.5.3 to 9.5.4.

Release notes
Sourced from cypress's releases.

9.5.4
Released 4/11/2022
Bugfixes:

Updates were made to silence Electron warnings related to being unable to
connect to dbus. These errors are normal and expected, and do not result in
test failures. Because they are always present when running Electron inside
docker containers, it has incorrectly led people to believe it is the
root-cause of an error within their test...

vivid lintelBOT
#

What is the issue?

Dagger documentation is using Docusaurus. By default, it throws an error, to ensure you never ship any broken link, but current configuration has lower this security by displaying a warning message.

The following parameter should be remove to let Docusaurus get back its default behavior.

  onBrokenLinks: "warn",
vivid lintelBOT
vivid lintelBOT
#

I think moving the contribution guide to the docs website gives more visibility.

Also adding a CONTRIBUTING.md file for GitHub links and easier discovery for someone browsing the repository’s files. I know that you'll open the link from github and find that you need to click on another link, but I don't find it reason enough to prevent this move. This is how django does it, and many other big projects.

People seem to not...

vivid lintelBOT
#

Problem

Sometimes I want to check if a file exists. There is not core action to do this: core.#ReadFile will simply fail if the file doesn't exist, causing my entire execution to stop.

Solution

Two possible options:

  • Add core.#Stat to return information about a path: whether it exists, whether it's a file or regular directory, permissions, etc.
  • Extend core.#ReadFile to support a default value contents: string | *null. If the file doesn't exist, then the default v...
ornate vigilBOT
#

Remote Projects

If there's a Dagger project in, say, a git repository somewhere, I should be able to run actions from it directly without necessarily having to clone the repo manually. The idea is to sort recreate the magic of docker run <image> where the overhead of playing around with a container image is compressed to a single command, but now applied to the problems dagger is tackling. Once I have dagger installed, I should be able to start trying out plans immediately.

There...

ornate vigilBOT
#

Standalone Dagger Binary

The dagger binary could optionally embed everything it needs to run rather than have a hard dependency on an external Buildkit daemon and/or container runtime. Buildkit can be embedded as a library and even runc can be embedded via libcontainer (though Buildkit will need some upstream support for all of this).

This would not replace use of a standalone Buildkit daemon (which will have advantages like supporting multiple clients in parallel), but could be use...

vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
#

Console UI

The console experience (e.g. status of dagger do) is not great. Oftentimes, we have to resort to --log-format plain --log-level debug because the default suppresses important information. In no particular order:

  • TTY rendering is buggy (e.g. flashing/broken lines)
  • Some errors are suppressed when run fails (e.g. container logs)
  • It's not clear what's going on, the list of actions is confusing. Currently the CUE path of all "actions" is displayed. I think there are...
ornate vigilBOT
#

This would require the dagger binary to be run as root, right? How realistic would be thinking about using rootless buildkit?

Yeah this is where things get more nuanced. There's multiple options (which aren't mutually exclusive):

  1. Run as root (i.e. with sudo). There are ways to do this without completely sacrificing security though. For example, you could have users start the binary with sudo but then fork/exec off the privileged part and drop privileges in the process that doesn't ne...
#

Though it is worth noting that I have created a fully standalone binary that embedded buildkit+libcontainer and ran rootlessly (as part of a past side project), so I do know it all technically works

:man_technologist: :rocket:

I mainly wanted to bring the idea up to see if there's interest in it from users so we can weigh the cost/benefit, but the cost in terms of effort is most certainly fairly high

definitely something having in the radar. I personally don't see developers g...

vivid lintelBOT
#

Generally speaking, buildkit cache export/import is pretty limiting because it's not "shared": every export cache overwrites the previous one, therefore CI runs are overwriting each other's cache. Persistent cache dirs are not part of the cache. And caching outside of GHA requires setting up some infrastructure (e.g. pointing to a registry).

This is a broad issue, keeping track of CI caching related issues:

  • Using the GitHub Action, cache should work out of the box nicely
    • #1345
      ...
ornate vigilBOT
vivid lintelBOT
#

Dagger TDD/BDD as first class concept


We can create a Dagger definition and a plan to test that new definition using bash/bats, like dagger team does in universe package.
I would like Dagger introduce tdd/bdd using cue syntax

dagger.#Spec & { // Like Dagger plan
  "removeSNames": dagger.#Describe & {
    "should remove all S names": dagger.#It & {
       // verify definition
     }
  
    "should not remove other names": dagger.#It & {
        // verify d...
ornate vigilBOT
vivid lintelBOT
#

Declaratively Trust CA Certificates

  • As a developer, I'd love it if I could declaratively tell dagger/buildkit that I want to trust my organization's private CA cert, so that, for example, actions like docker.#Pull and docker.#Push work with our internal registry.
    • Currently, a buildkit instance must be created manually with the private CA cert(s) mounted into it.
      • E.g. `docker run --net=host -d --restart always -v $PWD/myCA-cert.pem:/etc/ssl/certs/myCA-cert.pem --nam...
vivid lintelBOT
#

Jetbrains / Intellij plugin

(similarly to VSCode extension above)

There is an existing plugin here that provides cue support: https://github.com/monogon-dev/intellij-cue but unfortunately does not seem to be updated. Could be used as a base though?

References:

ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
#

Problem

When dagger do fails when a command fails to execute (core.#Exec, docker.#Run, etc), only a very generic error message is printed, for example:

10:58AM FTL failed to execute plan: task failed: actions.build._build: process "/bin/sh -c npm i" did not complete successfully: exit code: 1

To learn more about the cayse of the error, one must re-run dagger do with additional logging flags, to stream stderr from every command. This is tedious and unreliable.

...

ornate vigilBOT
#

Run multiple actions from one invocation

Similar to how Gradle might run

$ ./gradlew assemble check

It would be useful (though low-priority) to run multiple actions in the same invocation of the binary. Perhaps introduce an explicit flag --action that can be multi-included? dagger do --action='foo bar' --action='foo baz'. This seems preferable than changing the syntax to, perhaps, dot-separated nested actions and whitespace-separated multiple actions (`dagger do foo....

ornate vigilBOT
ornate vigilBOT
ornate vigilBOT
#

Help with using Go modules in Dagger. There is a huge collection of available Go client libraries to interact with various services. Some get packaged into a CLI. Some are just native Go clients. Sometimes I just need one submodule and it would be a lot faster in CI to go get a single module instead of apt install or docker pull the whole tool and all of its dependencies.

Is this reasonable functionality to implement in Dagger or should we continue to focus on just bash/make equival...

ornate vigilBOT
vivid lintelBOT
#

What are you trying to do?

I know the person who created this PR: https://github.com/facebook/docusaurus/pull/3558
I just asked him how hard it would be to implement a scoped embedding like the Go present tools use

Why is this important to you?

Then we could dump our .cue.fragment files, and only use the full file that we could run tests on, but that we could scope with markups to just present the part we...

ornate vigilBOT
vivid lintelBOT
ornate vigilBOT
#

Ive managed to get an example of a pipeline using some tools to very basically check the code for linting/security issues and run some integration tests. https://github.com/RemakingEden/Dagger-Node-Github-Example/blob/main/eden.cue.

Where the "Go on Docker Swarm" use case lost me a little is its focus on the build and can be a little complex.

I wonder if a use case that has:

  • A build step npm install
  • Some tests (int and unit)
  • Some containerised tests (Gitleaks, SonarScan...
vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

This page doesn't seem very welcoming for users. I have the feeling that we want to get straight to the point but maybe it's too fast ?

A simple Welcome message with a short intro of Dagger ? A nice illustration ?

Welcome to the documentation for Dagger. Dagger is a tool to run your CI/CD pipelines locally, then easily integrate them with any CI environment.

I want to play with Dagger now! Ok then, let's test and run a CI/CD pipeline locally :)

////// L...

rich crypt
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

If I'd follow GitHub integration manual as-is, I'm going to get following error: failed to load plan: dagger project not found. Run dagger project init. That's because cue.mod` is not there.

I think the documentation should give either recommendation to commit cue.mod to git (is it a good idea?), or explicitly offer run init & update as part of GitHub workflow:

     - name: Init dagger (dagger project init...
#

fixes #1689

encounter this issue while making a review for the GitHub Action: https://github.com/dagger/dagger-for-github/pull/47

  /opt/hostedtoolcache/dagger/0.2.6/x64/dagger do test --log-format plain
  time="2022-04-13T00:09:40Z" level=warning msg="commandConn.CloseWrite: commandconn: failed to wait: signal: terminated"
  time="2022-04-13T00:09:40Z" level=warning msg="commandConn.CloseRead: commandconn: failed to wait: signal: terminated"
  time="2022-04-13T00:09:40Z" level=...
vivid lintelBOT
#

Document better actions inputs / outputs

Sometimes I find myself jumping between a task definition [1] and it's corresponding source code [2] to understand what some actions are doing in regards to inputs and outputs. The API docs [3] also don't mention this information.

It'd be nice to have a page a la terraform registry [4] with more structured information about the actions and their corresponding inputs / output values
[1]: https://github.com/dagger/dagger/blob/v0.2.4/pkg/dagg...

vivid lintelBOT
#

Improve Package Management

Non exhaustive list of requirements, in random order:

  • Do not require to commit vendored packages in git (e.g. commit only dagger.mod and dagger.sum, just like go)
  • Treat dagger.io/dagger and universe.dagger.io as external packages
    • Fetch them from git rather than embedding in the binary
    • Figure out version management
  • Support "tidy"'ing, i.e. remove stuff in cue.mod/pkg that's not being used
  • Support replace directives like ...
vivid lintelBOT
#

Cache invalidation explain

It's very common for an action (or a set of actions) to be re-executed given that "something" in the build cache changed. While speaking with @gerhard today across several topics, we came up with the idea that it'd be great if Dagger could output some optional detailed information about why the cache is being invalidated. I think this could potentially help to prevent mistakes and/or find issues/improvements in already executed pipelines.

As side nice-to...

vivid lintelBOT
#

Remote Projects

If there's a Dagger project in, say, a git repository somewhere, I should be able to run actions from it directly without necessarily having to clone the repo manually. The idea is to sort of recreate the magic of docker run where the overhead of playing around with a container image is compressed to a single command, but now applied to the problems dagger is tackling. Once I have dagger installed, I should be able to start trying out plans immediately.

There are...

ornate vigilBOT
vivid lintelBOT
#

Run multiple actions from one invocation

Similar to how Gradle might run

$ ./gradlew assemble check

It would be useful (though low-priority) to run multiple actions in the same invocation of the binary. Perhaps introduce an explicit flag --action that can be multi-included? dagger do --action='foo bar' --action='foo baz'. This seems preferable than changing the syntax to, perhaps, dot-separated nested actions and whitespace-separated multiple actions (`dagger do foo....

vivid lintelBOT
ornate vigilBOT
#

This would only work on "libcontainer native" platforms, right? (e.g. linux). Platforms requiring a VM (e.g. macOS) would still need to go through Docker for Desktop or equivalent, correct?

Yeah, what I described would only work on Linux. I'm sure in theory you could make something equivalent to what you get with embedded libcontainer for other OSes, but that would probably end up being a lot of work if it doesn't happen to already exist.

vivid lintelBOT
#

What are you trying to do?

Rather than building our own Python image from Alpine, we should use the official Python image produced by Docker https://hub.docker.com/_/python

After discussion on Discord, this seems to be preferred by a majority of responding maintainers. I will contribute a PR.

Why is this important to you?

Using the official image is the natural thing to do and will be what most Python developers expect. In addition to the DX advantages, using the official image ...

vivid lintelBOT
#

What is the issue?

When i started to use the Template for Gitlab (we are using GitLab SaaS) Everytime I get the Errors regarding in the Log output.

other Pipelines works with dind but not with the dagger template.

this is my cue file

package frontend

import (
	"dagger.io/dagger"
	"dagger.io/dagger/core"
	"universe.dagger.io/alpine"
	"universe.dagger.io/bash"
	"universe.dagger.io/docker"
	"universe.dagger.io/docker/cli"
)

dagger.#Plan & {
	_nodeModulesMount: ...
ornate vigilBOT
#

link package

It would be nice to be able to link a local package. A bit like you can do with yarn link or npm link.

I am developing a reusable action catalog specific to my company to give some context.
I made a separate project with my custom actions. And in the target project, I install it with the command:

dagger project update --private-key-file ~/.ssh/id_rsa --private-key-password "my-password" myrepo.url/ci/dagger@v0.1.0

But when I try to contribute a...

ornate vigilBOT
#

Hi @jlongtine If you are looking for directed acyclic graph layout algorithms in pure Go, https://github.com/nikolaydubina/go-graph-layout is currently the best, as it implements the Kozo Sugiyama layer algorithm, which does edge crossing minimization fairly efficiently. GraphViz is the gold standard, but requires cgo, as does the rearchitected dynadag in C++. The closest port of GraphViz to another language besides Go is currently https://github.com/erikbrinkman...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
ornate vigilBOT
vivid lintelBOT
#

What are you trying to do?

I created a custom package, imported it and tried the following but received an error.

package main

import (
    "dagger.io/dagger"
    "github.com/ivorscott/helloworld/pkg/hello" // my custom package
)

dagger.#Plan & {
    // Say hello by writing to a file
    actions: {
        hello: hello.#AddHello & {. // <--- WON'T WORK - VARIABLE IS SHADOWED BY PACKAGE NAME
            dir: client.filesystem.".".read.contents
        }
    }
   ...
#

Bumps github.com/spf13/viper from 1.10.0 to 1.11.0.

Release notes
Sourced from github.com/spf13/viper's releases.

v1.11.0

What's Changed
Exciting New Features 🎉

Experimental yaml v3 library support by @​sagikazarmark in spf13/viper#1273
Experimental toml v2 support by @​sagikazarmark in spf13/viper#1274
Experimental logger by @​sagikazarmark in spf13/viper#1275

Enhancements 🚀

Remove unnecessary operand by @​steviebps in spf13/viper#1213
Improve encoding...

#

What is the issue?

After a dagger project init (without args), the created cue.mod/module.cue file contains:

module: ""

It's not clear to a new user what that means and if it's related to the package name in their cue files.

https://cuelang.org/docs/concepts/packages/#packages
https://cuelang.org/docs/concepts/packages/#modules
https://cuelang.org/docs/tutorials/tour/packages/packages/
https://cuelang.org/docs/tutorials/tour/packages/imports/
https://github.com...

vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
#

Hi,

I know there is another contribution for a Terraform package (https://github.com/dagger/dagger/pull/2110), but this one we are currently using and implementing at work, and currently supports a lot more features. The approach is similar to Nico's implementation, so feel free to merge it into his package if necessary.

Implementation details

There is a terraform.#Run action to wrap the Terraform command and run it within the official Terraform container image, from Hashicorp....

ornate vigilBOT
vivid lintelBOT
#

Signed-off-by: Ezequiel Foncubierta

I know there is another contribution for a Terraform package (#2110), but this one we are currently using and implementing at work, and currently supports a lot more features. The approach is similar to Nico's implementation, so feel free to merge it into his package if necessary.

Implementation details

There is a terraform.#Run action to wrap the Terraform command and run it within the official ...

vivid lintelBOT
#

What is the issue?

I tried to use Minikube as Kubernetes cluster, and mount kubeconfig in docker.#Run, but It can't access Minikube Kubernetes api server.

I tried to use KiND, It worked. so I want to know if we have any solution for access Minikube with docker.#Run or bash.#Run.

Log output

4:26PM INF actions.test.run._exec | #3 3.141 The connection to the server 127.0.0.1:51686 was refused - did you specify the right host or port?
4:26PM INF actions.test.run._exec | #3 3.595 Th...

vivid lintelBOT
vivid lintelBOT
#

There's a few issues people are having due to the way client: filesystem and client: network paths are set.

Typos in references to path

This one should be easy to spot, but users get confused when they make a small change to a path and don't reflect the exact same path string it in all references to it. For example:

I've seen variations of this while giving support, although users have been understanding of the typos, it's just...

ornate vigilBOT
vivid lintelBOT
#

What are you trying to do?

Early versions of Docker allowed execing into intermediate build steps since intermediate images were generated and spawning a container with any of these images was extremely useful for troubleshooting productivity. Since docker (and also dagger) are using buildkit, this UX has been lost and the current way people are troubleshooting this now is commenting out part of their build pipeline only export the end result into an image and then execing into that...

vivid lintelBOT
#

Bumps async from 2.6.3 to 2.6.4.

Changelog
Sourced from async's changelog.

v2.6.4

Fix potential prototype pollution exploit (#1828)

Commits

c6bdaca Version 2.6.4
8870da9 Update built files
4df6754 update changelog
8f7f903 Fix prototype pollution vulnerability (#1828)
See full diff in compare view

Maintainer changes
This version was pushed to npm by hargasinski, a new releaser for async since your current version.

[![Dependabot compatibility sc...

#

Bumps async from 2.6.3 to 2.6.4.

Changelog
Sourced from async's changelog.

v2.6.4

Fix potential prototype pollution exploit (#1828)

Commits

c6bdaca Version 2.6.4
8870da9 Update built files
4df6754 update changelog
8f7f903 Fix prototype pollution vulnerability (#1828)
See full diff in compare view

Maintainer changes
This version was pushed to npm by hargasinski, a new releaser for async since your current version.

[![Dependabot compatibility sc...

vivid lintelBOT
#

What are you trying to do?

Dagger should be capable of loading a file into a docker container without having to mount a file system e.g. directory or work with a secret.

The equivalent in docker would be a docker run -v /path/file:/path/file image command.

@aluzzardi @jpadams FYI

Why is this important to you?

Currently reading in just a file is not trivial to do as the #Mount definition's contents field is not capable of working with a value that is a string e.g a f...

ornate vigilBOT
vivid lintelBOT
#

From discord:
I'm not seeing any tests (.cue, .bats) in dagger.io/dagger or dagger.io/dagger/core like we have in universe.dagger.io packages. I often look to those for example usage. Was looking just now to answer a question from user about core.#Export

From @aluzzardi
We should probably follow the same structure in both ... core predates universe, we improved the organization of tests but never backported old tests

vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
vivid lintelBOT
vivid lintelBOT
ornate vigilBOT
#

Hello,
this project looks very interesting, however, I am using nix to ensure the environment is accurate so there is no need for docker here. I was wondering if there is any action to run commands locally, I saw you can execute commands with client.commands but I don't think this was its intended use case (for starters, it won't output stdout/stderr if the command fails).

Thanks!

ornate vigilBOT
vivid lintelBOT
#

What is the issue?

I have overridden the go image used by the go.#Test action, to use a custom private image. Like this:

go.#Test & {
	package: "./..."
	source:  _source
	go.#Container & {
		input: _goImage.output
		command: {
			flags: {
				"-count": "1"
				"-race":  true
			}
		}
	}
}

But when I execute my action, the official hub image is still pulled.

And this is a problem for me on gitlab because I reach the docker hub quota faster. And I think it...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This adds a new task type called AsyncExec which has a similar interface
as Exec, but unblocks once the exec has started rather than waiting for
it to complete. A separate type, StopAsyncExec, can be used to stop it
explicitly. If it isn't stopped, then it will be killed once the dagger
client shutsdown.

This is intended for creating ephemeral services used by other tasks in
the DAG, such as a DB against which tests can be run in different tasks.

AsyncExecs cannot output state and ...

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

I'm using Github Codespaces to write contributions for the Dagger repo, but the default Codespaces environment is general purpose and so isn't tailored for this specific repo. It would be useful to have a fixed Codespaces configuration for this repo for repeatable dev environments on any branch.

Why is this important to you?

I can easily work on this repo without having to make sure I have my dev environment set up correctly. Additionally every branch I w...

vivid lintelBOT
#

Signed-off-by: Berry Phillips

Closes #2216

The configs are auto-generated by Visual Studio Code and I have added additional configuration to support the basic needs of this repository. I added a section in the FAQ for this. I don't know if that's the best place or if there should be a dedicated doc for this 🤷🏻‍♂️

Testing

Spin up a new Codespace from my branch and ensure the following:

  • Visual Studio Code loads without errors or warnings
  • The dagger and cue commands are...
vivid lintelBOT
#

What are you trying to do?

I'm building a system.

Because CUE is awesome, I want this system to use CUE.

Because Dagger is awesome, I want the people building this system to use Dagger to build it.

Because I am awesome, I want both my users and developers to have a great DevX. This means I'd like characteristics like:

  • the ability to sit in the root of the project and use the project with commands like ./bin/foo and cue def .:my-cool-project
  • the ability to sit in the ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

From the repository I was trying to create a new project by following https://github.com/dagger/dagger/blob/v0.2.6/docs/learn/1003-get-started.md, thanks to @jpadams for pointing to the updated articles, however, the current articles does not cover the instructions to create a project from an empty directory as the deprecated article did.

One option here would be add a "your first project" or something to the Getting Started or Guides section, with the same intent...

vivid lintelBOT
#

What are you trying to do?

Currently for Dockerfile actions and the tty output, we've "hacked" an improvement to better display error messages here https://github.com/dagger/dagger/pull/2188. However, in order to have a "proper" solution for this, we'd need buildkit to return some metadata on it's SolveStatus here (https://github.com/moby/buildkit/blob/master/client/graph.go#L49) so we can get more contextual information about where events are coming from. After brainstorming this with @...

vivid lintelBOT
#

What are you trying to do?

Back in the 0.1 days, you can input the entire config file into data as structured data:

dagger input yaml parameters -f app.yaml

Here is the full example: https://github.com/hongchaodeng/ai-demo/blob/main/app.yaml

It will automatically converts to a CUE struct which can then be used in latter actions.

But now all you can do is to input ENV style string input. This is very cumberson.

Why is this important to you?

No response

...

vivid lintelBOT
#

What are you trying to do?

I have exposed Buildkit as TCP service in a remote machine. It's public internet so I am setting up mtls + certs. Like this:https://github.com/moby/buildkit#expose-buildkit-as-a-tcp-service

But the docs did not mention anything about how to set certs on client side (Dagger). Is it supported yet?

Why is this important to you?

No response

How are you currently working around this?

No response

#

What is the issue?

I cannot build example todoapp. Maybe because I'm in private network (not reachable to any public DNS)

Log output

~/github.com/dagger/pkg/universe.dagger.io/examples/todoapp$ dagger do build
11:33PM INF upgrading buildkit    have host network=false version=v0.10.1
WARN[0008] commandConn.CloseWrite: commandconn: failed to wait: signal: terminated
WARN[0008] commandConn.CloseRead: commandconn: failed to wait: signal: terminated 
11:33PM INF upgrading bui...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Users often use field names like source and config that are the same as fields inside of definitions. Users aren't sure to describe what's going on:

Whenever you're using the same name as key and value, there's a potential for some weird assignment error I don't quite understand.

This can create an issue...

_image: docker.#Dockerfile & {
    source: source
}

that can be fixed like this:

_image: docker.#Dockerfile & {
    "source": sour...
vivid lintelBOT
#

Bumps sass from 1.50.0 to 1.50.1.

Release notes
Sourced from sass's releases.

Dart Sass 1.50.1
To install Sass 1.50.1, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.
Changes
Embedded Sass

The JS embedded host and the embedded compiler will now properly avoid resolving imports relative to the current working directory unless '.' is passed as a load path.

Fix a bug in the JS e...

#

Disclaimer: I'm not really sure about where to add those files (I've never written CUE before) and I'll be happy to move them around if required.

What is it?

I've tried my best to use the alpine package as a template for this debian package.

Why?

I've missed it like 10 minutes after I started tinkering with Dagger

vivid lintelBOT
vivid lintelBOT
#

This moves the go unit test from the Makefile to the dagger Plan. The issue was the GCC dependency and CGO. I added build dependencies to the base image, I was tempted to add a packages key to go.#Container but I don't want to leak alpine-specific package names in the higher api (we could technically build Go apps without Alpine). Also I think it makes sense to have access to the build packages in a container image that's only used for building.

vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Use a private docker registry instead of docker hub for all images.

Why is this important to you?

We have a corporate Artifactory implementation which proxies all docker images through a private registry. like

myregistry.company.com/alpine:3

which actually proxies the image via docker hub.

Currently, universe packages such as Alpine and Nginx uses hardcoded docker hub registry like

docker.#Pull & {
	source: "index.docker.io/alpine:\(v...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When you use, like in gitlab documentation example, the dagger cache arguments buildkit throw an error related with multiple cache exports.

Log output

WARN[0000] local cache import at .dagger-cache not found due to err: could not read .dagger-cache/index.json: open .dagger-cache/index.json: no such file or directory
WARN[0000] local cache import at .dagger-cache not found due to err: could not read .dagger-cache/index.json: open .dagger-cache/index.json: no...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

When running dagger do on a directory with no actions it will crash the CLI with a seg vault.

Log output

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xfa7903]

goroutine 1 [running]:
go.dagger.io/dagger/plan.(*Action).FindByPath(0x12347c9, {{0xc0004e62c0, 0x1, 0x0}})
/home/kjuulh/git/github/kjuulh/dagger/plan/action.go:34 +0xa3
go.dagger.io/dagger/cmd/dagge...

#

What are you trying to do?

Several things:

  1. Test Dagger against custom builds of buildkitd, including local changes needed for debugging issues (i.e. https://github.com/dagger/dagger/issues/449)
  2. Test Dagger against different configurations of buildkitd without having to impact my existing buildkitd spun up automatically by Dagger. I.e. I might want to test against different executor backends (runc vs. containerd) or with an empty cache.
  3. Test complicated workflows like st...
vivid lintelBOT
#

follow-up #2161

forgot to also filter out commandConn.CloseRead in previous PR: https://github.com/dagger/dagger-for-github/runs/6092884799?check_suite_focus=true#step:3:14

 /opt/hostedtoolcache/dagger/0.2.7/x64/dagger do test
  time="2022-04-20T10:01:52Z" level=warning msg="commandConn.CloseRead: commandconn: failed to wait: signal: terminated"
  10:01AM INF actions.test.script._write | computing
  10:01AM INF actions.test.image._dag."0"._op | computing
  10:01AM INF actions...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

We need a deprecation policy for changes to CUE packages.

The idea is to avoid breaking configs as much as possible, so if there's something that can be done (like renaming fields, e.g., https://github.com/dagger/dagger/blob/main/pkg/dagger.io/dagger/compat.cue) to ease the transition then we should do it.

I'm thinking about adding attributes to fields (e.g., @deprecated()) so we can spit out warnings when loading the plan. I know attributes are frowned upon, but I think it's an ok us...

vivid lintelBOT
ornate vigilBOT
#

I am sending you 1π! Pi is a new digital currency developed by Stanford PhDs, with over 33 million members worldwide. To claim your Pi, follow this link https://minepi.com/wuhh123 and use my username (wuhh123) as your invitation code.If 1Pi=100000$ today, how would you arrange your digital assets??

And I will not hesitate to use 20% to buy a car and a house, and then use 30 to invest, and the remaining 50% will continue to hold #PiNetwork until it is 10 times more and then make other plans.

vivid lintelBOT
#

What is the issue?

When a bash action fails, there is a chance dagger will wipe a bunch of files, including git related files, It usually renders the git repo unusable, requiring a clean clone.

The set of deleted files is not always the same and not always are files deleted. In the following screenshot I ran the action 3 times, but only the third time the files were deleted:

![image](https://user-images.githubusercontent.com/25929015/164412194-c74cf3a4-c6a2-4a72-ad7b-bd93f5773f98.p...

vivid lintelBOT
#

What are you trying to do?

Get some Go code coverage directly from dagger

Why is this important to you?

100% coverage doesn't mean you're safe, but having 0% is worst. Having an idea where you are in between is useful.
What would be great would be to be able to track the difference between the last run in the main branch to track the evolution more than the absolute value.

At a first step, erroring if the full coverage value <XX% would already be interesting.

How are you...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Hello, for setting up Dagger on Windows, I was wondering whether there is any interest in making Dagger available as a Chocolatey package.

The process to create & publish a package seems fairly straightforward:
https://docs.chocolatey.org/en-us/create/create-packages

And the actual install script (package) could look something like:

$packageName = 'dagger'
$fileType = 'ps1'
$url = 'https://dl.dagger.io/dagger/install.ps1'

Install-ChocolateyP...
vivid lintelBOT
#

What are you trying to do?

When running dagger do in a terminal, the verbose usage output often will push the important information of what dagger actions are available off the screen. Some of the options displayed are experimental or will be seldom used. Those options should be revealed by running dagger do -h or dagger help do.

Example of desired behavior:

helloworld-dagger-jenkins ➤ dagger do                                            git:main
Execute a dagger action.
...
vivid lintelBOT
vivid lintelBOT
#

Bumps react from 17.0.2 to 18.0.0.

Release notes
Sourced from react's releases.

18.0.0 (March 29, 2022)
Below is a list of all new features, APIs, deprecations, and breaking changes.
Read React 18 release post and React 18 upgrade guide for more information.
New Features
React

useId is a new hook for generating unique IDs on both the client and server, while avoiding hydration mismatches. It is primarily useful for component lib...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

This attempts to validate plan concreteness (e.g. missing fields) before
execution using some heuristics.

  • Recursively walk the entire tree (avoiding definitions and optional
    fields)
  • Scalars (string, bool, etc): Make sure they're concrete, or have
    default values, or is a reference
  • Core types (FS, Secret, etc): Make sure they're references
  • Core actions (e.g. core.#ReadFile): validate, but skip generated
    fields
vivid lintelBOT
#

This is a simple fix for the issue of logs being duplicated when an
export is performed. The issue is caused by Buildkit's behavior of
"backfilling" newly connected clients on the progress so far of vertices
referenced by their build. This addresses it in the simplest way
possible by just filtering out progress log events from these separate
builds.

This works but is fragile. It works because we currently always set
Evaluate to true when running solves, which means that any progress ...

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Many users have difficulties to understand input and output concept and that lead them to issues they do not really understand.

We should write a page in core concept category to explain how you can link action together through input and output.
We should also explain when use docker.#Build and when not.

And also explain how create dependency between actions that not necessary has input field : link docker.#Push and docker.#Pull for instance.

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

The statement "You can extend your script by wrapping it, as-is, into a DAG. This allows you to start using Dagger right away, and worry about rewrites later." is interesting but there's nothing to back it up. I'm skeptical that wrapping a complex bash script as-is into a (single?) DAG would offer benefit but I'd value an example being included in you docs.

As a startup founder building a reasonably complex cloud-native app that's c...

vivid lintelBOT
#

Declaratively

You can do that declaratively already.

dagger.#Plan & {
	client: {
		filesystem: "./app.yaml": read: contents: string
	}

	actions: {
		_params: #Parameters & yaml.Unmarshal(client.filesystem."./app.yaml".read.contents)

		test: #Echo & {
			input: _params.metadata.name
		}
	}
}

Full plan

package main

import (
	"encoding/yaml"
	"dagger.io/dagger"
	"universe.dagger.io/alpine"
	"universe.dagger.io/docker"
)

dagger.#Plan & ...
vivid lintelBOT
#

This allows project update to download .tar.gz modules from an HTTP server. The module name is derived from the host and path portions of the URL. The fragment portion of the URL is used to define the actual download path. For example, https://github.com/dagger/dagger#/archive/refs/tags/v0.2.7.tar.gz results in the github.com/dagger/dagger module name and https://github.com/dagger/dagger/archive/refs/tags/v0.2.7.tar.gz download URL.

Support for providing an authentication header ha...

vivid lintelBOT
vivid lintelBOT
#

This exposes the LLB pull policy to core.#Pull. This allows the build script to explicitly indicate whether a new image should be downloaded. Only preferLocal is tested, as the other two options are not deterministic. Example:

core.#Pull & {
    source: "myimage:latest"
    resolveMode: "preferLocal"
}

The three options are default, preferLocal, and forcePull.

Signed-off-by: Jonathan Dickinson

#

Bumps google.golang.org/grpc from 1.45.0 to 1.46.0.

Release notes
Sourced from google.golang.org/grpc's releases.

Release 1.46.0
New Features

server: Support setting TCP_USER_TIMEOUT on grpc.Server connections using keepalive.ServerParameters.Time (#5219)

Special Thanks: @​bonnefoa

client: perform graceful switching of LB policies in the ClientConn by default (#5285)
all: improve logging by including channelz identifier in log messages (#5192)

API Cha...

vivid lintelBOT
#

What is the issue?

Seems that dagger is crashing on dereferencing Secrets in certain cases.
Consider the below code example and stack trace.

It's my first day with dagger and I like it a lot so far :hear

Log output

panic: not properly initialized (state: unprocessed, value: )

goroutine 97 [running]:
cuelang.org/go/cue.makeValue(0xc000071f50, 0xc00338cb40, 0x0, 0xc002835200, 0x3, 0x3)
        /home/runner/go/pkg/mod/github.com/dagger/cue@v0.4.1-rc.1.0.20220121023213-66...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

A dagger client running in parallel with another one (i.e. multiple invocations of dagger do that are talking to the same buildkitd at the same time) can see logs meant for the other client if the two share any LLB vertices with equal digests (which includes both the vertex itself and all its ancestors).

This is a bug in Buildkit where it deduplicates the execution of exactly equivalent vertices, but in doing so also deduplicates any metadata associated with those...

ornate vigilBOT
vivid lintelBOT
#

What is the issue?

When there is an entrypoint set on a base image, bash.#Run ends up with invalid arguments (bash cmd and arguments are appended to the existing entrypoint).

Instead it should always set an entrypoint to /bin/bash to work with all kind of base images.

Log output

No response

Steps to reproduce

No response

Dagger version

dagger 0.2.7 (18c19174) darwin/arm64

OS version

macOS 12.13.1

ornate vigilBOT
vivid lintelBOT
#

This significantly reworks how modules are downloaded. There are now different strategies for downloading modules.

  • Git: downloads with git and maintains the old behavior
  • Github: downloads using a .tar.gz from github. The API is used to find the latest tag
  • HTTP: Example, https://github.com/dagger/dagger#/archive/refs/tags/v0.2.7.tar.gz results in the github.com/dagger/dagger module name and https://github.com/dagger/dagger/archive/refs/tags/v0.2.7.tar.gz download URL. Everythi...
vivid lintelBOT
vivid lintelBOT
#

Encounter this issue while building Dagger from source for our GitHub Action in https://github.com/dagger/dagger-for-github/pull/53

  #10 8.698 go: downloading github.com/klauspost/compress v1.15.1
  #10 8.699 go: downloading github.com/containerd/ttrpc v1.1.0
  #10 9.890 go: missing Git command. See https://golang.org/s/gogetcmd
  #10 9.891 error obtaining VCS status: exec: "git": executable file not found in $PATH
  #10 9.891 	Use -buildvcs=false to disable VCS stamping.
  #10 ...
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Now could show clear errors why contents is not set

11:20AM FTL system | failed to execute plan: task failed: actions.k3s.amd64._airgap._export._kubepkg_spec_json_file: kubepkg.json: WriteFile contents is not set:
actions.k3s.amd64._airgap._export.spec.spec.manifests.registry.deployments."container-registry".spec.template.spec.containers.0.image: invalid interpolation: unresolved disjunction "latest" | string | "93f3e3d" (type string):
    components/kubepkg/registry.cue:43:21
...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

There is a problem with vars in docker mount.

The idea is that a split of variables in docker mount causes dagger do build to failed

$ cd doesnt-work
$ dagger do build

Log output

2:11PM FTL failed to execute plan: task failed: actions.build.container._exec: invalid secret at path "actions.build.container._exec.mounts.\"ssh Known Hosts\".contents": secret is not set

Steps to reproduce

$ cd doesnt-work
$ dagger do build
```...
vivid lintelBOT
#

What are you trying to do?

In https://github.com/dagger/dagger-for-github/pull/53 we discussed the option to have snapshot binaries so we avoid building Dagger from the source through a Dockerfile in the action which could potentially cause ecosystem fragmentation.

Why is this important to you?

For users that want to use bleeding edge Dagger features in their CI pipelines without having to wait for a release and/or fork the code themselves

How are you currently working aroun...

vivid lintelBOT
vivid lintelBOT
#

Summary

When specifying a plan (dagger -p) by its absolute path, I get an error instead of successfully loading the plan.

Details

What I did

This checks out the dagger source code (which contains a valid plan at the root) and tries to use it.

cd /tmp
git clone https://github.com/dagger/dagger
dagger -p /tmp/dagger do --help

What I expected to see

$ dagger do --help
Usage: 
  dagger do  [flags]

Options


Available Actions:
 version...
vivid lintelBOT
vivid lintelBOT
#

Bumps cypress from 9.5.4 to 9.6.0.

Release notes
Sourced from cypress's releases.

9.6.0
Released 4/25/2022
Features:

Now you can easily test multi-domain workflows by using the experimental
cy.origin() command. This feature allows you to test
across different origins or domains within a single test. This experiment was
designed to work side-by-side with the cy.session()
experimental feature. You can turn on use of this command by setting the
experim...

vivid lintelBOT
#

Core actions cannot be nested under other core actions because of CUE flow limitations.

As an example:

actions: foo: core.#WriteFile & {
  _xxx: core.#ReadFile & {
  }
  contents: _xxx.contents
}

In this case, actions.foo._xxx is nested under actions.foo and is silently ignored. The result will be a confusing non-concrete error contents: _xxx.contents (since _xxx.contents will never be filled by the runtime).

We should scan for nested tasks and fail with ...

vivid lintelBOT
vivid lintelBOT
#

This change replaces the use of @@- for tracking
which cue fields progress status updates from Buildkit should be logged
with. Now, the ProgressGroup metadata field is used to track the
component part (i.e. cue field) and the vertex name can just be the name
again.

This fixes the issue where Dockerfile builds showed up under the
"system" group. It also is more performant as statuses don't all need to
be parsed anymore.

The only exception that remains are the progress logs writte...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

Speaking with @helderco he came up with the idea of having a convenience way yo reference the last action output from a docker.#Build steps since it's mostly likely that all docker.#Build actions are followed up by a #Subidr or #Readfile to validate or export contents out of it.

This also goes in line with some of the comments in #1993 and with other convenience features proposed like #1993

Example:

Replace this:

dagger.#Plan & {
	cl...
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

feat: is not listed currently in commit message prefixes:

Add the following prefixes to your commit message to help trigger automated processes1:

  • docs: for documentation changes only (e.g., docs: Fix typo in X);
  • test: for changes to tests only (e.g., test: Check if X does Y);
    chore: general things that should be excluded (e.g., chore: Clean up X);
  • website: for the documentation ...
#

Bumps sass from 1.50.1 to 1.51.0.

Release notes
Sourced from sass's releases.

Dart Sass 1.51.0
To install Sass 1.51.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.
Changes

Potentially breaking change: Change the order of maps returned by map.deep-merge() to match those returned by map.merge(). All keys that appeared in the first map will now be listed first in the same order...

vivid lintelBOT
#

What is the issue?

I have no made any changes to my project for a week and it seems something may have changed in the meanwhile. Where the pipeline was working before it fails with the same error both locally and in Github.

I have seen that there have been some changes to when the plan should abort here https://github.com/dagger/dagger/pull/2302, perhaps my plan should never have been working in the first place. If this is the case i'd appreciate some pointers in what i did wrong as ...

vivid lintelBOT
#

We've encountered a few issues with upstream CUE, and have some enhancements we'd like to help contribute, as well. This issue is intended to catalog, discuss, and suggest potential solutions for each of these.

Issues

Enhancements

vivid lintelBOT
#

Before this, a secret which ended up being set to an empty string would
still be "redacted" using strings.ReplaceAll, which has the (surprising)
behavior of putting the replacement chars around+between every char in
the string being replaced.

This meant that if you ended up with an empty secret, then all your logs
would look like this***.

This change just skips redacting if the string is "". I also considered
whether it should be an error for a secret to be an empty str...

vivid lintelBOT
vivid lintelBOT
#

This is a workaround to prompt users to run project update when a version mismatch of stdlib/universe is detected.

The workaround should go entirely away once we have proper package management.

For now, this writes dagger's binary version inside cue.mod/pkg//version.txt whenever we dagger project update, and checks if the version matches upon dagger do.

Example:

$ dagger do test
5:06PM WRN system | A new version of package "dagger.io" is available, please run `dagger proj...
vivid lintelBOT
ornate vigilBOT
#

late to the party, I tried to search around before commenting but haven't managed to find a confirmation one why or the other so:

since safety is an explict, important property shouldn't dagger encourage pinning to sha rather than tags? (git) tags are mutable and what commit they point to can be changed and if that's done by malicious actors we all know the results

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

You get unhelpful error messages for uninitialized state!

Log output

panic: not properly initialized (state: unprocessed, value: )

goroutine 88 [running]:
cuelang.org/go/cue.makeValue(0xc00007fea0, 0xc00127aa20, 0x0, 0xc000000a91, 0x70d88d, 0xc0010be6a0)
        /home/runner/go/pkg/mod/github.com/dagger/cue@v0.4.1-rc.1.0.20220121023213-66df011a52c2/cue/types.go:668 +0x137
cuelang.org/go/cue.Value.LookupPath(0xc00007fea0, 0xc00104fcb0, 0x0, 0xc0010b...
ornate vigilBOT
vivid lintelBOT
#

What is the issue?

What is the issue

I tried dagger locally.
I was following the CI/CD in your local dev and got the following error

failed to load plan: "client.env.APP_NAME" is not set


Usage:
  dagger do [flags]


Flags:
      --cache-from stringArray   External cache sources (eg. user/app:cache, type=local,src=path/to/dir)
      --cache-to stringArray     Cache export destinations (eg. user/app:cache, type=local,dest=pa...
vivid lintelBOT
#

What are you trying to do?

Since we have some custom dagger logic to validate the plan correctness, just doing a simple cue eval might not be enough to make sure that our plans are correct. This helps in the case where you're refactoring things and making changes that don't actually require any action to be executed each time.

This would be analogous the compilation steps in compiled languages. In the context of developing my plan, I would probably want to just verify the plan an...

vivid lintelBOT
vivid lintelBOT
#

I think a command to introspect the plan would be very useful (e.g. similar to terraform plan).

This would:

  • Load and validate the plan
  • Print the DAG and its dependencies

This would help:

  • Navigating the plan: dagger do --help kinda does that, but it's one dimensional
  • Figure out action dependencies
  • Potentially output different formats (e.g. dot file use with graphviz)

cc @dagger/maintainers thoughts?

vivid lintelBOT
vivid lintelBOT
#

What is the issue?

Tutorial. How to turn a "makefile" into flat dagger plan and then refactor for reuse.

Show progression of simple translation, then go to progressively better structures for reuse/testability/etc.

Talk about tradeoffs involved in more abstraction. How to avoid pitfalls. Talk about user personas and how to create actions and plans that serve their needs: ops, devops, devs, app owners, etc.

vivid lintelBOT
#

Before this change, we were using code from the buildx repo that
silently removed GHA from cache options if the GHA token and/or url were
not set. This made it very non-obvious that a mistake was being made,
with the only evidence being that cache import/export just never ran.

This commit updates to use the buildctl code for parsing cache options
(which is better since it is tied to the version of buildkit we are
using, unlike buildx). We need to layer the GHA token+url checks on top
...

vivid lintelBOT
#

After the changes introduced by sipsma in
https://github.com/dagger/dagger/commit/86e798a36bc93d19ac33631d0cb466ab771fa164
Dockerfile logs are now displaying correctly and don't require the
system hack. Additionally, I'm removing the CanTransition method and
going back to the previous behavior since it's not required anymore and
it also introduces a bug when displaying logs for actions that contain
hidden sub-actions.

vivid lintelBOT
#

What are you trying to do?

I'm testing out using Gitpod to write contributions for the Dagger repo, but the default Gitpod environment is general purpose and so isn't tailored for this specific repo. It would be useful to have a fixed Gitpod configuration for this repo for repeatable dev environments on any branch.

Why is this important to you?

I can easily work on this repo without having to make sure I have my dev environment set up correctly. Additionally every branch I work on ...

vivid lintelBOT
#

Instead of continuing with the now deprecated docsearch-scraper, we should instead migrate to DocSearch, as mentioned in this blog post: https://docusaurus.io/blog/2021/11/21/algolia-docsearch-migration

These are the next steps that I can see:

My expectation is that we will...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

We currently have a script that updates our dagger version in our docs instructions but it's not part of our release process. We should ideally try to make our docs depend on hardcoded versions as least as possible and, if not possible, make the release process update docs automatically.

Why is this important to you?

Currently we're having weekly releases and some docs get outdated and cause issues for new users since some instructions are still refer...

vivid lintelBOT
#

Signed-off-by: Berry Phillips

Closes #2347

This environment includes all Gitpod supported languages and tools, as well as some additional terminal tools that are popular.

I went back and forth on using the full base image vs. the slimmer Go image. The full image contains all supported languages and tools - including Docker (see here) - whilst the Go image contains just Go. Using a custom Docker file to install Docker ...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Bumps go.opentelemetry.io/otel/sdk from 1.6.3 to 1.7.0.

Changelog
Sourced from go.opentelemetry.io/otel/sdk's changelog.

[1.7.0/0.30.0] - 2022-04-28
Added

Add the go.opentelemetry.io/otel/semconv/v1.8.0 package.
The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
Add the go.opentelemetry.io/otel/semconv/v1.9.0 package.
The package contains semantic conventions from the v1.9.0 ver...

#

Bumps go.opentelemetry.io/otel/trace from 1.6.3 to 1.7.0.

Changelog
Sourced from go.opentelemetry.io/otel/trace's changelog.

[1.7.0/0.30.0] - 2022-04-28
Added

Add the go.opentelemetry.io/otel/semconv/v1.8.0 package.
The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
Add the go.opentelemetry.io/otel/semconv/v1.9.0 package.
The package contains semantic conventions from the v1.9.0...

#

Bumps github.com/moby/buildkit from 0.10.1 to 0.10.2.

Release notes
Sourced from github.com/moby/buildkit's releases.

v0.10.2
https://hub.docker.com/r/moby/buildkit
Notable changes:

Fix possible corruption of records created by Merge and Diff steps after a daemon restart moby/buildkit#2796

Commits

9d2c9b2 Merge pull request #2829 from tonistiigi/merge-diff-restart-fix-v0.10
1b0cc23 cache: release parents if load fails
7c61efb cache: set all merge+di...

#

Bumps go.opentelemetry.io/otel from 1.6.3 to 1.7.0.

Changelog
Sourced from go.opentelemetry.io/otel's changelog.

[1.7.0/0.30.0] - 2022-04-28
Added

Add the go.opentelemetry.io/otel/semconv/v1.8.0 package.
The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
Add the go.opentelemetry.io/otel/semconv/v1.9.0 package.
The package contains semantic conventions from the v1.9.0 version of ...

#

Bumps go.opentelemetry.io/otel/exporters/jaeger from 1.6.3 to 1.7.0.

Changelog
Sourced from go.opentelemetry.io/otel/exporters/jaeger's changelog.

[1.7.0/0.30.0] - 2022-04-28
Added

Add the go.opentelemetry.io/otel/semconv/v1.8.0 package.
The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
Add the go.opentelemetry.io/otel/semconv/v1.9.0 package.
The package contains semantic conve...

vivid lintelBOT
#

Problem

  • Good: dagger do now checks for missing values before running an action, which saves me time by catching errors early.
  • Bad: dagger do checks for missing values in all actions, even those I am not currently trying to run. This wastes my time, by forcing me to complete values that I don't care about.

Additional notes:

  • Actions can leave incomplete values intentionally. Thanks to the missing value check, this becomes the equivalent of a mandatory command-line param...
vivid lintelBOT
#

Problem

When an action uses a client's environment variable as its default, then dagger do will incorrectly fail at the validation stage ("xyz not set").

NOTE:

  • If the action references the client's env variable directly (not as a default value), then the problem does not occur
  • If the action uses a default value other than the client env variable (ie. a string literal, or reference to a concrete string), then the problem does not occur

Details

What I did

1....

ornate vigilBOT
vivid lintelBOT
#

Bumps cross-fetch from 3.1.4 to 3.1.5.

Release notes
Sourced from cross-fetch's releases.

v3.1.5
What's Changed

chore: updated node-fetch version to 2.6.7 by @​dlafreniere in lquixada/cross-fetch#124

New Contributors

@​dlafreniere made their first contribution in lquixada/cross-fetch#124

Full Changelog: https://github.com/lquixada/cross-fetch/compare/v3.1.4...v3.1.5

Commits

c6089df chore(release): 3.1.5
a3b3a94 chore: updated node-fetch ver...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Why

A default empty string may not be enough if the variable can be defined but empty from the host. No option for secrets. This provides a solution to both.

This has been requested a few times.

What

Allow marking an environment variable from the host as optional.

How

client: env: REGISTRY_TOKEN?: dagger.#Secret

Example

dagger.#Plan & {
	client: env: {
		// load as a string, using a default if not defined
		REGISTRY_USER: string | *"_token_...
vivid lintelBOT
#

Overview

In #2024 I pushed a temporary quick fix for #1867, this is an attempt to recover a proper type for that field.

Problem

The idea seems sound in CUE but it's not working in dagger. There's two issues at play here. Just as in the first iteration of #2024, this:

  • Fixes #1867, e.g., when using CLI inputs or --with
  • Breaks if not with empty disjunctions on the secrets

Test

Check the...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

From Discord about experimental Universe test

If we want people to use them, I think we should maintain awareness as to whether they are actually working. IMO we should enable tests and then if there's severe stability issues we could fallback to running the tests but making them only be advisory and not blocking merges. Just my two cents

The purpose is to split dagger universe test and experimental universe test into two jobs.

So tests will run as a...

vivid lintelBOT
#

Before this, there was a race condition where parallel dagger clients
could race while checking+starting buildkitd, which sometimes lead to
one removing the buildkitd container created by the other.

Now a lock file is used to ensure the process of checking+starting
buildkitd is transactional.

This doesn't fix the case where dockerd is remote and clients are
running on parallel machines, but that's more obscure and much tougher
to fix as dockerd doesn't appear to have any mechanisms...

vivid lintelBOT
vivid lintelBOT
#

This packages is fairly similar in interface to the alpine package.

Some specific features of this over a standard ubuntu install:

  1. Configured to cache packages
  2. Stores apt cache in cache mounts
  3. For the purposes of installing packages specified, it undoes some of
    the built-in apt configs that help keep the image smaller since these
    are not needed when using cache mounts and messes up the cache.
  4. Some optimizations so that apt-get update is only run when the apt
    ...
vivid lintelBOT
#

Inspired by yarn and npm.

What if, in addition to dagger do , we could also type dagger for actions that don't clash with built-in command names?

dagger do deploy --prod
dagger deploy --prod

The inspiration comes from yarn/npm which do the same:

yarn run build
yarn build  ## build is actually not a yarn command

This would take one step further the "action inputs as flags" initiative: the entire command becomes user configurable.

The downside is clash with built-...

vivid lintelBOT
#

Hi,

Ive been working on some documentation as per my discussions in https://github.com/dagger/dagger/discussions/2085.

I wanted to put an unfinished version out to the community to make sure im on the right track and not going to spend a lot of time going in the wrong direction.

The problem im trying to solve with these docs:

  • When I started using Dagger I found it easy to get up and running with the demo project. Then to move from there to converting my CI flows I found the docum...
vivid lintelBOT
#

What is the issue?

The dagger 0.2 docs have a section about handling secrets here: https://docs.dagger.io/1204/secrets. However, this page doesn't mention anything what using dagger.#Secret actually enables and what properties this entails.

Is my data encrypted?
How are secrets secure?
How can I guarantee that only specific actions can access secrets?

I think it'd be a good idea to provide a bit more in-depth detail about what secrets are and how Dagger handles them internally...

ornate vigilBOT
vivid lintelBOT
#

What is the issue?

When I run action with log-format plain, we get strange output (maybee bad encoding somewhere):

REPO_USERNAME= REPO_PASSWORD= OCP_USERNAME= OCP_PASSWORD= dagger do lint --log-format plain --no-cache
1:49PM INF actions.lint._dag."0"._dag."0"._op | computing
1:49PM INF client.filesystem."./".read | computing
1:49PM INF actions.lint._dag."0"._scripts | computing
1:49PM INF client.env | computing
1:49PM INF client.env | completed    duration=0s
1:49PM INF a...
vivid lintelBOT
#

Resolves #1823
Resolves #2196

Why

The fact that you can't use a dynamic path in client: filesystem has come up a lot.

What

Allow overriding client: filesystem path in the action's field, using the CUE path as a default.

How

Simply using the CUE path as a default. Added a file lock to avoid race conditions to allow multiple actions to the same path.

Example:

client: {
	env: KUBECONFIG: string
	filesystem: kube: read: {
		path: env.KUBECONFIG
		co...
vivid lintelBOT
#

Problem

When a plan is split across multiple files, it fails incorrectly with input validation errors ("xxx not set"). The same plan, when combined into a single file, works fine.

Details

Dagger version

$ dagger version
dagger devel (ff0beef6) linux/amd64

What I did

  1. Setup a new project to reproduce
cd $(mktemp -d)
dagger project init
  1. Add repro config
cat > foo.cue < bar.cue <<-EOF
package main

import (
        "dag...
vivid lintelBOT
vivid lintelBOT
#

What are you trying to do?

I want to enable use cases such as test runs to connect to a test database without requiring the user to know the IP of the running test database. They should be able to connect to it as a named service, such as test-db.

Why is this important to you?

It will ease the use of sidecar or other similar use cases.

How are you currently working around this?

No response

vivid lintelBOT
#

After #1510 I started including docs in feature PRs:

The problem is that you'll have new feature documentation published after merge, but the feature itself won't be available until the next release, unless you build from main locally.

We can just not include the new page in the sidebar, but sometimes we want to update an existing page. Example:

One possible soluti...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Bumps @docusaurus/core from 2.0.0-beta.18 to 2.0.0-beta.19.

Release notes
Sourced from @​docusaurus/core's releases.

2.0.0-beta.19 (2022-05-04)
:rocket: New Feature

docusaurus-theme-classic, docusaurus-theme-common

#7178 feat(theme-classic): extensible code block magic comment system (@​Josh-Cena)
#7007 feat(theme-classic): code block showLineNumbers (@​lex111)
#7012 feat(theme-classic): show blog sidebar on mobile (@...

#

What is the issue?

@sipsma recently merged (https://github.com/dagger/dagger/pull/2214) an initial implementation to allow Dagger to run async tasks which opens the door to do some very neat things like running DB's or any other type of dependency to run e2e pipelines in Dagger. This feature has some caveats mentioned in #1258 and #2389 that we should provide initial basic documentation to avoid unnecessary issues about things that we know we're working on. I guess the important thing to...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

What is the issue?

I'm trying to delete a sub-directory by using core.#Copy, but it fails when marking the sub-directory as excluded.

Log output

9:14AM FTL failed to execute plan: task failed: actions.syncK8sRepo.copy: failed to copy file info: failed to chown /var/lib/buildkit/runc-overlayfs/snapshots/snapshots/48/fs/test-dir/another-dir: lchown /var/lib/buildkit/runc-overlayfs/snapshots/snapshots/48/fs/test-dir/another-dir: no such file or directory

Steps to repr...

vivid lintelBOT
vivid lintelBOT
vivid lintelBOT
#

Bumps @docusaurus/core from 2.0.0-beta.18 to 2.0.0-beta.20.

Release notes
Sourced from @​docusaurus/core's releases.

2.0.0-beta.20 (2022-05-05)
:bug: Bug Fix

docusaurus

#7342 fix: avoid flash of page scrolling to top on refresh (@​slorber)
#7329 fix(core): inject docusaurus version into SSR as local (@​RDIL)

docusaurus-theme-classic

#7341 fix(theme-classic): properly highlight code block line numbers (@​Josh-Cena)
...

vivid lintelBOT
#

Even though we export to GHA using per-test scopes, there are often
multiple invocations of dagger do within a single test, each of which
will use the same export target and thus overwrite each other's cache
manifests.

This meant that we would pay the price to export cache (quite expensive
for large blobs), eat up our bandwidth limit uploading that cache
(causing more throttles) and then never actually reuse the cache
because the manifest got overwritten.

For one example, the ./co...

vivid lintelBOT
#

What are you trying to do?

I want to set the hosts in a docker.#Run, but it is unfortunately not exposed because _exec is not mutable from the outside and therefore core.#Exec.hosts not editable.

Either delegate hosts from docker.#Run to _exec or make _exec publish and therefore accessible from outside. I personally prefer the second one to comply with CUE and make everything extendible.

Why is this important to you?

Realize commands like `docker run --add-host=host.docker...

ornate vigilBOT
vivid lintelBOT
#

What are you trying to do?

Remove files, similar to how I can make files and dirs with core tasks. Rm is a supported FileOp type in Buildkit, so not much effort needed in Dagger.

Why is this important to you?

Users needed it here, had to resort to workaround (that turned out to have a buildkit bug anyways): https://github.com/dagger/dagger/issues/2401

How are you currently working around this?

No response

#

What are you trying to do?

In Buildkit, you are able to mount a filesystem in an ExecOp, make changes to it in the exec and then get the new updated contents after the Exec (at which point it can be used as any other LLB state). E.g.

// mnt will have the contents of busybox plus /foo
mnt := llb.Image("alpine").Run(
   llb.Shlex("touch /mnt/foo"),
   llb.AddMount("/mnt", llb.Image("busybox")),
).GetMount("/mnt")

The same should be true of Dagger's core.Exec. FS m...