#general
1 messages · Page 5 of 1
**If you are going to KubeCon EU or in the Paris region, don't forget to register for the Open-source AI meetup next week! **
I am very excited to announce that @winter linden and one of our very own Daggernauts,@solar raptor will be showing off some awesome AI demos there.
Registration is required for the event, so save your spot now - https://lu.ma/devs3
I'm evaluating moving our pipelines to dagger, now I'm trying to build the images using it.
My experience building containers is fully around docker, so I have a conceptual question: How layering works with dagger? I had a look on docs and around discord but I had no lucky finding this information... 😦
The objective is build a multistaging image, in docker I have the base one with pyproject and poetry.lock only. the dev one I mount the directory with volumes and prod I copy the directory to the container.
Can someone give me a help understanding those concepts in dagger? Can be a doc or a thread, I will read through
Hi everyone! We just publicly launched the Daggerverse!
The Daggerverse is a searchable index of all Dagger Functions developed by the community around the world. Many of you already use it every day. With this launch, many more people are about to join you 🙂
We have over 200 modules at launch day, and some seriously cool software being built. I can't wait to see what this community builds next!
Hey guys, I've experimented with dagger a while ago, before functions were introduced. From what I am reading now, seems that the preferred way of using dagger is by creating functions/modules instead of using dagger run. I am strugling understanding the difference, in practice, of dagger call vs dagger run. I understand that dagger call is more flexible/composable. Is there anything that run can do that cannot be done with call?
Some of my dagger functions are starting to get complex. I actually started build a cli tool that handles some of the complex logic and package that in a container image which I then call in my dagger functions.
My first slew of questions were these:
Is this the correct approach?
Is it too many layers?
Should this all be kept in the dagger function?
Assuming what I did was correct, I then started to wonder:
What should be packaged into a containerized cli tool and what should be written directly in the dagger function?
Any advise on this?
I think we're figuring out the best practices together 😁
Personally I put everything in dagger functions. When one function becomes too complex, I break it down into smaller functions. I like that I can call any of them from the CLI at any time, and components them as needed. By comparison, traditional CLIs are too monolithic and brittle
I find that the object design, using custom types, helps me model the overall architecture of my module.
Interesting. But aren't there some limitations to the functions? For example, return types are limited.
not compared to what a CLI can return in my experience 🙂
again this is my personal development style so far, not canonical
that's true
here's the source of my latest module: https://github.com/shykes/daggerverse/blob/921afbccaf2f57ea42461353124e66c7d43112fe/termcast/main.go
Thanks @winter linden !
Ok so let say I strictly use dagger functions, there are some things I can do in code or using a container, which would you say is better?
for example using aws cli to get an s3 bucket or using the boto3 client
you mean choosing between native library and calling a cli in a container?
good question, personally I start with a cli until I need something only a library gets me, it depends on the use case. I optimize for development speed
ok cool
Can the dagger function pass the output of running the cli command in a container to forward it to pass somewhere in furthur code like some api or code?
Yes absolutely.
Even when the command is running and not completed?
No, Dagger can't stream the standard output of a process while it's running. But there are various workarounds you can develop yourself on top of the Dagger API. Which is the best depends on your particular use case.
any example or guide or direction for this? or please guide with what api of dagger we can achieve this?
so a question... it's pretty clear to me how dagger functions operate and being able to call them from dagger via dagger call. However, suppose I want to chain things together, is there anywhere that documents best practices around this?
e.g. suppose i want to build a container with docker build, spin up an AWS ECR endpoint if it doesn't exist, fetch credentials, and publish to it... each of these could be a unique function, but it isn't clear to me how they all can be tied together nicely in a dagger idiomatic way
It would be really nice to have a reference like this
Beginnings of this here..let's build out your example and share with everyone soon! 👇
Hi everyone!
As you all know, we announced the Daggerverse yesterday. For some examples on how to use it, check out this blog post. We'll have more content like this in the future. Let us know if there's a scenario we should explore or a module we should check out. 🙏
We can't wait to see what you build! 🚀
https://twitter.com/dagger_io/status/1767994716065521831
https://www.linkedin.com/posts/dagger-io_the-daggerverse-in-practice-dagger-activity-7173760565658542083-8A5C
👋 Hi, Daggernauts!
I'm a product manager on the Dagger team.
We're building visualizations for Dagger Functions and need your feedback to make it great. This visualization will be included in Dagger Cloud. You DON'T need to be using Dagger Cloud to give feedback.
(But if you're not using Cloud, we have a free subscription option.)
Is there a shorthand way of automatically using environment variables as input arguments to a function?
I always want to add AWS env vars, for example. And not have to always specify --aws-access-key-id env:AWS_ACCESS_KEY_ID as an arg
Hi Jake, see #daggernauts message
I found this for invalidating cache https://archive.docs.dagger.io/0.9/cookbook/#invalidate-cache
Is there a better way to do this now?
Filesystem
No, not yet, I'm afraid 🙂
Ok, the env var works well. Just saw that it might be a feature 🙂
Are you guys planing to make daggerverse public? Im building a poc to present to the company, would be nice to have a self hosted private daggerverse as well.
It is public! 🙂 https://dagger.io/blog/introducing-the-daggerverse
Announced on this channel: #general message.
I wish I could host a daggerverse to share private modules inside the company only
I have a container I want to build. It is stateful (vector db) and I want to preload it with some testing / staging data. I think I want to do something like...
- Build the image
- Run it as a service
- Load the data via an api call (create a new layer?)
- Push the image with data layer
Is this possible?
Capturing state from a service into an image layer
Are the Guides & Cookbook sections from the older docs going to be migrated to the new docs website?
we can write docker compose file instruction in any programming language with dagger and tell dagger to run it, right?
you should be able to accomplish docker-compose like functionality in the supported languages, and technically any language if you use the GraphQL API, though I wouldn't want to do that personally
you mean to say you will write docker compose file into compose.yml only and not with dagger?
no, more that there is a dagger way to do something similar with dagger services and exposing ports to the host. Last time I tried, there were still gaps in DX, so I still use docker compose for things locally. I just build & export the images with dagger for docker compose to use
One of the issues as being able to refer to other services running by name, iirc dagger generates some random chars, kind of a PITA
ok thanks for clarity
can you please create issue to solve problems or friction you are facing so others can have better DX in future
ok
I very much am not a fan of this new function paradigm, I'm sticking with dagger run assuming it's not going to get deprecated. The missing docs on the latest website gives rise to some concerns
@fallen temple Feedback
Jenn and I are in the process of setting up a feedback call on the new UI
Yes agree, docs need to be improved with examples and more clarity for better DX.
great.
the dagger run docs are completely gone now
haha right
are they going to be migrated to the new site?
random feedback on HN: https://news.ycombinator.com/item?id=39728102
but holy hell their documentation is just aggressively bad
no idea for now
I'm certainly curious to know if the dagger run interface will be improved (such as supporting invoking other modules) or if it will only be maintained and not see any improvements.
Please keep that stuff off the general channel.
Your feedback is welcome because you're actually here, investing the effort to try the product and share feedback.
A random hater comment from hacker news, with no substance, from someone not even using the product, is just spreading bad feelings for the sake of it.
noted & apologies
Thanks - I did go on HN to ask the guy for more specific feedback, let's see if we get anything actionable!
To your point on 0.9 docs: we're busy porting them over. Requires manual scrubbing hence the delay.
do you have a LLM chat bot for dagger docs / code yet?
(the bars for open source project expectations keep going up 🤣 )
I think there's a PR for adding that, yeah. Same tech as #1161349676751126528 (Kappa.ai)
I saw LlamaIndex uses Kapa, haven't tried it there yet, the answers look decent for other users based on a few samples
I'm currently working on building/deploying a llama-index powered project with Dagger. I still find reading through the docs at the early stages to be better than relying on LLMs
I tried using Dagger's new functions with the Python code, but had a hard time translating what I know and have as patterns to the new concepts, so went back to what I do know.
can anyone help me to get docs for, how to run and use dagger on/with kubernetes?
The new administrator manual is about to get merged. It includes a Kubernetes integration guide.
Here is the PR: https://github.com/dagger/dagger/pull/6878
And here is the link in the development preview: https://deploy-preview-6878--devel-docs-dagger-io.netlify.app/integrations/104820/kubernetes
thanks a lot bro
**Daggernauts in Paris! **
Many people from the Dagger team are in Paris this week for KubeCon.
If you are in the area, join us tonight for the Dagger meetup! https://www.meetup.com/dagger-paris/events/299243165/
If you are here for KubeCon, make sure to join us for the other events this week too - https://dagger.io/blog/dagger-heads-to-paris
Thank you the everyone that came to the Dagger Meetup today!
I’ll share links to all the modules people built tomorrow.
Had a chat with @fossil pine yesterday at the Dagger Paris meetup, and he offered to co-organize some Dagger meetups in Budapest.
If you are in the Budapest area, join our new Dagger Meetup group below. We'll be adding events soon!
Some of the Dagger team is at KubeCon. If you are here, come stop by our booth!
Hey everyone! There is no community call today since most of the team is at KubeCon and we have a few different in-person events today.
We’ll see you at the next one on April 4th! For now, check out the community demos on the demo thread 🙂
Is that interactive charm debug view for streaming and collapsing logs still out there in the new dagger "zenith" version that's live now, or was that experiment deprecated for just debug logging being improved ?
Hi this Hamze from Paris. yester night I had chance to talk with Solomon Hykes at Station F. I had share an idea to build something on top of Dagger. I would like to contunue my conversation with him
It's still available in v0.10.2 with an experimental flag. _EXPERIMENTAL_DAGGER_TUI=1 but it'll very likely be removed any time soon in the future. cc @elfin frigate
Awesome, and welcome! You came to the right place. Feel free to share your ideas here; the whole Dagger team and community will gladly help.
As feel free to DM me and I can coordinate if it's not ready to reveal to the whole community...yet 😁Sounds exciting!
Hi everyone, I wrote a Dagger function to run Jest unit tests. In my function I have a container. After I retrieve a Docker Image and mount a directory to the image, I run a script to run my tests. I chain the stdout() method to output the stream from my test script I expect to see the results from my tests. However, stdout() returns output generated by my test script when execution commences but not the entirety of what the script generates (it excludes the test results)
If I return the container without stdout I see the expected output (results from my test) so I know the test script is running successfully. However, I expectedly get an error about the type of data I am trying to return not being JSON serializable. I would like to return a result showing my test results without any errors
code sample:
https://replit.com/join/fcxqqpwurs-emmanuelsiband2
Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.
Let's say a few developers are using the same dagger engine while developing and ci cd pipelines are also using the same dagger engine from the same machine.
Then how can we leverage the dagger engine for dev purpose and pipelines purpose? What benefits will we have?
And how will it work on kubernetes?
Do we need to deploy a separate dagger engine in each pod or how it will work?
Hi, just moving my first steps with Dagger.
Are there best practices recommended with respect to facoring out common code that might be needed in tests (i.e. launching containers via testcontainers) and in CI/CD?
So we're actually quite early in this process ourselves! (especially with modules)
A few best practices I've found though:
- Splitting base images and steps into functions (thinking of separate functions a bit like dockerfile-stages, if you're familiar) can really help manage complexity as you scale
- You can keep some functions private - you can use these to hide implementation details, and then you can expose the functions that you want to the CLI, so you can have a clean outer interface
- I tend to avoid passing
clientobjects around, since those can be set globally - If possible, it's nice to avoid running long-running operations (like Export, Sync, Stdout) etc, in deeply-nested functions - because these force execution of a pipeline, it can cause some weird issues where dagger can't parallelize execution that it might otherwise be able to (I'd love to think of a clever low level fix for this, but I got kinda stuck with this)
hum seems like the daggerverse search engine is very picky about what we type there, case-sensitive and more
Jed, I wonder also in terms of Github modules organizations...any thoughts? Do you create a separate GoLang module for Dagger, one for your code, and one for common test helpers? (i.e. testcontainers?)
ahhh yes, this is tricky 😄 i've tended to start with everything in one place, and then splitting things out towards the end - that works better once i know the interface and functionality i need to have, but i think that's just a general software-engineering approach thing, your preference may vary.
for golang builds, i'd probably grab something from the daggerverse directly instead of rolling my own though
generally, i've only split out into modules if i can imagine someone wanting to reuse the components - if there's no need to (since it might be all internal), then I would say keeping it in one module can probably help reduce complexity (and will probably improve performance, but ideally over time, it should approach the same kind of speed)
hum seems like the daggerverse search
ahhh yes, this is tricky 😄 i've tended
Don't want to pollute the threads, but very excited about Dagger so have other questions. How do I get started with Daggerverse? 😄
I think https://dagger.io/blog/introducing-the-daggerverse is probably the place to start 🎉
I also have one other trivial question. What are the best practices about composing dagger workflows?
- Running a different dagger action with dagger-cli in each step of a CI/CD pipeline?
- Create a composite entry point
Both are equally valid. My recommendation is: move as much logic to Dagger as you can get away with, given the constraints in your project 🙂
How do you run Dagger behind a corporate proxy? we have a dockerhub mirror
At the moment it's not possible, it's a high priority to add that feature. There are workarounds: you can deploy the docker engine container yourself, and point to it with a special environment variable.
You can track the progress on this issue: https://github.com/dagger/dagger/issues/6599
Thanks, does that describe also the workaround?
I see workarounds being discussed there, but I don't know for sure what are the latest and greatest. Flagging @pseudo stream for help on that
Using a dockerhub mirror specifically is documented here https://docs.dagger.io/manuals/administrator/272381/custom-registry There's various other problems corporate envs usually hit (http proxy, custom CAs, etc.) that are discussed in that issue above and are being actively worked on
Thanks, I almost linked to that, but wasn't sure if it also applied to the problem with dagger modules
Currently there is no workaround (short of modifying the engine code) to pass-through the proxies to dagger functions. You can get around it by directly using the dagger core sdk (non module version). You can see docs on how to do that in the archived docs https://archive.docs.dagger.io/0.9/. I think the plan is the re-surface those docs eventually. @winter linden correct me if I'm off base.
Would only using a custom dockerhub work? I will try
Docker credentials are available to the SDKs when you docker login outside of dagger call commands. The issue I am having with proxies is not related to containers. It's related to pulling go modules that the SDK container needs to function. So, using any dockerhub that you can authenticate to should work with dagger.
I think we also can’t access registry.dagger.io so I cannot pull the engine
right, that could be a problem. Dagger publishes the engine to ghcr.io also. In my company that is a trusted registry. Try pulling from ghcr.io/dagger/engine:v0.10.2
Dagger in enterprise networks
I'm at RustNationUK conference. Promoting Dagger here.
💪
Dagger Raleigh Meetup Discussion
What can be the ETA for rust SDK and it's documentation like python and typescript and with support of creating dagger modules and functions?
There's no official ETA since it's a community contribution. There's a #rust channel if you want to follow the conversations. Contributions are always welcome, too!
Questions when following the Export the build directory (https://docs.dagger.io/quickstart/853930/directories#export-the-build-directory) guide on docs (please let me know if #1030538312508776540 is a better place to ask these, I wasn't sure!)
- In the first command:
dagger -m github.com/kpenfound/dagger-modules/golang@v0.1.5 call build --project https://github.com/dagger/dagger --args ./cmd/dagger entries
--args basically tells where the source code for the dagger CLI in the repo is right? (which we want to build). And then the output of the module we ran to build the CLI is a Directory() type so we call the entries function on it which lists the contents of the build directory - is my understanding correct? If yes then I'm confused why the output isn't just a single Dagger CLI binary and instead has a lot of other things like READMEs, etc?
- Then in the next command:
dagger -m github.com/kpenfound/dagger-modules/golang@v0.1.5 call build --project https://github.com/dagger/dagger --args ./cmd/dagger export --path ./my-dagger-buildwe callexportinstead ofentrieswhich is also a function on theDirectory()type?
Thanks for taking a look at this! 🙏
Build a binary with a function | Dagger
Ladies and gentlemen...
Hey everyone! In about 20 minutes, Solomon is joining Arun Gupta to talk about all things Dagger on the Open Intel Livestream. You can join here: https://www.linkedin.com/events/7177056179456528384/comments/
Thank you all for being here on this journey with us!
We wouldn't have hit this milestone without each of you providing feedback, helping each other in the various channels, and always being willing to share more details about your Dagger use case.
Just to give a few kudos where deserved, I finally got around to setting up Dagger cloud for my personal stuff. It was literally just adding an environment variable and now my builds are on dagger cloud. Including stuff like figuring out which remote git repo I've got, which commit it is one etc. Well done!
A few notes:
- It would be nice if the terminal output understood ANSI, or at least stripped the ANSI codes. This is a small issue as this is only when running in the terminal and not in CI, but I want the pretty colors if possible as well 😄
- If pipelines are not used in the code (something I didn't do as I saw no reason to) makes the dagger graph difficult to navigate. It simply didn't seem to natively match my graph together properly (image 2) I've got no idea what those empty withExecs are. I probably have a mistake in my graph somewhere, but honestly the output doesn't help me much in figuring out exactly where it is. I found it a bit strange that each sync call it self, it at least from where each ID was called wasn't automatically grouped, such that everything under a WithDirectory("/src", src) would display the subdirectory merge.
- Log fetching is slow. It may because individual contributor stuff is running on shared compute, but fetching logs, even if there is none takes around 600ms. Quite a lot to give me a response that no logs are available. (they aren't cached client side as well it seems like)
I'll likely fix these myself (adding WithPipeline etc). Overall the experience is nice. It clearly serves its purpose, my only concern is that the UI really wants to present a traditional CI pipeline structure, while the steps that are run are a graph. At least in my case something went wrong and it didn't build the graph properly in the UI (it could also be something lacking in the rust sdk, but I doubt it has anything to do with that).
I thought I'd give my first impressions before I get too used to it, awesome job, can't wait to use it more
Thanks for all the feedback! cc @fallen temple @elfin frigate @last pine @mint axle @glad jolt
Yeah thanks, this is great feedback! For some context, the current UI is being fed data that it wasn't designed for. It originally only showed Buildkit operations and pipeline groups, but now it's being fed function calls, which it just renders kind of randomly. Basically you're seeing a gracefully(?) degraded experience because the core mechanics have outpaced our UI.
So now we're cooking up a completely new UI that shows you a trace of function calls. The logs handle ANSI colors, though they don't understand things like progressbars yet (no vterm). Since it's a function trace you probably don't need to set up pipelines, but it's driven by OpenTelemetry so you can add your own spans to group things however you like, just using OpenTelemetry APIs. I'd show a screenshot but we're planning to ship it soon anyway and I don't want to spoil anything. 😄
re: performance - the paint is still wet and it'll take some time to improve performance for logs specifically. It might not be great on launch - it's a long pipeline with many many potential bottlenecks - but it's a top priority for me personally.
Sounds great. I considered not mentioning the log parts because of the upcoming otel thingy you've got cooking. But gave it anyways as it could be useful for iterating on the UI itself.
Vterm is probably overkill for a readonly UI, the bench mark should probably be that it should be able to handle what a dev might throw at it from their workstations. Which often includes ANSI codes because it is an actual terminal. It also seems to be what you've got in mind so that is nice (but non interactive ANSI tuis, as that is what is currently being handled in Docker anyways)
The performance isn't terrible, it could be better as it is noticeable, but it isn't really a problem at the currentl level.
Sure, full vterm support would be assuming we can do it without sacrificing performance. Some CLIs have parallel progress bars and such, and it'd be nice if it didn't trash the output. In the end we just need to get some HTML to the browser; if we have to, we can just send pre-rendered HTML straight over the wire. (Live streaming would be more challenging, but even that is possible with xterm.js, which we might also want to use for in-page debugging sessions)
Has anyone managed to get dagger working with gitea before?
Has anyone managed to get dagger working
I've been mulling over the tools we've come up with for certain parts of the development platform we are working on using k8s. We've gotten Arco CD and Kargo for continuous delivery and environment promotion of applications i.e. from QA, to staging to production. And we've got Argo Events and Workflows to build a webhooks process for triggering CI and of course we have Dagger now as the CI "workload" tool.
And, we also have Temporal, which was originally thought of for services orchestration and application workflows. However, it hit me the other day writing an article about Dagger, that we could also use Temporal for firing off Dagger work (work = daggerized anything....) and by doing that, we would have
- the ability to "cron" work.
- the ability to retry any work, should something fail.
- the ability to limit retries, if we want to.
- the ability to queue work and send out messages to other work as information or even as a trigger.
- the ability to make the work revertible, if one or more work steps fail.
I realize all this could be programmed into one or more Dagger modules too or even applications that run Dagger work loads. But should they, being Daggerizations i.e. functions should be (?) simpler smaller units of work?
And thus, my mind continued to spin and I started to imagine work that can scan a Github repository (or any repository really) at timed intervals and find if there has been a change in a certain area, it would kick off other work in the cluster. (Argo CD)
Dreaming even further, I was thinking about allowing for webhooks or other API calls, which can trigger actions in the cluster, where certain work in the cluster is accomplished. (Argo Events and Workflows and Kargo).
To do this though, and thinking in the paradigm of Temporal, I was thinking I'd need Temporal applications running that cover these two areas, CI and CD, and have Dagger running within the "Activities" Temporal will run.
I also feel I'm jumping the gun, as Dagger should work in the same manner overall (otherwise the intention of "Dag" in the name is missing??). Am I wrong? 🙂
👋 Hey! Just a few words to publicly recognize the outstanding work the Dagger team is doing. The prompt action in replying to my questions, the professionalism and the willingness to help me is making my Dagger journey much more pleasant. Especially thanks to @slender charm , @narrow nymph and @sharp marsh for taking care of the community in such a passionate and thoughtful manner.
This made my day, thanks so much for the kind words ❤️
If anyone is in Romania, one of our Daggernauts, @fossil pine, will be speaking at KCD Romania on April 25th. He is using Dagger in production, so he is a great person to meet up with to ask questions.
Hi, I am reading the docs for the latest version, and I noticed the new docs has a section on "Publishing on use", which says that every time dagger call is used, it will be automatically published to daggerverse if there's a valid github.com URL. This reads like it is the default and there's no option to change this behavior. Did I read it right?
I'm reading it the same way. I'd be very surprised if this is the case. I hope it isn't. I definitely wouldn't want all of the functions I put together as a module added to Daggerverse automatically. And, it seems to me to make very little sense to do so for everyone else too. 🤔
I guess we could test this.
I'm reading it the same way. I'd be very
Dagger seems to be sharing core features with WebAssembly
"modules", "composable", "polyglot", "runs everywhere"
I am wondering if a Dagger 2.0 could swap out its OCI runtime with a WASI runtime
I need to think about Dagger as an application framework rather than a CI framework.
did that AI powered channel get removed? Thought I'd experiment with it but can't find it listed anymore
We'll see y'all at the Dagger Community Call tomorrow at 9 am PT!
Looking forward to @swift bronze an @fierce sandal sharing how they are using Dagger, and @elfin frigate will showcase a new feature we are working on 😉
https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
did that AI powered channel get removed
Hey everyone! @winter linden and @warm temple are doing a hands-on workshop on the Kubesimplify show in a 2 minutes. You can watch live here: https://www.linkedin.com/events/7170662442614636544/comments/
Hey everyone! The community call starts in 1 minute. We'll see you there.
Welcome everyone to the community call! We will be starting in just a moment.

👋
Hello from Durham, North Carolina
Thank you for the presentation @fierce sandal ! If anyone missed it, this is the blog post that he was refer to https://emmanuelsibanda.hashnode.dev/a-dagger-module-to-run-my-unit-tests-locally
That's how Alex found a way to fix the screen sharing on Linux, by using Windows!
how can we get this visualization locally? 🙂
😍 😍 😍
This is a feature in Dagger Cloud and not available locally. We want to add more features in the local dev UX that light up from Cloud services. This isn't an offline feature, though. I know some people need completely offline access, so sharing your needs is helpful for us to prioritize future work.
To add to that, the UI is hosted but you can visualize your local runs as well, not only your CI
not the same thing, but with the OTEL work, you can now export your dagger pipelines into an OTEL exporter of your choice
though there's no live view, and it probably won't look quite the same
We have a free plan for Dagger Cloud, and you can try this out later today. https://dagger.cloud/signup
It looks very different. We did a lot of work to optimize the display for Dagger, especially elevating Functions as a first-class UX.
yeah i can't recommend the export thing honestly, i've had a pretty trash experience when viewing dagger/buildkit traces through other tooling
Kyle crushing it on the Kubesimplify show
Any questions for Alex? I'm curious to hear feedback from people using the Cloud UI today.
The new Trace view will be compatible with the latest engine release right?
Thank you @fierce sandal and @elfin frigate for your demos today!
yep! that demo was with the v0.11 version we just shipped
and people with old engine (<v0.11) will still be able to use the Runs view I guess
yeah there was definitely no rush 😄 😄 😄
thank you for your service 
Yes, we have a way to toggle between the views. For people adopting Dagger Functions now, they'll likely be using the latest version of the engine. For people still using the previous engine versions or using a mix, they can still see the previous Runs view. Our plan is to eventually have this new Traces UI replace the Runs and Changes UIs. We received a lot of feedback about the previous UI and have tried to incorporate that into this new UX.
If you want to see the latest docs, you can view this PR: https://github.com/dagger/dagger/pull/7004
We'll merge and deploy once the UI is updated. I plan on adding a doc that walks through how to use Traces to debug failures and perf issues soon.
Dagger Meetup in Seattle on April 16th 🎉
Thanks to our venue sponsors, Pulumi, we are hosting our first Dagger PNW meetup soon!
If you will be in the area for Open Source Summit, the meetup is a 7-minute walk from the conference.
RSVP here:
https://www.meetup.com/dagger-pnw/events/300218297/
Thank you to our venue sponsor, Pulumi, for allowing us to host this event at their space!
**We look forward to meeting all of the local PNW Dag
Is it possible to test a Dagger Function locally under the following setup? Basically develop in one repo, use in another repo
# dagger development here
verdverm/daggerverse/
my-function/...
# dagger usage here
topicalsource/
ci/k8s/... <- this would be the directory the function should operate within
I'm using v0.11.0 and the typescript sdk. It's taking over 1m to initialize on every call. Am I doing something wrong or is this expected?
It's like it's running npm install multiple times every dagger call, maybe garbage collection is getting in the way?
Is it no longer possible to run commands on the host with exec and similar?
Here's the code: https://github.com/verdverm/daggerverse
not from a Dagger Function no. You can still do that on the client side (we're going to add the ability to use a module's codegen in your external client's code- until then you can wrap dagger call
definitely not expected. Is your cache persisted between runs?
you can import a relative path within the same repo. Across repos requires a remote git url. We don't support local dependency redirect or vendoring, but are open to adding it. cc @rain oriole
Hi, I’m quite new to Dagger and I like the concept very much. I’ve started going through some of the examples, they are very helpful!
Now I am looking for an example of a CI/CD pipeline with a manual approval step, but I haven’t been able to find any yet.
Is something like https://i.stack.imgur.com/SrIfw.png possible in Dagger? (I guess I could write my own solution, but it would not be trivial and I assume this is use case more users are interested in.)
dagger 0.11.0 drop the progrock.Writer with sdklog.LogExporter.
How could I get the pipeline name from the new LogData ?
it is important for me, to connect the dagger log with my custom tool log
https://github.com/octohelm/piper/blob/main/pkg/cueflow/dagger.go#L62
Dagger 0.11.0 uses OpenTelemetry now, so it's easier to integrate with other tooling.
We're working on more docs for that, but in the meantime, you can see the PR: https://github.com/dagger/dagger/pull/6835
Slow initialize times with TS Dagger Function
having a --dir flag to the function was actually what I was after
Hi everyone, i have a question, is there an sdk more stable than others when using dagger call ? i started a python project with dagger functions in different submodules, and it was working fine, but i started having different issues, including the beartype one, but also Error: unknown command "from" for "dagger call ..." in some other environments (CI and other PCs). In the end i chose running everything with dagger run python script.py instead. Any hint or advice?
SDKs stability
any progress OR ETA for deno support? for TS sdk? https://github.com/dagger/dagger/issues/4368
Hi, new to dagger here 👋
I don't understand something basic - where do the containers that it spawns actually run?
I'm using Docker for Mac and I created a simple function that runs sleep in alpine:latest, and I didn't see any containers in docker ps, so what am I missing?
For actual detail you'll need a dev to respond, but (I don't think) Dagger uses Docker (Docker is just an easy way to distribute/provision the engine). All BuildKit under the hood?
There's some info on architecture/execution here: https://docs.dagger.io/manuals/developer/overview/482011/architecture
Thanks. I read this. I wish it was more detailed. So from what I understand here is that it all runs inside the Engine container. I'm asking because I'm thinking how resource management would work. Questions like: How would I run multiple functions in parallel on multiple machines, etc... in my company we have a pretty large amount of Azure DevOps pipelines (god help us) and so I'm trying to understand how it would "translate" in terms of execution/lifecycle
Thanks!
Suggestion for the server here: Change the "Node" channel to "TypeScript". (?) 🙂
Thanks. I read this. I wish it was more
Yes, great suggestion and thanks for catching it! Changing now.
I found way to migrate to the new log sdk.
but, I found the log only output util all task done, when Frontend.Plain is true.
https://github.com/dagger/dagger/blob/main/telemetry/attrs.go#L57-L63
is idtui ready for the progress?
There's also the tui visualization, but yes, the only way to visualize pipelines graphically is through dagger cloud - in the last community call we also shared the new visualizations for dagger modules which have a slightly different style and flavor to them
Hope that helps!
With dagger@v0.11.0 logs lost colors in github actions or other CI.
any idea to fix this?
@elfin frigate 👆
odd, will look into it
Just some feedback to the breaking changes in v0.11.0. https://github.com/dagger/dagger/releases It isn't clear from a readers perspective what actions I need to do to mitigate this breaking change.
We're running a shared dagger-engine which is why this is problematic.
Do i need to update my clients first so that my engine still is v0.10.3, but the clients are v0.11.0, or the other way around.
Cheers
Application Delivery as Code that Runs Anywhere. Contribute to dagger/dagger development by creating an account on GitHub.
it should update both. once client dagger version updated, the dagger-engine version should be same.
cause graphql may changes.
I build the shared dagger-engine in my projects.
Now I have to setup 2 dagger-engines. one for v0.10.0, another for v0.11.0.
Here is an version from engine.Version to route client to the correct remoute dagger-engine,
but it not always returns the correct version.
Wondering if there's a way to improve the user experience of optional args in dagger call func --help. Right now there's no way to determine which args are required vs optional, even if an argument has a default value in code. Could this be done such that args with no defaults are marked required, args with defaults are marked optional?
Guessing this is an engine change rather than SDK-specific?
Current:
Flags:
--args strings Additional arguments to pass to the command
--path Directory Path to source directory
Ideal:
Flags:
--args strings Optional Additional arguments to pass to the command
--path Directory Required Path to source directory
I think it'd also be an improvement if required args are always above optional arguments - at the moment my --args is above --path despite being the optional arg
Yeah, that's scoped in https://github.com/dagger/dagger/issues/6943.
Not SDK specific. It's a CLI change.
is dagger init deprecated?
for some reason dagger doesn't recognize the init argument
Anyone having a problem with ZSH, on macos, when the dagger completions is loaded?
happens since update to dagger cli v0.11.0
i had to kill the dagger process to get back to my shell.
Dagger presentation at DevOps Days Portugal
Is there a way to use dagger on macos without Docker Desktop ? Iow with colima for instance ?
I get error getting credentials - err: exec: \"docker-credential-desktop\": executable file not found
I use OrbStack.
**Anyone going to Open Source Summit NA next week? ** 👋
@slender star will be there, so make sure to say hi.
We're hosting a meetup on Tuesday too, which is only a 7-min walk from the conference.
We'll be building modules together, and our friends from Pulumi and Chainguard will be there too!
**RSVP here: **https://www.meetup.com/dagger-pnw/events/300218297/
Good piece of advise, works for me.
Is there any OSS stuff that works ? IOW, could I make colima work ?
Are there any good practices to test the modules/functions being built ?
If we treat CI/CD as code, we do want to test its code, right ?
Can we write k8 yaml files or kubectl commands through dagger? Like the same as docker file commands
Colima should work IIRC
Yes, sure. You can do this
Is there any demo or example available as reference for that?
What are you trying to do exactly? Generate k8s manifests? Or run kubectl on existing manifests?
Actually we want to orchestrate both through dagger.
I had an error with Colima. See #general message
Colima errors
does anyone know what are the current sdks being developed or its mainly going to be community based for other languages ?
@sharp marsh please help and share if there is any docs or guidance. Awaiting your response. Thanks
Is this the correct video to learn it?
https://youtu.be/u1Q6RNaQHTY?si=1d5M5UkoNp6vj3Uh
In this demo, Marcos shares his experiences with running Kubernetes in Dagger and explores different possibilities for testing pipelines.
Want to ask the presenter a question about the demo? Join us on the Demo Discord Forum here to discuss this specific demo:
https://discord.com/channels/707636530424053791/1120935751069208699
gotta test run 100+ variations of a deployment (terraform infra + ansible provisioning). what would you guys use to automate this?
Does anyone know of some complete dagger examples that are cicd production ready for a language like go or typescript?
you can deinitely write a Dagger pipeline to automate this. What's your main concern?
hey Felix, it really depends to where you need to deploy you app to. What's your target app provider?
oh nice! any modules I should look into? The variations consist of modifying a script slightly and modifying the terraform infra on which it runs. I'm basically testing inference times of different machine learning models wrt. different inference serving frameworks and wrt. different GPUs
I guess I'd start by checking if the existing terraform and ansible modules in the Daggerverse are useful to you. re: the script changes, I'd evaluate maybe converting it to a templated thing so you can parametrize it for each run by any of your language of choice templating solutions.
noted, thanks a lot for the tip!
hi! just like a docker container to a registry. local registry is fine.
could the source code from this video be shared? it was really good I just dont see a repo https://www.youtube.com/watch?v=P3RI0H6Oma0
Emmanuel Sibanda, a software engineer, dives deep into his journey of building a multi-stage CI/CD pipeline triggered through a GitHub action workflow, leveraging the power of Dagger. He uses Dagger for his project to facilitate the automation of tasks such as linting, formatting, and unit testing using Python and JavaScript SDKs. Watch the demo...
@fierce sandal 👆
@white zephyr a lot of good stuff here: https://github.com/kpenfound/greetings-api/blob/main/ci/main.go
hey @tired moth! I can't personally recall a specific video for that. Maybe there's something in the #1075928318802657340 channel. If you can give a concrete example of what you're trying to do, I can help you by providing some guidance with a simple example.
I don't want to write k8 menifest (yaml) files ever again and want to orchestrate k8 cluster from dagger only. That's it
I don't want to write k8 menifest (yaml
what do I need to do to delete my local dagger cache?
what do I need to do to delete my local
Is there a good idea to use Dagger as our devserver as well? So it would create a new function that would call most of the pipeline and then serve the containers as services... is that the right tool for the job or I'm just wrong in thinking that? ahah I guess we would need a long-running service as part of the "pipeline" and would need it to hang there
Found the example I was lookig for ahha
https://github.com/vito/bass/blob/main/dagger/main.go pretty cool ❤️
How do I use daggerverse? I have dagger setup locally.
what should I do to to daggerize this basic csharp pulumi demo app? I ran dagger init but I am unsure how to get linting or tests on this going.
That SDK doesn't support dagger init yet. I replied in #dotnet message, what you need is dagger run.
Dagger Product Update
👋 We recently released a new view for Dagger Cloud: Traces. This new view makes it a lot easier to get to the root-cause of why something failed and to find performance bottlenecks. You can watch the demo @elfin frigate gave at the last community call and learn more about Traces in this blog post: https://dagger.io/blog/introducing-dagger-traces
Traces show up in the new v2 UI, which you can toggle on in the header. You must use Dagger v.0.11.0 or later to see your runs in Traces. If you're using older versions of Dagger, your runs show up in the v1 UI (Runs views).
We're regularly improving the UX, and we're looking for feedback to make it better.
If you don’t have a Dagger Cloud account, create one for free - https://dagger.io/pricing.
I'll start a thread in this channel for feedback.
traces feature available for free plans in dagger cloud?
It is - but you need to be on 0.11.0+ for both your engine and CLI
ok thanks for clarity
hi, i was wondering if anyone has gotten dagger working for a pre-commit workflow? i suspect it might be more flexible compared to the python-based pre-commit because of its DAGs and containerization
What are the python-pre-commit tasks doing?
as an example, i do some formatting, linting, and certain build operations during the pre-commit step in this repo: https://github.com/ShamrockSystems/k8s-manifests
the big thing is that it ensures that the actually deployed manifests and their corresponding source manifests are in-sync in the same commit
the build process requires a lot of tools to be installed on the developer's computer however (kustomize, helm, python, pdm, etc...), have been considering dagger
I'm about to re-enable one today. We are using dagger to switch over to containerized Go builds. Our existing pre-commit hooks run one of those Go builds before doing something with that binary in the pre-commit hooks.
I rolled it out earlier, but people got upset because it took crazy long times (because they had multi-GB files laying around their repo). I've added a size filter, but the experience reminded me that you have to keep pre-commit hooks fast generally.
Generally, being able to build small, tool based containers, without having to name, version, and publish them... it's really nice
does anyone have any suggestions on a good way to describe "Directed acyclic graph" to a non technical audience?
@white zephyr https://www.youtube.com/watch?v=1Yh5S-S6wsI
Learn what a Directed Acyclic Graph or DAG is, and some of the guidelines for its use in data pipelines.
Here's the Whitepaper:
https://www.intricity.com/learningcenter/algorithms-that-run-the-world
Talk with a Specialist: intricity.com/intricity101
oh man. imagine a dagger use case handling all of the container orchestration kubernetes does 😮
No thanks. That's not what Dagger was meant to do.
I stand corrected
Hello folks. First thanks for creating dagger. It is pretty awesome.
Second, not sure where to ask this but are there any plans to support remote modules that aren't hosted in github? Say gitlab including the self hosted version of it? Is there a road map I can take a look at? Thank you!
There’s no public roadmap yet but yes we do intend to support both private modules and other VCS systems including Gitlab
no public roadmap, but there is a very rough organization of issues into milestones: https://github.com/dagger/dagger/milestones
any collected set of examples and best practices?
Our guides section has a few, but we'd love to get feedback on what specific guides you might be looking for! https://docs.dagger.io/guides
The videos and community content section of our resource page has many examples as well: https://dagger.io/resources
In the demo forum, we've tagged each of the presenters as well, so feel free to ping them in the demo post if you have any follow-up questions about how they have set up certain things https://discord.com/channels/707636530424053791/1075928318802657340
**Happy Wednesday everyone! Can't wait to see everyone for the community call tomorrow. **
@slender charm @swift bronze and @thick igloo are going to share the latest ways that they are using Dagger.
If you haven't already, you can register here: https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
Thanks a lot for the answer! will start digging through
Hey everyone! Community call is starting now. Join us here - https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
Join the Dagger team and community to learn about the
latest updates and see neat community demos from Daggernauts just like you.
We do the call on Zoom and the live chat on Discord, so make sure to join our Discord server too: https://discord.com/invite/dagger-io
Want to submit a demo? DM mirandacarter on the Dagger Discord, and she will get...
👋 Hi everyone on the community call! I'm in Portland, Oregon, USA
Hello! Joining in from Vancouver, Washington, USA
Hello, everyone!
Joining from Porto, Portugal!
Good morning from San Francisco 🌉🌁
I love the integration tests use case, I'd say that's very much in scope for Dagger.
+1 It is great to see additional use cases like this!
@swift bronze https://archive.docs.dagger.io/0.9/cookbook#services
Filesystem
Nice demo @swift bronze 👍
Cerbos - https://daggerverse.dev/mod/github.com/cerbos/dagger-cerbos@ffb25f18f978d2f709152d78b0de599c4d0f213a
awesome! thank you! 🙂
High-level synthesis (HLS), sometimes referred to as C synthesis, electronic system-level (ESL) synthesis, algorithmic synthesis, or behavioral synthesis, is an automated design process that takes an abstract behavioral specification of a digital system and finds a register-transfer level structure that realizes the given behavior.Synthesis begi...
Module he is using - https://daggerverse.dev/mod/github.com/BondMachineHQ/BMBuildkit-FPGA
Next step: run Dagger on a FPGA? 🙂
Would be cool if we could pass that device as an argument
cool module good job
Great demos this week 😁
If anyone wants to join Diego for his Dagger livestream on April 22nd, you can RSVP here. He is going to Daggerize a pipeline for a data science use case - https://www.linkedin.com/feed/update/urn:li:activity:7184961639819919360/
Module that Lev is using - https://daggerverse.dev/mod/github.com/levlaz/daggerverse/novu
@thick igloo Great demo! Super curious to see what's in those blinky files to make an LED blink 😄
right! is there a way for removing the old one?
@thick igloo it would be really cool if you can stream on twitch too
Now we all know what to do if we can't get a hold of you @slender charm 😛
Thank you all!
I joined a little bit late but thanks for the two demos 🙂
Thank you so much @thick igloo , @swift bronze and @slender charm for your demos today! I'll share the full recording as soon as it is done processing.
@thick igloo this question might be stupid, but do you use V at work ?
@dciangot it would be really cool if you
Device pass through
Here is the full recording of the community call. I'll turn these into demo snippets and add to youtube/demo forum soon.
Thank you again for joining!
FYI there's an equivalent in the new docs.
Services | Dagger
can I run a python function in a container from within a dagger module being written with the Python SDK?
so within dagger_module.py I would have a dagger function run_in_container that takes a non-dagger function my_function and runs it in a container
ah nvm, this is what dagger does by default
hm, I've added packages to the python dependencies in pyproject.toml but I'm just getting an error saying main requires these packages
any clue how to fix this?
I'm not a Python SDK expert but would check here for an answer: https://docs.dagger.io/manuals/developer/python
i'm getting the error from following the instructions there
huh manually calling uv fixed this
where does a file passed into a dagger function stay in the module's container?
should sending the query { currentModule } to dagger return the module I've created with dagger init?
it will return whatever module contains the function making the query
thanks!
Python dependencies
the standard way to update dagger on linux is to rerun the linux installation instructions right?
hm. how would you implement the following workflow?
- you
dagger calla dagger function - that function begins doing its work in a dagger container (this is just the default behaviour)
- that function starts another different dagger container, but on the host, which begins doing some work
so at the host level you have two containers doing work in parallel, one of these containers having started the other (and these containers are not within each other)
Yeah that is the most standard, simple thing in the world with Dagger. You just call the Dagger API from your dagger function, and orchestrate any number of container operations in that way
You can do this at arbitrary depth: containers running containers running containers. The containers will be logically nested, but the host system will only see a flat list of containers, all started by the dagger engine. So you don't encounter the usual issues with nested linux containers.
hm, do I do this by having my dagger function return container.from(image_name).withExec(command)?
hm, any clue why with_exec["apk", "update", "&&", "apk", "add", "curl"] fails to install curl but with_exec["apk", "update"].with_exec["apk", "add", "curl"] doesn't?
Plausibly something related to the difference between calling an executable with arguments, and using syntax which provides specific instructions to a shell. In this case && is an instruction to bash/zsh/etc that instructs it to execute a series of commands with specific flow control.
That's right, that && is syntax that requires a shell to interpret it. You need to explicitly execute the shell, and pass the script as argument (either verbatim, or by referencing a file containing the script)
What does dagger develop actually do? When I was going through the quickstart for v0.10 and realized that to switch from writing the new CLI back to TypeScript I needed to codegen 50 SDK files, I was mega-turned off since that seemed like an absurd amount of stuff to commit to my repo. I'm starting to suspect that the SDK would actually be added to gitignore and wouldn't be needed just to run dagger call against a local module, but I'm still curious what codegen is actually needed for. (I've previously experimented with running the dagger client from deno, and this was very exciting since you can have just a single typescript file which imports modules by URL inline, and have TypeScript LSP support from denols without needing a package.json, tsconfig, etc.)
Hi @white zephyr here's the link:
https://github.com/EmmS21/peerprogrammingplatform/tree/main/peerplatform/peerplatform-fe/dagger/runTests
any way to get a log of stdout from the entire run of the container?
sort of like docker logs
Wondering about passing a directory to a dagger function and excluding (e.g.) node_modules. Does dagger respect gitignore when uploading host directories to containers, or is there an exclude key in dagger.json? This page in the Python docs suggests both are needed, but I can't find any documentation an exclude key in dagger.json so far
Pretty sure that page is only referencing module contents, not passing dirs as arguments to functions. That exists in the SDK (.directory(".", exclude=["node_modules"])) but (I think) is unfinished for functions - the issue is here: https://github.com/dagger/dagger/issues/6155 and the PR here: https://github.com/dagger/dagger/pull/6857
An idea that has been looked at (and rejected) in the past are a dagger.ignore file. Other approach could be to use some sort of include / exclude patterns on CLI, though it may be verbose/complex ...
Fixes #6155
Adds support for views as described in the linked issue to support filtering individual directory args.
This PR also includes new CLI subcommands under dagger config for configuring vie...
I think initial support is merged in 0.10.3, and I added some config to dagger.json that's running without errors, so that's great -- thanks for pointing me in that direction!
still interested in this if anyone has a clue
Hello everyone,
I am currently working on experimenting moving an existing GitlabCI pipeline to a Dagger module with a set of functions.
While digging in the doc, I encoutered this: https://docs.dagger.io/integrations/734201/gitlab
where there is a sample of YAML for GitlabCI:
.docker:
image: alpine:latest
services:
- docker:${DOCKER_VERSION}-dind
but as far as I can tell the docker:dind service is only available when using docker itself as base image of the given stage.
Is this a refuse in the doc or is there a feature of GitlabCI which I am not aware of?
(Running the stage on public Gitlab CI actually fails)
My fault, dcoumentation is correct. Gitlab CI is a mess, both documentation and runners :/
GitLab CI | Dagger
follow up: I thought https://docs.dagger.io/manuals/developer/go/924957/debugging might give some answers but it only shows the exit code
hm, otherwise is there any way to debug containers? edit: see thread above for tips on how to debug
can I chain modules in the CLI? otherwise, any way to pass a container from one module to another (in the CLI)? maybe publish locally?
Yeah you can chain things as long as the return type of the function you’re calling is chain able, so for example if the function returns a container type then you can chain indefinitely, as soon as a function returns a more limited type like a string or file then the chaining becomes a lot more challenging.
hm, do you mean this in the sense that I can chain modules (in the CLI) if the outputs are the correct type?
am trying to setup a local registry in order to do this
ah that's the whole point of ttl.sh
How many folks are attempting to use a single Dagger invocation to execute their entire CI process, vs executing multiple different functions via CLI? My dream since I first heard of Dagger was to replace all the things I hated about working with existing CI providers with a dagger run where everything was driven under the hood by a real language in a powerful engine.
I share @maiden cloud 's current frustration expressed above, and I ended up here again after frustration with Gitlab, attempting to troubleshoot some very long builds with child pipelines where error after fiddly little error keeps preventing progress (and 45-minute cycle times to try out each change, yay!). Very painful.
Being able to run every part of a dagger pipeline independently is really cool, and being able to run all of it locally is really cool. But I'd like to reach the stage where I never have to trust CI provider behind-the-scenes magic to make anything work, even if it takes a lot of my own effort. How likely is that to be a reality? 🤔
pretty likely if you ask me
If anyone is in the Atlanta area or wants to join virtually, @fallen temple will be speaking about Dagger at the Kubernetes Atlanta Meetup this Thursday
RSVP here - https://www.meetup.com/kubernetes-atlanta-meetup/events/300519463/
I have a issue with dagger and kubernetes (my local cluster)...
dagger query <<EOF
{
container {
from(address:"alpine") {
withExec(args: ["uname", "-a"]) { stdout }
}
}
}
EOF
runs endless, and in the pod logs I see:
failed to JSON-unmarshal x-dagger-client-metadata: json: cannot unmarshal object into Go struct field ClientMetadata.labels of type []pipeline.Label
aha - this looks like a known issue where you have a mismatch of dagger versions between client + server
i'd recommend making sure that both local and kubernetes versions of dagger are on the latest version, v0.11.1
❯ dagger version
dagger v0.11.1 (registry.dagger.io/engine) darwin/arm64
image: registry.dagger.io/engine:v0.9.10
I installed it via Helm charts from oci://registry.dagger.io/dagger-helm
works
Thanks
oops. we're already working to fix this Tobias https://github.com/dagger/dagger/issues/7105. cc @rigid pebble @heavy gazelle
Thank you again to all of the April Community Call speakers!
If you missed any of their demos, you can check them out in the demo forum posts. Feel free to ask the speakers questions directly in the posts:
https://discord.com/channels/707636530424053791/1232432452304375878
https://discord.com/channels/707636530424053791/1232429592434708592
https://discord.com/channels/707636530424053791/1232404739207991347
https://discord.com/channels/707636530424053791/1232393969187688530
Last but not least, we introduced Dagger Traces during the community call this month too. You can check out the summary/demo here:
https://dagger.io/blog/introducing-dagger-traces
🚨 hot module opportunity!
Apple just released a new ML library. Currently at the top of Hacker News: https://news.ycombinator.com/item?id=40139398
Who wants to try Daggerizing it? 😁
Maybe we can do it live!?
You might get it functional because it uses PyTorch underneath, but you’ll be stuck to CPU only without an MPS driver and mounting the MPS device into the container https://chariotsolutions.com/blog/post/apple-silicon-gpus-docker-and-ollama-pick-two/
If you've tried to use Ollama with Docker on an Apple GPU lately, you might find out that their GPU is not supported. But you can get Ollama to run with GPU support on a Mac. This article will explain the problem, how to detect it, and how to get your Ollama workflow running with all of your VRAM (w
The way that ollama gets around this is that they run a native binary not in a container to access the m series GPU
MPS device
@warm temple in the workshop you did here: https://www.youtube.com/live/1vHrf7-D3oI?si=EIGWX8xfM4hOSaH8&t=6275 for the frontend you ran dagger -m dagger/frontend call run --source=./website up --ports=8081:80 to forward the port but for the backend just dagger -m dagger/backend call run --source . up and yet the backend service was accessible by curl localhost:8080 - why is that we didn't have to expose the port like we did for the frontend?
By default, up will forward the exposed port of the container. You can change the mapping with --ports, which I did for frontend since forwarding to 80 on localhost requires sudo
Another Daggerization opportunity on the front page of Hacker News: https://news.ycombinator.com/item?id=40141175
This was on the first page yesterday, I actually tried to daggerize it before it dropped, but life got in the way. https://news.ycombinator.com/item?id=40135458
Would make for an awesome module still
Very excited to hear that @thick igloo is doing a "part 2" of his livestream next week!
In his last livestream, he walked through enhancing data science workflows using Dagger. https://www.youtube.com/watch?v=iqNDJzHQwgw
In his next session, he'll actually use the Dagger Functions that he made with actual data analysis code and make them composable through the Dagger chaining mechanism. https://www.linkedin.com/events/datascienceworkflowswithdaggerf7189162013070082048/about/
awesome, cant wait!
Where can I read up about all the primitive types in Dagger which I can return from the Dagger functions I write?
Hm, good question 😄 Maybe someone else has a better source, but I'd recommend https://docs.dagger.io/api/reference
For instance, here's the String scalar: https://docs.dagger.io/api/reference/#definition-String
We support boolean, int, float and string
does anyone have any examples of using dagger with mlops workflows?
There are a few demos from the community calls:
🌐 daggerverse.dev isn't responding
hei guys, does anyone have examples of using dagger with spring boot ?
Spring
was looking at ranchers repo for dagger calls and they even have mage calls for dagger. Neat!
i have a lot vested in mage so might inspire some quicker adoption for me to see where I can reuse stuff with less effort 💪
seeking dagger with webassembly direction to start in
have someone some advice how to use trivy scan with codegen on images from gitlab - Am pythonist
hey! seems to me that you could use trivy's module for that: https://daggerverse.dev/mod/github.com/jpadams/daggerverse/trivy@dce5436fb7dea3e6283557c9b50c7e077d524653#Trivy.scanImage
One thing that I didn't get is what you mean by "with codegen". Could you expand a bit on that please?
Yes, codegen is sdk for python https://daggerverse.dev/mod/github.com/helderco/daggerverse/python-codegen@19fc1ebe1691563c260b86bd2ef58064560e4c31
its here in my tree:
├── pyproject.toml
├── requirements.lock
├── sdk
│ ├── codegen
│ │ ├── pyproject.toml
│ │ ├── requirements.lock
│ │ └── src
│ │ └── codegen
│ │ ├── cli.py
│ │ ├── generator.py
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── LICENSE
│ ├── pyproject.toml
│ ├── README.md
│ └── src
│ └── dagger
│ ├── client
│ │ ├── base.py
│ │ ├── _core.py
│ │ ├── gen.py
│ │ ├── _guards.py
│ │ ├── __init__.py
│ │ ├── _otel.py
│ │ └── _session.py
│ ├── _config.py
│ ├── _connection.py
│ ├── _engine
│ │ ├── conn.py
│ │ ├── download.py
│ │ ├── __init__.py
│ │ ├── progress.py
│ │ ├── session.py
│ │ └── _version.py
│ ├── _exceptions.py
│ ├── __init__.py
│ ├── log.py
│ ├── _managers.py
│ ├── mod
│ │ ├── _arguments.py
│ │ ├── cli.py
│ │ ├── _converter.py
│ │ ├── _exceptions.py
│ │ ├── __init__.py
│ │ ├── _module.py
│ │ ├── _resolver.py
│ │ ├── _types.py
│ │ └── _utils.py
│ └── py.typed
└── src
└── main
└── __init__.py
i install it by this step 5 on tutorial
https://docs.dagger.io/manuals/developer/python/419481/first-module/
python-codegen :: Daggerverse
Seems like the dagger CLI output format is different now?
yep, mostly a change due to "functions" and the recent traces changes: https://dagger.io/blog/introducing-dagger-traces
Sad to see that go, I really liked the dag view
Was thinking "man that would be great to pull in vito/progrock into the docker cli"
Good to see you on the discord again @stuck wyvern !
I believe the same information is still visible now. The only difference is "trailing" info about finished calls. Previously, finished calls stayed on the screen. Now only active calls are visible. I don't think any "DAG" information was lost. The "merge back" arrows were now actually references, they were time-based. So a different rendering of the same info. I could be wrong
Very excited to hear that @dciangot is
It actually was DAG-based and used inputs/outputs to draw the arrows, which is indeed lost in the new view, which is based on call stacks instead. On the other hand, it was pretty complicated to display; I think we gain more than we lose with the new simpler output. (Also you can pass -v to keep items onscreen fyi.)
Feel free to scrap it for parts! Its history dates to moby/buildkit actually so it's only fair. 😄
@stuck wyvern how's the moby packaging project going? I'm curious how it could benefit from Dagger Functions
At the moment its just chugging along.
Not really any changes except the occasional sdk bump.
We plan to move the actual definitions to use the spec from https://github.com/Azure/dalec
Not sure what that's going to look like at execution time.
Hi all! Excited to be back in the host's seat for the Dagger Community Call tomorrow! See you all there 😁
Content on Argo Workflows, RAG AI, and debugging pipelines 🚀
https://dagger-io.zoom.us/webinar/register/3917073295766/WN_j_xRpP1ASb6xrM4AiRKRnA
Join the Dagger team and community to learn about the
latest updates and see neat community demos from Daggernauts just like you.
We do the call on Zoom and the live chat on Discord, so make sure to join our Discord server too: https://discord.com/invite/dagger-io
Want to submit a demo? DM mirandacarter on the Dagger Discord, and she will get...
I think I have everything to build a GitOps delivery workflow with Dagger. Haven't put it together yet, so if anyone wants to see me sweat in live, I can stream it somewhere. 😄
Can we use #911305510882513037 for that? Anyone interested?
Is there any chance it will be recorded? It’s late for me
No recording, but this is just me trying to wire this together. I'll probably demo it sometimes without having to worry about if it works or not. 😄
I'm not going to post this on GitHub, because it's crap, but here it is:
package main
import (
"context"
)
type Kubefleettest struct{}
func (m *Kubefleettest) UpdateVersion(ctx context.Context, sshKey *Secret, githubToken *Secret) error {
git := dag.Git(GitOpts{
SSHKey: sshKey,
})
// Clone the repository
// TODO: bust cache before cloning the repository
dir := git.Clone("git@github.com:sagikazarmark/my-kube-fleet.git").Directory()
// Make the change
dir = dir.WithDirectory("myapp", dag.Kustomize().Edit(dir.Directory("myapp")).Set().Image("nginx=1.21").Directory())
// Commit changes and push to a new branch
_, err := git.Load(dir).
WithCommand([]string{"checkout", "-b", "update"}).
WithCommand([]string{"add", "myapp/kustomization.yaml"}).
WithCommand([]string{"config", "user.email", "mark.sagikazar@gmail.com"}).
WithCommand([]string{"config", "user.name", "Mark Sagi-Kazar"}).
WithCommand([]string{"commit", "-m", "update nginx to 1.21"}).
Command([]string{"push", "--force", "origin", "update"}).Output().Directory().Sync(ctx)
if err != nil {
return err
}
// TODO: Mount a directory to the container to allow using fill and other parameters
// TODO: add cache busting
_, err = dag.Gh(GhOpts{
Token: githubToken,
}).Exec(
[]string{
"pr", "create",
"--head", "update",
"--title", "Update nginx to 1.21",
"--body", "Update nginx to 1.21",
},
GhExecOpts{
Repo: "sagikazarmark/my-kube-fleet",
},
).Sync(ctx)
if err != nil {
return err
}
return nil
}
Modules used:
{
"name": "gh",
"source": "github.com/sagikazarmark/daggerverse/gh@a7addb5a2ae6cef541a75072238df99e14e0e0af"
},
{
"name": "git",
"source": "github.com/sagikazarmark/shykes-git@b973be02cade81399d3431fcde4b4dc8b6b9b26a"
},
{
"name": "kustomize",
"source": "github.com/sagikazarmark/daggerverse/kustomize@a7addb5a2ae6cef541a75072238df99e14e0e0af"
}
Lesson learned: it's easy to forget about caching, until it bites you. 😄
Hey! Just curious. Is there any sort of public roadmap on a high level for the project? 👼
Hey everyone! Reminder that our community call starts soon. See you all there!
https://dagger-io.zoom.us/webinar/register/1117073474198/WN_j_xRpP1ASb6xrM4AiRKRnA
Join the Dagger team and community to learn about the
latest updates and see neat community demos from Daggernauts just like you.
We do the call on Zoom and the live chat on Discord, so make sure to join our Discord server too: https://discord.com/invite/dagger-io
Want to submit a demo? DM mirandacarter on the Dagger Discord, and she will get...
👋 we're starting in a minute 🙏
chat here 👇
Hello! Joining in from Vancouver, WA, USA!
👋 Marcos from 🇺🇾
Heya y'all ❤️ Justin from the UK here 😄
Greetings from Switzerland
Nipuna From Fort Worth, TX, USA
Hi from Iowa!
hello from Portugal everyone
I'm in California today
Hello from Menlo Park CA
Michigan here 🥊
Dude, we should meet in person sometime
Happy to! I'll DM you...
chat here then 🙂 ...from Chocolate land
@inland coral : I'm in los altos and I have to go to Ikea today
@analog cape Chocolate like Venezuela or Chocolatelike Mexico?
@timber crater like Switzerland 😉
Justin, could you please move the zoom user list from the middle of your screen or minimize it? It's covering your IDE
👋 Portland, Oregon!
Durham, North Carolina here
"The road to hell is paved with the latest tag"
This is very nice, @warm temple !!!
👏
up for debate 😂
nice demo in ... more than 5 minutes 😇
I would say in this case, especially since we're not depending on any specific alpine packages or anything, latest is more appropriate than a tagged version because you're less likely to introduce a CVE
+100% It's just that as you get close to release, it's important to start pinning that stuff down...
if we were talking about an alpine container inside the execution context (the dagger part) of our pipeline, I'd lock it to a sha to ensure repeatable outputs
@sharp marsh , nice diagrams btw
Oh, this is very nice
I have a rather urgent, personal use case for this... I'll DM you @sharp marsh
youtube-dl 🙈
what a coincidence 😇
🧨 🤯 🚀
the 1983 me is really glad that I lived long enough to see this.
hmm ... does it "translate"?
like, question in a different language for an EN video, and the other way
Python all the things.... 🧐
👏
...of course....
Is anyone going to Pycon in Pittsburgh?
Bravo ! 😍
this last one might be a great demo for that!
KOH HO NUDO !!
here's the article I mentioned in my presentation: https://kenkantzer.com/lessons-after-a-half-billion-gpt-tokens/
My startup Truss (gettruss.io) released a few LLM-heavy features in the last six months, and the narrative around LLMs that I read on Hacker News is now starting to diverge from my reality, so I thought I’d share some of the more “surprising” lessons after churning through just north of 500 million tokens, by my […]
If you wanted to orchestrate some port forwards to the host for a developer as one specific part of a set of dagger available functions instead of requiring kubectl on host could use use services and coordinate all the port forwards? This is exploratory work on where dagger would make sense vs tilt for development debugging and orchestration. So just interested in seeing if it would be a good use in your mind or wrong type of automation. Maybe also any experiments anyone has done on serving locally on https and easing encrypted local traffic with no fuss?
Yeah that sounds super reasonable! I've been thinking of working on a demo where you pass in a k8s endpoint as a Service, along with maybe a kubeconfig, and do the rest in dagger. Can even have a kubectl terminal. Unsure about the encrypted traffic part though. I'm sure it's possible but unsure about "no fuss" 🙂
yeah it gets muddy here for sure (why tools like https://anchor.dev/ are there i suppose).
Dagger is really cool it's just hard for me to figure out where I want to dry the line vs what I did with mage or trunk (that's another discussion if you feel like hearing the "devil's advocate" position, despite being a big fan 😀 )
Just wanted to get opinions on this build, are there any things I am potentially overlooking or limitations to Dagger that could make this impractical?
My wife and I aren’t great at managing our expenses. We have tried a few free budgeting tools, spreadsheets etc, but I am convinced that what would help us is receiving an SMS every 3 days with actionable insights on our spending habits & personalized tips based on our changing financial goals.
As a solution to this, I am looking into building a pipeline of Dagger methods that are triggered by a lambda function every 3 days. The Dagger methods would;
i.) receive financial data (ie. personal transactions),
ii.) POST the data to a database
iii.) retrieve current and historical data from the DB
iv.) send this data to an LLM model to generate insights regarding my spending habits and actionable insights based on my spending/saving goals
The output would be received by a Lambda function that will trigger Twilio to send an SMS to me and my wife with this output.
Justification for using Dagger
Because Dagger is running everything in containers, I know everything is running in isolation, this seems beneficial for security especially since I am dealing with sensitive data. I can pass the output from one method to another so it would be easier to identify and fix points of failure. I can use Dagger’s secret management to handle API keys for my DB, Twilio etc and I know that if an error occurs somewhere in the pipeline because of Dagger’s caching, the process can be resumed from the last cached point.
That sounds like a fun project 🙂
The output would be received by a Lambda function that will trigger Twilio to send an SMS to me and my wife with this output.
Why not make the twilio call from a dagger function while you're at it?
Here is how I release my dagger modules:
just release helm
# or if I want to patch
just release helm patch
https://github.com/sagikazarmark/daggerverse/blob/main/justfile
love this, I am obsessed with justfile 😂
this is a good opportunity for me to plug my novu module that supports twilio already 😄
Thanks. I think I might look into @slender charm's novu module for that
After the functions feature, what are bigger things coming in the dagger?
Hey folks! 👋
After the recent functions release, I (finally) fell in love with Dagger. Great stuff!
I spent a bunch of time digging into the implementation details, and now I can't help but think of creating a small practical introduction to Dagger on my pet learning platform (https://labs.iximiuz.com/). Wonder if there might be any objections? I looked at https://dagger.io/trademark-guidelines, and it's quite a restrictive document, so I'm a bit worried that I may put a lot of effort into it and then someone would ask me to take it down.
Cheers
Ivan
hey Ivan! great to see you here 🙌 . I saw your tweet this week and I already sent a message internally a few days ago to make the trademark thing work. Even though I don't have the final decision, I'd say to keep working on your introductory tutorial since we'll find the way to make it work.
let us know if you have any questions or there's anything we can do to help
silently pinging @chilly arch and @slender star
👋 check out #daggernauts
Oh, lovely! Thank you, Marcos!
Thanks for the kind words! Most of the restrictions in our trademark policy are specific to redistribution of our software. Besides that, you are free to use our name in your material as long as it's not confused with official material by Dagger.
We love it when the community writes articles and learning material about Dagger, and will gladly help you produce and advertise it. Thank you!
Also if you found specific parts of the trademark policy confusing, please open an issue and we will address it!
Thank you for your answer! Appreciate it!
Let me clarify my concerns a bit. On my "learning platform" I'm trying to provide the learning-by-doing experience. In addition to textual and visual materials, there is also a number of hands-on playgrounds (https://labs.iximiuz.com/playgrounds/) and interactive challenges (https://labs.iximiuz.com/challenges). So, I'm particularly concerned that I'll need to create a page with the title "Dagger Playground" that will give students (free) access to an ephemeral VM that has Dagger pre-installed. In particular, I'd need such a playground for Dagger-related challenges (e.g., "Can you write a Dagger module to build this project?") that would augment my written materials, and hopefully help people start practicing Dagger faster.
I don't think that there is any threat to your trademark, but on the other hand, some "software" part is involved, so I wanted to double check.
I liked this a lot. "you don't need langchain" is a conclusion I have also reached recently.
I use Iximiuz labs for training on advanced containerization tooling and getting dagger challenges on that platform will be a great way to expose thousands of other devs on how to use dagger. I have been struggling with various issues with dagger in my experiments lately and I think it is basically my lack of experience with the patterns needed in either python or go to get a pipeline quickly setup on my own. for example, I can't get this example go pipeline to work with the commands given despite trying to get it to work for a few hours. https://www.youtube.com/watch?v=RgE7Y2Lvxro&t=3624s
Application delivery doesn’t have to suck. Solomon Hykes joins Nirmal and me to talk about Dagger and their application delivery-as-code that runs anywhere.
Reminder we're on Eastern Standard Time (EST) now here (UTC -5). Click Notify Me 🔔 so you get notified.
⭐️A special thanks to this episode's sponsor, Uffizzi!⭐️
👀 Uffizzi is a platfo...
here's a fantastic pattern repository to help catapult users https://github.com/aws-samples/genai-quickstart-pocs/tree/main
Dagger. Do We Need It? (Ep 241)
Otel strikes again
internal/telemetry/proxy.go:50:14: cannot use proxySpan{…}
@cloud canyon 👆
Hi folks, Does anyone have experience cache busting dockerfile builds?
We build multi platform images using the go sdk's FromDockerfile and I've been experimenting with varying placements of WithEnvVariable("NOW", time.Now().String()) and WithDefaultArgs([]string{"--no-cache", "-v"}). without any success so far (each step in dockerfile during build is cached)
hi @keen brook ! Nice to meet you and thank you for offering to build a tutorial. As Solomon mentioned, we love this type of content and I will be the one to work with to help promote it. I'll DM you, so we can discuss any of your trademark concerns further.
That shouldn't be a problem. As long as it's not confused with official material, and your environments use an official build of Dagger, I don't see any reason it would infringe. We are happy to get on a call with you and double-check together, to put your mind at ease. We've never enforced our trademark in relation to learning material (that I know of), it would take something really drastic and obviously bad for users to do so.
I think the more relevant topic for you, is whether we can invest more resources to help you, like starting an official partnership program around teaching Dagger. That's something we've discussed before. I'm sure @chilly arch and @slender star will be happy to talk about that with you as well!
Great, sounds reassuring! 🙂
The plan was to use only official Dagger builds and "standard" installation methods since the goal is to get people started with Dagger faster (and not confuse them with extra magic). Official partnership sounds very interesting, would very much like to discuss it in the future. For now, I'm already happy that there won't be any trademark concerns 🙌
So, here it goes then:
- playground https://labs.iximiuz.com/playgrounds/dagger
- the first challenge https://labs.iximiuz.com/challenges/install-dagger-on-linux (not listed in the catalog yet)
Baby steps 🙂
Hi Miranda, glad to e-meet you! 🙌
This is so cool!
I couldn't help myself 🤣
Otel strikes again
I'm giving a 4 hour Dagger workshop in about 8 weeks time!
🔪 Cutting edge pipelines with Dagger and PHP
I'm gonna need some support/help on what are the right topics, end-to-end, to teach people, to get me started
I'm also happy to then convert that to non-PHP and take Dagger into other communities, as we progress into 2024, so it's a worth while investment of your time, helping me 😄
🤘
Happy to help!
I'm actually looking at improving PHP support (ie. build some modules) in Dagger.
Okay, I've been trying to use dagger for a while, because I love the idea of compartmentalized and modular build components, but... I just can't continue with it. I'd like to share my feedback. Maybe I'm doing smth wrong and someone will guide me through...?
PHP workshop
Daggernauts, have you been wanting to tell your engineering leadership about Dagger?
We have a few invites remaining to an event we're doing May 22nd in SF with Redpoint Ventures for senior engineering leaders, where Solomon will share his vision for the Software Factory of the Future.
If you are interested, please DM me for the invite link.
I think Solomon should know I see a a 90.4% codebase refactor upgrade potential with dagger 😅 jk. sort of.
I think Solomon should know I see a a 90
This is a two-pronged question/observation;
- How is the description populated? I published a Typescript module. There is no description long or otherwise:
https://daggerverse.dev/mod/github.com/EmmS21/daggerverse/createSvelteTests@7e849aa2b637867da05d00a5bf3391cbddd1c2f0
Despite the code I pushed having multi-line comments right after I declare the class name for the module:
https://github.com/EmmS21/daggerverse/blob/main/createSvelteTests/dagger/src/index.ts - For one of the modules I built, I published the module while it still contained auto-generated comments. Even though I have since changed the description, the changes are not reflected in the Daggerverse:
https://daggerverse.dev/mod/github.com/EmmS21/daggerverse/runTests@841e041068a19582e35cd6f56bf4f12df9d6ea0a
GH: https://github.com/EmmS21/daggerverse/blob/main/runTests/dagger/src/main.py
A Dagger module to run unit tests implemented using Jest in a containerized environment on a NodeJS project - EmmS21/daggerverse
- The descriptions are at the top of the module. When you
dagger initanddagger develop --sdk typescriptyou'll see the sample short description as the first line of the comment block, and the long description as the rest of the comments in that block. You're doing it in the Python module we're talking about in item 2, just not at all in item 1 at the git sha you referenced. Didn't look to see if you fixed it inmainbranch.
- I see that you've updated your top comments in the
mainbranch https://github.com/EmmS21/daggerverse/blob/main/runTests/dagger/src/main.py at commit92f8dd7bb050c21099f1eb2b3c590766d8ad01f1but I'm guessing you haven't published that version to the Daggerverse yet.
edit: We'd made Daggerverse only show tagged modules, but will likely go back to showing both tagged (released) modules and pre-released/in-development modules, with perhaps different views for each.
How to update all your Dagger dependencies:
cat dagger.json | jq -r '.dependencies[].source' | cut -d '@' -f 1 | xargs -L1 dagger install
https://twitter.com/sagikazarmark/status/1788527291800170928
How to update all your @dagger_io dependencies:
cat dagger.json | jq -r '.dependencies[].source' | cut -d '@' -f 1 | xargs -L1 dagger install
seems like something that could be a dagger function 🤯
I remember @winter linden created something similar/related recently.
So if I publish a module and make changes to it, do I need to either manually republish the module or call the module for it to be updated?
Correct, either of those options will update the module in daggerverse
Out of curiosity, wouldn't it be ideal to update the module when I push changes to the repo of a published module?
That would be even better. It's just harder for us to do. But you could add a CI trigger that published the module perhaps?
It's great to see Daggernauts sharing how Dagger Modules and Functions have helped them.
Thanks for sharing your Dagger story with us @fierce sandal !
I'm giving a lightning talk on Dagger next week. What are the top points you think I should make?
Nice! I guess it depends on the audience. How technical they are, how application-focused vs. infra-focused..
Hard to say, got roped in lol. My understanding is that it is devops focused but the level of expertise is unknown (maybe more app devs than devops there?)
I'm thinking I want to make it a bit of a "sales pitch" and cover enough problems/solutions to get them to check it out on their own
Would it be fair to say Dagger Functions can be used like the GHA actions you import, but you can write them in your fav language and they can use each other?
more or less it's fair to use. If you're going to compare with GHA, you could also mention able to run locally, no need to maintain ci/cd workflow and local make file etc
Yup, one of my things is getting my CI down to a single line (or a few anyway). Move away from using the constructs in the Yaml to real languages
I was doing this before I adopted dagger, which makes it easier
make sense, I have one talk at DevConf CZ next month. This is one of the highlights of that talk. Programable CI/CD
Jenkins has been programmable CI forever. I think what Dagger brings is moving that programming out of the CI system and giving it back to the user
Dagger Presentations
I'll look into this, thanks. Out of curiosity what are some of the barriers of updating the module when I push changes to the repo?
Basically Daggerverse is a search engine. It crawls git repositories for dagger modules, and indexes what it finds. Then you can search or browse the index.
Ideally daggerverse would instantly crawl all new commits to all repositories everywhere. But that's very costly, so we "cheat" by relying on external events:
- You can manually trigger the crawler, either in the web app at daggerverse.dev, or with the (experimental, unstable)
dagger publishcommand. You can run this from a dagger pipeline if you want 😇 - When the engine loads a module, it sends anonymized analytics with the git remote of that module. Daggerverse uses those events as triggers to crawl the latest version. We call this "index on use" , similar to how go modules work
Ok, the first one goes https://labs.iximiuz.com/courses/dagger/what-is-and-why-dagger?x=1. Feedback is highly appreciated!
Got it, thanks
is the DAG view going to come to dagger v11+?
hadn't looked in a while, just downgraded from v11 to 10 and the dag view is killer
hadn't looked in a while, just
I've built and published multiple modules for this build, is searching for my username in the Daggerverse the only way to see all the modules I have published?
I've built and published multiple
Is there a way to do a "FROM scratch" with Dagger?
dag.Container() produces an empty container
perfect, I imagined it was something very simple
Been doing a lot of 'daggerizing' to build a pipeline to help my wife and I build better spending habits by getting SMSs with personalized advice from AI regarding our weekly spend that adapts based on our feedback
In a nutshell built a modules to:
- get data from a spreadsheet (Tiller integration to populate the spreadsheet with data from our bank accounts)
- compare data with data written to MongoDB database to filter for new transactions
- use a zero shot model to categorize each transaction based on pre-defined categories and the description of the transaction
- write the data to a MongoDB database
- use Atlas search to aggregate the data by week and category (ie. spend per week by category with each transaction and a total for each category)
- generate financial advice using AI based on this data. This module stores the history of the conversation in MongoDB
- respond to AI, factoring in this feedback to modify future advice given by my generate function
Will write a more detailed blog on this soon
LinkedIn post: https://www.linkedin.com/posts/activity-7196232038717227009-vnoj?utm_source=share&utm_medium=member_desktop
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
Sign Up | LinkedIn
Hello!
We are evaluating dagger to replace our massive Jenkins setup 😅
We are using https://github.com/abiosoft/colima for local development. Has anyone had experience running dagger on top of it?
Hey!
I just tried running one of our workflows in Dagger on colima and it looks like it's working, but it's super slooooooow.
I wonder what your use case would be to run Dagger on top of colima. I mean, Dagger could kinda replace colima in its entirety (except maybe for Kubernetes)
Hello!
**🎉 Dagger Community Call Tomorrow 🎉 **
@fossil pine @fierce sandal @wispy tapir and @sage veldt will present a variety of topics at tomorrow's Dagger community call. We look forward to seeing everyone there!
Use this link to add it to your calendar: https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
If you are a <@&1113692044158836736> fan, you'll want to see Tom's demo about the latest updates.
In the early stages of planning a Dagger talk at a public event (potentially next month as part of https://technext.co.uk/). Couple of questions for the Dagger team...
Despite reading the doc, I still struggle to understand the difference between 'dagger call' and 'dagger run'.
In which case I use one or the other ?
Despite reading the doc, I still
What replacement are you referring to?
does anyone have ideas on how to explore the container volumes created during a dagger pipeline?
if you just need to poke around in a shell, you can use terminal. so if your module exposes the container as foo() you can do dagger call foo terminal - or add a function that returns a Terminal, for example: https://github.com/vito/bass/blob/6ad2902d4a9011a17efc03c92a45dea3cdb33abc/dagger/main.go#L136-L138
I think this could even be a one-liner by calling the Wolfi Daggerver module probably and just use the chaining API 🤔
Hmm no you can't because WithMoutedCache expects a Cache volume 😦
it actually works, that's nice. dagger -m github.com/shykes/daggerverse/wolfi@3338120927f8e291c4780de691ef63a7c9d825c0 call container with-mounted-cache --path /cache --cache foo terminal so if you don't have any function that return a Container, you can still do it
Dagger Community Call starting in 2 minutes. See you there! https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
Join the Dagger team and community to learn about the
latest updates and see neat community demos from Daggernauts just like you.
We do the call on Zoom and the live chat on Discord, so make sure to join our Discord server too: https://discord.com/invite/dagger-io
Want to submit a demo? DM mirandacarter on the Dagger Discord, and she will get...
Hi! Joining in from Vancouver, WA, USA today! 👋
maybe the numbers are like 'this is daggernaut #347' since that's where the names normally show up
Star lineup for today's call!
👋 joining from 🇺🇾 🧉
Good morning from San Francisco, it is foggy and cold here today but I look forward to warming up to the glow of awesome Dagger demos 🙂
👋 hello from Toronto, where we're finally getting patio weather
Hi, joining from 🇫🇷
Hey all! Greetings from Karlsruhe, 🇩🇪 !
Salut. Joining from Switzerland.
hey everyone , i'm utkarsh joining from india 🇮🇳
👋 from CA, USA 🧉
Hello from NYC
Hello from Portland, Oregon, USA! 👋 Going to be a beautiful day!
hello, everyone
Joining from Porto, Portugal
hello from Fort Worth, TX
Hi , joining from 🇲🇬
glad it was helpful!
idea for future community calls: it'd be great to have a quick intro summary about what has been happening in the Dagger project. Releases, roadmap, general announcements, issues that require 👀, etc cc @winter linden @chilly arch
"daggerlang" you're giving me ptsd 😛
There may be a path to supporting native auth helpers in the future 😇
Taking VIM to EMACS level!!
livecoding!
that's an odd looking VSCode theme 😄
catppuccin best theme
I noticed that terminal bug yesterday, I had never seen it before
inlined command as secret is just so great
yeah TIL
So this is basically a reimplementation of the Dagger API's withRegistryAuth but usable by userland tools?
Feature request: could you bundle helper tools for well-known cloud registries, and use them to authenticate against Google Cloud, AWS, Azure registry and so on? 🙏
Thanks for the demo @fossil pine !
Great one, @fossil pine! Really like to see this being more standardized / modularized.
sure 🙂
thanks for the demo too
<@&1113692044158836736> Dagger users, @wispy tapir is about to present the latest updates. Join the community call to see https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
@fossil pine I volunteer for a pairing session on the "secrets provider" interface idea, it's been on my mind for a while, would love to scratch that itch
I really loved that helm demo, virtualize all the things
python: 
go: 
typescript: 
let the flamewars begin (i just wanted to use the emojis please dont hurt me)
the pull request
odd looking VIM UI here.. 🤔
"You can't really optimize module initialization"
How dare you sir.
Anyone aware of some initiatives integrating 1password service accounts? https://developer.1password.com/docs/service-accounts e.g. to make use of the op templating features?
Quick advertisement: the Traces UI that Tom is showing is a free feature of Dagger Cloud 🙂 https://dagger.cloud
@fossil pine @winter linden made the bug issue - https://github.com/dagger/dagger/issues/7393
have you tried with bun, I don't know if the sdk with typescript would work with bun ?
Let's do that! I'm free next week Thursday and Friday.
@analog raven can you DM Mark to coordinate?
Done!
I know there's been some experiments done by Tom here. Let's ask!
Traces feature request: any chance we could make that "duration" info its own column? 🙂
thanks for the answer tom
Traces feature request: would be super cool to have at least some of these visualizations in a local TUI.
I didn't fully get something Tom said RE: running a shell command is slower than running a function withExec, mind repeating and expanding onthis a little
@wispy tapir, there's more optimizations in Python, see if https://github.com/dagger/dagger/pull/6884 gives you some ideas.
I think breaking up one big WithExec shell command into multiple smaller WithExec calls so they can be better cached
In some cases it's better to put logic in the Go module itself rather than using WithExec. Especially if using a .ts script to do some of the setup.
Thank you @wispy tapir for the updates! Looking forward to seeing people's feedback
Yeah I had a look at your PR, my target is to use pnpm at the end of the day but it's quite unstable in the runtime
Yeah definitely, I could gain 1 or 2 seconds from the setup
There's other tips beyond uv in there.
🤯
See last list before "Configurability".
Yeah I know, I'm trying to work on the cache invalidation, that's pretty complex but I'm making progress
The weird thing is that my pipelines with the new engine are quite slow sometime (same as before) and sometime super fast, I'm digging into this instabilitty because it's certainly due to cache invalidation.
Same for concurrency and stuff, I'm going step by step, mounts etc...
@wispy tapir thanks for the demo, I love the focus on performance improvements, it makes a big difference on the user experience.
And we will optimize module loading too 🙂
Yeah I've been working on that for the past weeks, Cloud is super useful btw to understand what's going fast/slow, I couldn't have done it without it
happy accident - Tom shares TypeScript updates and then Emmanuel shares a TypeScript project 😂
Hopefully he can make it faster soon 🤣
There's been issues with caching related to that and it's not TypeScript specific. Maybe:
(we're just missing the suspenseful music)
Yeah, that could definitely be related
@fierce sandal would it be generalizable to other languages / frameworks?
Don't worry about the slides @sage veldt
@fierce sandal So did I see the tests run and fail because they caught an issue? (at end of the video)
"I've seen Marcos's tweets" it's OK you can say it 😛
we just need code 🥲
Is that livestream on youtube?
I would have to make a few changes and carry out a bit more testing but it should be generalizable to other languages
Dagger is a programmable tool that replaces your software project's artisanal scripts with a modern API and cross-language scripting engine.
Join me as I learn about what Dagger is and how it works!
If you like the video, consider subscribing:
https://www.youtube.com/c/peterjausovec/join
▬▬▬▬▬▬ Resources ▬▬▬▬▬▬
▶ Dagger: https://da...
We change the terminology every week to keep things interesting anyway
It's a mixture, for the most part they actually caught issues, but a few of the tests (1 or 2) are failing for other reasons (incorrectly referencing an element that is being tested)
very cool demo! Thx!
That's a ridiculous amount of config just to proxy to httpbin 😄
@warm temple watching that envoy proxy module
https://tenor.com/view/chris-pratt-rubbing-hands-smile-happy-plan-mischief-gif-11789692
I personally am excited because I've always wanted to use envoy, but am too lazy to learn how to configure it
How are you thinking using Dagger going forward? What's next in your learning/usage path?
Having spent dozens of hours perfecting modules, I can absolutely stand by the advice "Start simple" 😄
Any suggestions from other panelists regarding where he could take this next?
thanks for all its always a pleasure
Awesome demos!
thx everyone for a great community meeting 🙌
That was really great! Thanks all.
Should we do this? 👆
Amazing demos today!!
yes please
I'm just worried it will eat too much time from demos
I think it can be time boxed. e.g. 3 things in 3 minutes the team improved in the last two weeks.
2 hour community call? 😇
Here are my modules:-https://daggerverse.dev/mod/github.com/EmmS21/daggerverse/createSvelteTests@38a944be8fb2b71336dee507f6088822ec5f32f5 (Create Unit tests)
- https://daggerverse.dev/mod/github.com/EmmS21/daggerverse/runTests@841e041068a19582e35cd6f56bf4f12df9d6ea0a (Run Tests)
and the blog detailing my build:
https://emmanuelsibanda.hashnode.dev/a-dagger-module-to-generate-unit-tests-for-a-sveltekit-project-using-ai
Thank you @fossil pine @wispy tapir @fierce sandal and @sage veldt for speaking at the communtiy call today!
If you missed it, here is the full recording:
https://dagger-io.zoom.us/rec/share/R5gUJXAjlv4ork7unFUrAKK2hIiJiqIfS6KC9S_DicfAOd9Z2fOPZwXPnSFkPtYk.mAy543ktsMF-HEIU
I will add the demo snippets to the demo forum soon!
Heads up, I'm going to livestream myself daggerizing something with @warm temple in @slender star . I've never done this before so it might be messy 🙂
How do we tune in?
suggestion: instead of "gif", this could be "svg" with animation to have a better quality & selectable text
The docusaursu module does not build yet 😭
It only serves haha
I am so sad haha
Like the build step only gives you cached docusaurus but it does not build your docs yet
Yes @winter linden - src needs to be dagger/dagger
@slender star dir needs to be "src/docs"
@warm temple this a quirk of how dagger/dagger docs are structured - we depend on a file outside of the root for some reason
Yeah we should probably have a look at that
@winter linden maybe Cache: false is not being respected, because it's a zero-value; that'd be equivalent to not passing it
also, pay no mind to the frontend: null, it's also a pointer-related UI bug
cc @slender star or @warm temple 😛
oh no
I am confused by this - did I use bool improperly? lol
it says "views" not "viewers" 🤷♂️
ah yeah
"views"
Can you run two separate services on the same port like this though?
Even though you are saying 3001:3000 the 2nd value is still 3000 twice
not really, it's just an awkward intersection clunky things, supporting true defaults means you need a pointer to distinguish false zero value vs. unspecified 😦
so we probably punted on that because dealing with pointers is annoying
Go structs don't differentiate between you setting a field or not; they're always initially allocated to the zero-value
so to avoid pointer hell, we must be doing a IsZero() check to determine whether to set the arg
so the workaround would be to invert the flag to something like NoCache with default false
yeah
it's possible that an 'optional boolean' is possible to express in some SDKs but it has to be respected on the calling SDK too, which brings in the pointer clunkiness
This really opens up the convo of should modules use cache volumes at all - feels like this is prone to errors like this
Do you have an opinion on this @elfin frigate or @warm temple
Please speak to this on the stream, the world wants to know 🙂
jury's out as to which is the lesser evil: fully supporting it and forcing people to use pointers here and there, or enforcing codifying the Go style 'try to only default to false everywhere' convention
@winter linden re: withExec => npm start, that "gap" between the lazy installation and the eventual effect is meant to be covered by those 'shadow bar' thingies, but in this case it's a service start, which runs via the gateway, rather than regular execs, so it's missing the necessary data to tie the two together.
so - what should happen is you would see a giant shadow bar to the right of the withExec(npm start) that would link you to the "real" place where it runs (via up). We'll just need to manually connect the two with some span attribute shenanigans.
Awesome @winter linden @warm temple @slender star - really fun to watch
visualizating 'npm start' in Dagger Traces
@winter linden thank you for trying my module, I shipped a new version that I think addresses most of the issues you ran into 😄
notably - build actually builds your production site now (great idea!) which makes all retries much faster.
there is serve and serveDev - serve serves the built site, and serveDev now builds and serves the dev version of the site.
For cache volumes I implemented both the reverse logic for using or not using the cache and introduce cacheVolumeName to allow people to create their own volumes on the fly to avoid collisions.
Some awesome updates! Nice work!
Nice! If you wanted, I think you could have it just take a CacheVolume object directly, and from the CLI it's the same UX since it parses a word as a cache volume name. Doesn't make much difference now but I think in general passing around objects is a better practice, for flexibility in code
hi, when i try to run dag.Container().From("scratch") it ends up throwing ! failed to resolve source metadata for docker.io/library/scratch:latest: docker.io/library/scratch:latest: not found, but i just want to make a container from scratch. is there a sanctioned way to do this? thanks
You want just dag.Container() - it's the same thing. My guess is Docker special-cases the word scratch in a Dockerfile to mean that - it looks like an image ref, but it's not.
oh, that makes sense, thanks
hey all, has anyone had success running renovatebot container with dagger v0.11.x yet?
Thanks! I’ll look into this as another improvement. I agree passing objects is much better.
@slender charm working on an updated PR right now 🙂
Have a little scout PR https://github.com/levlaz/daggerverse/pull/6 🎉
Oh nice, just did exactly the same thing. Well, didn't realize there was a docusaurys module, I'll try that out.
Nice! If you wanted, I think you could
can i convert a go fs.FS (specifically an embed.FS) into a dagger Directory?
here's some code you can yoink: https://github.com/vito/bass/blob/6ad2902d4a9011a17efc03c92a45dea3cdb33abc/pkg/runtimes/dagger.go#L556-L579
I've done this a few times.
oh that's nice, ill do that. one wishes it could be part of the SDK though?
Also have an implementation of an fs.FS for a buildkit ref.
yeah likely worth adding - feel free to open an issue! so far we've kept every SDK fairly restrained to minimize surface area, but fs.FS is such a common thing in Go these days, it could cross the threshold into 'worth maintaining'
looks like we even had a guide for it in the old docs: https://archive.docs.dagger.io/0.9/110632/embed-directories
The good news is that we're bringing back the cookbook 🙂 So I guess this will come back too? @slender charm
quick issue: https://github.com/dagger/dagger/issues/7405
Hi I'd like to understand the pricing model, is it for the cloud service while the engine is FOSS?
Yes that's right.
Hello again dagger community - I'm trying the new dagger call functionality I initialized the env dagger init --sdk=python wurflDagger I see the folder ```(venv) venv ❯ dagger call container_echo --endpoint=google.com
✔ initialize 10.7s
Error: unknown command "container_echo" for "dagger call"
I'm sure I'm missing something obvious, and I promise I looked in the chat logs before asking this, but what do I need to get this to work?
hey Sean! IIRC the function in the CLI is defined with dashes instead of underscore. If you run dagger functions you should see how the functions are named
You're darn right!
we automatically translate the naming of function call to the conventions used by each SDK and the CLI. Generally in CLIs use the kebab naming for different words 🙌
Pretty excited about this build. It's already helping my wife and I have more discussions about our spending. I just wrote a blog detailing how I built a Dagger pipeline to send my wife and I SMSs twice a week with budgeting advice from AI based on our spending habits
Hey! I mentioned Dagger in my monthly newsletter 💙 https://buttondown.email/arsh/archive/may-edition/
awesome, thanks for the shout-out! Looking forward to getting you on the community call soon 😉
Hey all, wondering if there's a hack around the dagger terminal feature, when using docker, if you dont exec with interactive or bin/bash you get a really annoying experience in the terminal
im thinking if im doing something wrong or there is a limitation with dagger terminal right now? typos, not being able to err, 'backspace' in the terminal etc? I'm using the Powershell 7 terminal and using Windows Terminal.
...i found a way... I just need to type bash -.-
ignore me, im not a container expert (or linux) 😄
no problem @sick monolith ! Glad you got it to work. What's the command you ended up running? I want to make sure I understand the problem you encountered so we can prevent others from encountering it
dagger ... terminal -cmd bash
without that last bit, you still get into the container, but the experience is not nice
I see! makes sense
I think he is referring to the disappearing terminal prompt
hey all. are you guys aware of dagger website issues?
the website appears broken mostly from what looks to be content policy errors in the console log.
the website appears broken mostly from
hey guys - curious about the 11.x releases, and logging in the terminal... I'm not using modules, and basically get no output to my console (no more progress plain?) I think this was mentioned on one of the community calls... any intent to fix this?
Yeah, actively solving a mystery here: https://github.com/dagger/dagger/pull/7272
dope I'll follow along thank you!
https://docs.dagger.io/manuals/developer/secrets
Would this still be up to date since any secrets work?
does anyone have a source of links about dagger that may target larger orgs which are more reserved about newer tech to introduce that may help my case in making dagger still very appealing? we are using github and k8s, docker, hashicorp products like consul/vault. I have a demo next week for 3 scenarios I implemented with dagger but want extra fire power material as a finisher
I can see grafana has had some interaction. so I'll try to find any community calls around grafana using it. we use grafana quite a lot so that will relate well also.
does anyone have a source of links about
Anyone using Dagger as a programmable process control mechanism? With all the .service() hooks and dynamic container constructions the use case really isn't limited to CI/CD at all. For example, I'd imagine it'd be a very interesting way to run background workers.
I'm currently trying to use it to automate spawning long-lived containers on a remote machine and this container would require very dynamic configuration so I feel like dagger might be a good fit here to build the container image and run them on-the-fly instead of going through the usual shell scripting route.
100% 😁
My immediate use case for this: running the CI runner software on dagger. Then if the CI configuration makes dagger calls, they are nested dagger-in-dagger calls 😁
Actually this is likely to become the standard way to run Dagger on dedicated compute:
- Deploy Dagger Engine to a bunch of VMs or pods
- Engine is configured to run one function at boot - the "init function"
- The init function might be a long-running CI runner, but it could be anything. A webhook server perhaps. Or an ssh server.
- All subsequent dagger calls are nested via dagger-in-dagger
- Corollary: no more need for "experimental-dagger-runner-host": dagger no longer needs a remote access protocol just like the linux kernel doesn't need one. To be a linux "client" you need to be run by linux then make a system call
- Dagger is now an OS
first (baby) step is this: https://github.com/dagger/dagger/issues/6887
this confuses me to point of bringing up questions like "why would I use dagger when I can use docker" - Someone will ask this. A bit like how people got docker-compose mixed up with .NETs new Aspire framework. Or people confusing Ms Orleans with Dapper
Some would say Kubernetes is kind of an OS. you Run "anything on it". Services, Pods, etc etc.
I've noticed a few CLI tools now have "example use" by vol mounting and then running a cli tool via the image. Would the website also be updated to include that kind of method of using the cli tool?
vscode devcontainer
So i could use a dagger base image, then run dagger functions inside a dev container, which spins up other things such as dagger services (mock aws, with localstack) and use terraform inside dagger functions. all from a .devcontainer. That seems cool
My immediate use case for this: running
Back again. Worked on both an RFC but something we tend to consider is a Roadmap. Hashicorp usually have a roadmap of what's coming and going. Is there any official publically available information on where Dagger is heading and future? Or should people be mostly referring to Github Issues for a sense of direction and features to come or be deprecated?
Resources section has been useful to extract features and use-cases and the blog has also been good to see major features.
Dagger is yet to have a 1.0 release and im not sure if this is something that some may interpret as "not stable". Any direction for me to go with collating information on Daggers "stability" and future?
@sick monolith Terraform went many years before reaching v1.0, but was largely stable from 0.10 onward, so I'm not sure version number is a great metric for stability, as it is for signaling commitment to backwards compatibility.
From my pov, Dagger has been evolving the DX, yet the lower level API has remained stable. I personally find the newer function paradigm a bit heavy compared to the older "main entrypoint" style, so I hope it keeps evolving.
I'll let the Dagger team point you to where to get updated and stay informed, re: roadmap and such
yeah, this a fair point. I think even internally, we've been using K8s operators and many other things still considered alpha, so i dont think we're only commited to stable solutions. Same goes for terraform tho we have in the past had some painful upgrades maybe would not be the case if we "held off a little longer" but this is the case in our industry anyway, forever evolving. Would certainly be interested in some kind of public official roadmap either way, buts a good point and if others within raise anything around versioning, i think i'll use your point and say versioning is about compatbility not stability
One thing to be aware of, if you have multiple projects using different versions of the SDK, running them may churn the engine in the background. I hit this before, as each SDK wanted to start its version of the engine. I know they are aware of this, but not sure where it stands today. I assume better because of the push on the function DX. Might get into issues where a module you depend on updates to a newer engine version than you run. Hopefully this doens't cause your engine to restart on a newer version automatically, would prefer a compatibility error
Do you think a pure GraphQL approach (non SDK) is still a viable approach? I see the docs have been updated but the old 0.9 seems to have way more information and it looks like using GraphQL directly was seen a sound way to use Dagger
yes GraphQL layer is still the same, it is stable and supported. The client bindings are still generated from it in the same way. We are still porting over information from the 0.9 docs.
What 0.10 added with Functions is that now you can extend the GraphQL API, and generate your own client bindings for that. That's a significant expansion of the UX, and we've restructured the docs to fit it in. But through all this, the core GraphQL and codegen tech have remained stable.
This doesn't happen with modules. We try as much as we can to make functions backwards compatible so you'll get an error if there's two modules using different engine versions that are not compatible with each other. In the case that there's no compatibility conflict, Dagger will run all the functions with the root's module engine version
FWIW we are actively working toward a stable 1.0 release, thats the main focus of our short term efforts. A big part of that is DX polish.
can dagger stream container shell data in realtime now?
Mark your calendars for the Dagger Community Call tomorrow! @sharp marsh @wraith niche and @pseudo stream have great demos ready for y'all 🙂
Use this link to add it to your calendar: https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
I just updated to 0.11.5 stable, and seeing more details on the "connect" phase, with progress bar on checking for latest engine container, downloading it etc. That's on purpose right? I love the extra detail 🙂
Yes 🙂
Glad that the little progress fixes are noticed, there's quite a few little ones to discover
Any chance of getting a progress bar API in the future, so that my function can show cool custom progress bars to the user too? 😛
Hey folks. I was wondering if you had recommendations or best practices for deploying remote dagger engines, specifically with a focus on security. We would like to potentially deploy a fleet of engines to a kubernetes namespace but are concerned primarily with security as the engine needs to run elevated. I have been doing some testing, and it looks like there is some abstraction or isolation going on (much of my docker knowledge currently is pre-buildkit) but would love more information on the architecture, and safety of running these privileged containers. If you have architecture diagrams or could point to the code that isolates these containers, even better. I have been slowly spelunking through engine/{buildkit...} to try and understand more completely what is going on. Ultimately trying to decide if we need to treat dagger engines as root-run processes and isolate them ourselves -- we would only be running the engines here, not other containers that could potentially share a socket with any of the engines.
Progress bars
Hey folks. I was wondering if you had
**Community call starting in 5 minutes. **See you there!
https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
👋 Marcos from 🇺🇾 🧉
Checking in from Seattle!
Hello from California 👋
Hosting from Vancouver, WA!
This is Chris from Switzerland 👋
👋 from Portland, Oregon, USA
Good morning from San Francisco, I'm happy to report it's sunny here 🙂
Fort Worth, TX! It's definitely not sunny here.
Sunny here in Vancouver, WA today as well! 🙌
hello from England, UK across the pond from you guys
@chilly arch if there is any time at the end, I can give a few sneak peeks of new things we're working on
Deploying an app with SQL 
I work on container services, and I can't tell you how nice this is to see. This was on my to-do list after getting back from vacation this week to try to build a module just like this. So nice to see how dagger can take this flow and streamline so cleanly. Excited to build on this and add dagger to a few of these samples / demos
where is the snowflake instance running? Is that a dagger service running locally?
I'm curious if Dagger itself could run inside Snowpark 🙂
the fact you can just run "dagger call deploy" after making a code change is really nice too. One of the things I love about how dagger works
That's interesting, would this in theory potentially be a replacement for SQL management like flyway?
Yeah I had the same thought when I was chatting with Solomon / Sam earlier. Can see Dagger helping with places where Flyway exists today. Something I hope to chip away at (I work at Snowflake and we see lots of Flyway for SQL management)
The code of the demo 👉 https://github.com/samalba/snowflake-scs
The reason I ask is we're using fsnowflake + flyway AND python (for kafka publishing of some data there). Wondering how I could potentially demonstrate something here at some point.
oh cool! yes if interested would be happy to explore this with you. Or at very least I can keep you in the loop. Even if you have an example of your current pipeline (or a scrubbed version) can use that as inspiration for some of this
Containerized AI pipelines ftw
syntax highlighting 
Examples and tests in one -> amazing!
Dear santa: please give me CLI examples also 😛
There is one particular dependency of that particular module that is better left unmentioned 😛 cc @elfin frigate
unless you want the deep dive to get a whole lot deeper
@sharp marsh what was the module with the tests that you showed at the beginning?
here's the module source: https://github.com/marcosnils/daggerverse/tree/main/gptools
and here the daggerverse preview URL https://daggerverse-code-example.preview.daggerverse.dev/mod/github.com/marcosnils/daggerverse/gptools@3e633ea521eb5e001a0266408c3d0b3f381432d8
Thanks
me right now
"SDKs are just modules"
This means:
- Anyone can experiment and contribute alternative SDKs
- You can actually ship a module with a custom SDK, and have everyone use it on the Daggerverse, and they won't even know
That is actually happening in Erik's example right now, my wolfi module has a dependency on @elfin frigate 's apko module, which is written in a custom SDK using a custom programmaing language that @elfin frigate invented 😁
@pseudo stream You mentioned that same dependencies of different modules are cached and share state. What about versioning? Assume a module three levels down uses the same dependency as the root one, but a different version. Is a different module version treated like a different version?
The beauty of containerizing everything. No dependency hell 🙂
If anyone is coming back to Dagger after a few months of being away, we released this in February. https://dagger.io/blog/introducing-dagger-functions
If you are new to Dagger and haven't tried the quickstart yet, please DM me. We always looking for users who are willing to record their raw experiences and share them with us (either live or privately). The real-time feedback is extremely helpful to us.
I also have some Dagger swag for whoever does 😉
👍
👏 TTL caches
moar moar moar!
👍 for "Adopting Dagger". I personally like to start with looking at some more complex samples to understand how to structure my code in a good way right from the start. E.g. how to setup a reusable / multi-modules repo? How to do the versioning? How to integrate the "call side" into the regular code repo?
Next community call, we'll show a quick demo of dagger login
@sharp marsh @inland coral 💡
Love this overview and status update! Please do this more 🙂
Thanks for joining everyone!
Here's the list of updates I just talked about:
Coming soon in Dagger
- Stability and performance improvements
- Documentation improvements
- New quickstart, live now
- Bringing back the cookbook
- Unifying the developer manual - multi-language pages
- New section: "adopting Dagger"
- Improve support for calling the Dagger API without extending it
- Already works
- Will bring back the docs
- Add support for calling modules from an external client
- Improved support for locked down environments: custom certificates, proxy, less runtime dependency on public registry
- Context API
- Traces!
- Cache control
- Storage drivers (configurable cache backend)
- Improved production architecture (kubernetes..)
- Shell scripting
- Bringing back the README in Daggerverse
I can see grafana has had some
I forgot to mention on the call: we're hiring core engineers. If you're interested in contributing across the entire stack - from buildkit, to the engine, SDKs, CLI, and Cloud - contact us! You can DM me or @wraith niche
Hey Daggernauts, we are experimenting and adapting Dagger in cncf project goharbor.io (atm it's only the harbor-cli, but I have bigger plans)
One big disadvantage of Dagger is, that once you start using it, you go down the rabbit hole and start thinking to DAG everything with it 🤣
So now I am looking at how can best combine Dagger with goreleaser. Is the goreleaser resource in daggerverse the best start?
Heyo,
I just wanted to let you know that the new dagger run v0.11+ cli struggles on a full screen terminal when run in non gpu rendered terminals.
If I've got a service (rabbitmq, postgres etc) a large portion of the screen looks to be updated each tick (of the second counter) which in turn causes a full page refresh even though nothing other than the timer has changed. This causes excessive flickering.
Hey Daggernauts, we are experimenting
Hey everyone! Our friends at PuzzleITC are hosting a Dagger Meetup group in Switzerland. If you are in the area, it's a great Meetup group to join.
https://www.meetup.com/dagger_bern/events/301341810/
Their first meetup is on July 3rd 🚀
We can’t wait for our first-ever Dagger Switzerland Meetup! Dagger is a powerful, programmable open source CI/CD engine that runs your pipelines in co
Heyo,
with what technologies dagger cli has been developed?
Looking at the code it looks to be written in go and with a very popular cli framework, or do you mean more granular than that?
Cobra is the golang lib
Has any discussion of backstage with Dagger come up before?
Hey Patrick, I think "backstage" is a bit overloaded, can you point me to what you're specifically referring to? 👼
Maybe this?
https://backstage.io/
yes that's the one.
Well I did my first published module, its a small one but its something
I feel like ive abused the purpose. Maybe someone can shed light on that? For example, it's a CLI tool. I could have installed dotnet (I already have it, just assume i have nothing on my machine except docker and the dagger cli). I created a dagger module which pulls the git repo, builds it into a container, and essentially executes the cli tool with some commands. I see absolutely no use-case for someone else to pull the module into their own dagger pipeline. Its basically a dagger cli wrapper of a cli tool because why not.
Actually, said cli tool also wasnt dockerised. So there was a means to dagger for that.
The idea is that CLI tools often get wrapped in scripts. Then those scripts get wrapped in more scripts... By wrapping them once into a containerized function with a clean API, you can remove all those layers of messy glue.
I feel like ive abused the purpose.
Hey folks, I just finished another post on Dagger. Feedback is much appreciated!
https://labs.iximiuz.com/courses/dagger/writing-first-function?expand=all
Here is what I usually do when creating a new module:
mkdir dagger
cd dagger
go mod init dagger
dagger init --sdk go --source .
I think it's nicer than the .bak hack.
Good job!
@fossil pine question about your latest video about credentials caching.
I have the feeling that having the ability to explicitely mark Path to exclude sections of the FS from being cached is a more robust solution
i don't have enough docker engine knowledge to know if it's easily feasible though
It's more of a buildkit question, but I don't think this is trivial.
I agree that the solution I came up with feels unnatural when someone is used to how these CLI tools work. It's quite funny that we call them "cloud native", but they are not very container-friendly in this sense.
This is the best solution I could come up with given the circumstances.
the main issue with that is that it feels a bit hacky and it's definitely easier to run locally than on a CI server
I have been recently experimenting with Moon since Dagger doesn’t have support for corporate environments. Can anyone summarize the differences between these two products ?
Hi 👋 what blocks you for the corporate environment atm ? Dagger with other CI providers PR is marked as ready for review (https://github.com/dagger/dagger/pull/7511), with a path towards private repo handling too (in a follow-up PR). If this unlocks you, I would be very much interested in your feedback 👼🙏
Curious, what is "Moon"? Haven't heard of it before
Curious, what is "Moon"? Haven't heard
Hey folks. We are setting up our dagger MVP this week and noticed that modules are the suggested route for distributing dagger code, but also don't support authing to private git repos. Is this a feature you are considering? I notice you have an issue (https://github.com/dagger/dagger/issues/6113) but it is somewhat stale. Publishing our modules publically is not really an option for us in many cases.
so if you have a private git repo and reference it, it wont be able to use it, since its private and not accesible via -m github.com/ wihtout a form of credentials?
rambling about some dagger adoption and development usage
FYI, we have seen a couple of intermittent errors from the Dagger container registry that last 30m or so
@rigid pebble 👆
👋 . Thanks for the heads up @stoic knot! Checking now whats going on!
Is there a known issue with daggerverse module description formatting?
Dagger init
Hey! I had posted a question in #1030538312508776540 but now I'm unable to find it. Is there a way to filter out the questions based on who posted them?
was it this one? #1233395204653056040 message
i just used the from:@arsh filter in the search bar for this discord server
yes thanks! I kept trying to use filters in the search bar of the #1030538312508776540 channel and that wasn't working. I just found that the main search is on top right 🙂
Windows paths - Part 2
anyone using buildkite with dagger? discord's lack of exact search makes this very difficult to answer for myself 😭 (hits for buildkit)
just realize that it's missing from our integrations page. cc @warm temple https://docs.dagger.io/integrations. Any specific question about it @stable patrol ? I've used it in the past
I know @heavy gazelle has also been doing some work to integrate buildkite with dagger
I have used it recently and it worked for me - happy to help if you are running into isseus @stable patrol
just curious what patterns people are using
Its not really any different from any other CI prvider, dagger works more or less the same everywhere.
If you're using the legacy steps config in buildkite then you call your pipeline like this:
If you're using a pipeline.yml then it looks very similar to all the other CI configs
Any Dagger core team about? I'm working on the PHP dagger zenith module .. and we have some questions right now.
Helder is offline atm, who's been helping to date
We have some module-building queries
makes sense, i am investigating incremental strategies for adopting dagger into a giant monorepo with a lot of dynamic yaml gen nonsense
makes sense, i am investigating
Paris Daggernauts - Just a reminder to join us for the KuberTENes Birthday Bash with Dagger and Cloud Native France tomorrow! 🎂
https://www.meetup.com/fr-FR/cloud-native-computing-paris/events/301017346
@wispy tapir will be there to help answer any of your questions, and to celebrate with you 🙂
Hi all, quick update:
- Bringing back the cookbook
Shipped! We now have a cookbook again 🙂 https://docs.dagger.io/cookbook
- Unifying the developer manual - multi-language pages
Shipped! https://docs.dagger.io/manuals/developer
- Improvements to Traces
First batch of improvements shipped! dagger login to get started
- Traces from local dev environments are grouped together. You can see your team running pipelines as they develop, very fun and informative. (Make sure everyone logs into the same org, with
dagger login <org>) - Traces from CI environments are grouped together, and aggregated by pull request.
Heyo, I don't have a minimal reproducible example but since we upgraded to 0.11.x (currently 0.11.5 and testing 0.11.6) we've seen that sometimes our containers simply lose network connecitons.
I.e. an apt-get might fail with a 137, we cannot reach a service container etc. We're still trying to produce a minimal example to reproduce the problem, it could still be our infrastructure that does weird things, but I wanted to hear if this is something that is known in 0.11.x. In our architecture we have many jobs that share a few large dagger engines, so that may be the cause, but still it is quite strange
I'm thinking about doing a live stream next week to create a module for xcaddy. I don't know when and where yet, so I'm just asking if anyone is interested in that. I haven't done it yet, so you get to see me struggle.
i'd definitely be interested in watching along, just to spy on what other people are doing when making modules 😄
Interested if it's on YT 🙂 I have trouble accessing other platforms when I'm at work.
hello this seems interesting. would this be on twitch or discord?
Probably YT
ohh perfect. reason I ask is company policies and dns config blocks a lot of stuff for me. thankfully YouTube is accessible
If I manage to figure out how to do it 😄
Okay, let's put this on the calendar: Tuesday, 6pm CEST. I'll share the stream URL here.
exit status 137 sounds a little suspect, that sounds like a kill -9 - in my experience that usually means the engine is running low on RAM and the oom killer is kicking in
Hey Daggernaughts!
I'm giving a talk to 150 people tonight, on Dagger, it's only a 30 minute talk 🙂
good luck on your session Paul! break a leg! 🦵
😆 </leg></body>
good luck 😄
Hello everyone
Yep Vito. It was a little bit of a facepalm moment. We found out we had allocated too little ram, with and unbounded limit in kubernetes. I.e. intermiddent kills of pods
People love dagger!!! Great event and there are at least 30 new organisation's really enthusiastic to start using Dagger immediately.
Thank you so much for sharing Paul!
is it currently possible to use gcs as a remote cache with dagger?
looking to run a series of clean build agents but also leverage caching from previous jobs
looks like dagger cloud may have something similar, but it would be nice to be able to use my own infra
ah! just spotted this in the docs
Does Dagger Cloud support “bring your own storage” for distributed caching?
The ability to "bring your own storage" is coming soon. Please reach out to us if this capability is needed for your organization.
that would be us! i think this is probably a security requirement.
Amazing Paul! Thanks for spreading the word!
Looking forward to watching the livestream from @thick igloo on Monday! I know we have a lot of people interested in data science use cases, so this one is for y'all!
https://www.linkedin.com/events/humans-aifordatascience-adagger7204572418453999616/about/
Stream URL: https://www.youtube.com/watch?v=jw-lDQUKQnU
I'm going to build a Dagger module for xcaddy. Since I'm doing the whole thing live, you'll get to watch how I approach creating a new module and building a Dagger module API around an existing tool.
Yep Vito. It was a little bit of a
Hello fellow Daggernauts:
Do you have a recommendation on how to make CLI output that look more user-friendly?
So instead of the ugly output (on the left) more something like on the right.
Hello fellow Daggernauts:
Starting in a few minutes
Thanks for a great session @fossil pine !
Thanks for watching!
You can catch the recording here: https://www.youtube.com/live/jw-lDQUKQnU?si=Av-LElc3ZvsZwZ3c&t=750
I'm going to build a Dagger module for xcaddy. Since I'm doing the whole thing live, you'll get to watch how I approach creating a new module and building a ...
(I've spent the first ~10 minutes trying to fix audio, so skip that part 😄 )
This week's Community Call demos will be from @cloud canyon @elfin frigate @glad jolt @pine crag and @honest oasis. We got a sneak peek at a few, and y'all are going to love them!
If you haven't already, add the Dagger Community call to your calendar using the link below: https://dagger-io.zoom.us/webinar/register/8517071155537/WN_j_xRpP1ASb6xrM4AiRKRnA
See you at 9 am PT on Thursday!
Did v0.11.7 introduce breaking changes? Yesterday my trivy pipeline was running just fine with v0.11.6, but later in the day (night) it started failing with v0.11.7.
Even if I rerun the same pipelines (for the same commits) now (ones that passed OK yesterday), I'm getting failures
I need to find a way to pin a dagger version... Why don't you bake OCI images?
Hi there! 👋 I'm currently writing my bachelor's thesis in Computer Science and I'd love to get some opinions on a specific point.
What exactly does "containerization" refer to? Is it the process of creating and running a container, or is it packaging software into a Docker image?
I'm trying to distinguish between two concepts:
- The moment when I create the Docker image
- The moment when I create and run an instance of the image using a container
As a personal take, I would say "containerization" is the process in which an engineer takes a project and builds it into a docker image to be able to run/deploy.
I kind of think of 1 mostly, but I think the process aspect here is important
Thank you very much for your reply 🙏
I agree, although containerization is often used as a broader term. For example: a company adopting containers as a means to deploy and run software (either as a greenfield or brownfield project) is doing containerization.
Sincs these terms are often quite overloaded, it’s important to set the context right.
For example: you might say that a container is just a jailed process. Well, not always
I was actually using the word "containerization" to describe the case where an image was instantiated in a Docker container, but I got a comment that I'd misused that term.
Thank you a lot for your detailed answers
I agree with that. I haven't heard the term used in any other context (doesn't mean nobody does)
hey all. a query that came up internally regarding cloud. Will there be features for the data in dagger cloud to be deleted like traces?
maybe these have been answered somewhere already
@elfin frigate @glad jolt
@sick monolith were the questions around data retention period, or the ability for a properly-privileged person to delete a trace they wanted to get rid of becuase it was no longer relevant/useful?
it was security. though now you mention it, I think clearing traces would be something useful. but that's not what came up it was mostly about removal of traces due to security. I.e if I'm on my own org and i mistakenly connect to another or forgot to swap and run a trace I really don't think my org would be happy with traces going to wrong orgs and would want the ability to delete traces instantly
could be a complete blocker from using cloud
deleting Cloud traces/data
Hey everyone! The Dagger team will be at AIQCon on June 25th, and we have a few extra passes as part of our sponsorship.
**If you are interested in attending this show and want a free pass, please DM me! **
https://www.aiqualityconference.com/
I'll register people on a first-come, first-served basis.
General question for folks out there running in CI with daemon setups.... do you find that you need to tune your buildkit garbage collection at all? Feels like I'm getting bit by it, but not really sure
General question for folks out there
Are you thinking of making a kind of Docker-like system, in order to point to its own artifactory, but this time not to retrieve Docker images, but to retrieve all the necessary dependencies to make a dagger init?
a kind of connection to our artifactory with dagger login "artifactory", and then pointing dagger init to this artifactory to retrieve the dependencies ?
to work if my computer doesn't have internet 🙂
i think we've talked about an "offline" mode for dagger before, but unfortunately, i don't think anyone's ever put effort into actually working on it yet
it's a tricky feature, and there's always been a lot of other things going on
that said, if you're interested, definitely happy to help coach external contributions for things like this
This is interesting! If we could make dagger modules OCI artifacts (like helm charts), then we could achieve something similar along with other benefits that come from being stored in artifact storage.
Reminder that there's a community call in 20mn, and from seeing the agenda, minds will be blown 🙂 Just saying
Yup this is going to be a good one!
Community call starting in 2 minutes. See you there!
Welcome everyone! Hosting from Vancouver, WA. Today's song is Porto by Workakls
👋 Marcos here from 🇺🇾 🧉
Happening now! https://discord.gg/wXYtsCBR?event=1245979433953656873
👋 hola from Toronto
Hi from Fort Worth, Texas
👋
hello from Argentina! 🇦🇷
Greetings from Michigan 👋
👋🏻 hello from Montana
Hi! From France 😄
Good morning from San Francisco, I'm sad to report it is cold and foggy here
hello, everyone! from Porto, Portugal
👋 from Berkeley
First Dagger Switzerland meetup woo!
wait, we have to follow andrea?