HN user

marcosnils

240 karma
Posts31
Comments56
View on HN
blog.matiaspan.dev 1y ago

It's Fun to Work on CI

marcosnils
1pts0
dagger.io 1y ago

Dagger 0.15

marcosnils
1pts0
dagger.io 1y ago

Using Devin AI at Dagger

marcosnils
1pts0
dagger.io 1y ago

Dagger 0.14

marcosnils
9pts1
twitter.com 1y ago

FBI Infringing MIT License

marcosnils
5pts0
github.com 1y ago

Avante: Neovim as Cursor AI IDE

marcosnils
3pts0
github.com 1y ago

Show HN: ffmpeg over IP

marcosnils
3pts1
backstage.spotify.com 2y ago

Spotify Portal for Backstage

marcosnils
2pts0
twitter.com 2y ago

Mac Mini over Poe (

marcosnils
4pts1
vercel.com 3y ago

Vercel Ship

marcosnils
4pts3
docs.dagger.io 3y ago

Dagger new interactive quickstart tutorial

marcosnils
2pts0
github.com 3y ago

Awesome-Playgrounds

marcosnils
4pts0
play.dagger.cloud 3y ago

Run your CI/CD pipelines as code and in containers

marcosnils
1pts0
verifiablecredentials.dev 3y ago

Auth0 Verifiable Credentials

marcosnils
229pts131
kittycad.io 4y ago

Boring Infrastructure

marcosnils
2pts1
sprocketfox.io 4y ago

Supply Chain Attack as Code

marcosnils
1pts0
docs.docker.com 4y ago

Docker Desktop for Linux (tech preview)

marcosnils
3pts0
github.com 4y ago

Buildkit-Nix: Nix as Dockerfiles

marcosnils
2pts0
github.com 5y ago

Show HN: Chrome extension to collapse and expand HN parent comments threads

marcosnils
44pts25
toolkit.fluxcd.io 6y ago

GitOps Toolkit

marcosnils
2pts0
medium.com 6y ago

Pitaya, Wildlife's Golang scalable game server framework

marcosnils
26pts2
elonmuskbtc.com 6y ago

Biggest Phishing in History

marcosnils
2pts1
news.ycombinator.com 6y ago

EKS Price Reduction

marcosnils
4pts0
github.com 6y ago

A pure Go implementation of Blake3 crypto hash function

marcosnils
2pts0
blog.docker.com 8y ago

Docker playform and Moby project add kubernetes

marcosnils
9pts0
medium.com 9y ago

Showcasing your applications with Docker in a single click

marcosnils
2pts0
medium.com 9y ago

Reducing your docker Node.js images by 50% using zeit pkg and multi-stage builds

marcosnils
2pts0
github.com 9y ago

Netshoot: Docker network troubleshooting swiss-army container

marcosnils
2pts0
github.com 9y ago

Rootless containers feature merged into runC

marcosnils
134pts39
hatespeech.sherloq.io 9y ago

Sherloq: A tool to stop hate speech

marcosnils
19pts8

but I'm not convinced it's ready to replace Gitlab CI.

The purpose of Dagger it's not to replace your entire CI (Gitlab in your case). As you can see from our website (https://dagger.io/engine), it works and integrates with all the current CI providers. Where Dagger really shines is to help you and your teams move all the artisanal scripts encoded in YAML into actual code and run them in containers through a fluent SDK which can be written in your language of choice. This unlocks a lot of benefits which are detailed in our docs (https://docs.dagger.io/).

Dagger has one very big downside IMO: It does not have native integration with Gitlab, so you end up having to use Docker-in-Docker and just running dagger as a job in your pipeline.

Dagger doesn't depend on Docker. We're just conveniently using Docker (and other container runtimes) as it's generally available pretty much everywhere by default as a way to bootstrap the Dagger Engine. You can read more about the Dagger architecture here: https://github.com/dagger/dagger/blob/main/core/docs/d7yxc-o...

As you can see from our docs (https://docs.dagger.io/759201/gitlab-google-cloud/#step-5-cr...), we're leveraging the *default* Gitlab CI `docker` service to bootstrap the engine. There's no `docker-in-docker` happening there.

It clumps all your previously separated steps into a single step in the Gitlab pipeline.

It's not generally how we recommend to start, we should definitely improve our docs to reflect that. You can organize your dagger pipelines in multiple functions and call them in separate Gitlab jobs as you're currently doing. For example, you can do the following:

  ```.gitlab-ci.yml
  build:    
    script:
      # no funky untestable shellscripts here, but calls to \*real\* code
      - dagger run go run ci/main.go build
  test:
    script:
      # no funky untestable shellscripts here, but calls to \*real\* code
      - dagger run go run ci/main.go test
  ```
This way, if your pipeline currently has a `build` and `test` job, you still keep using the same structure.

but is very annoying if you use Gitlab CI's built in parsing of junit/coverage/... files, since you now have extra layers of context to dig trough when tests fail etc

You can also still keep using these. The only thing you need to be aware is to export the required test / coverage output files from your Dagger pipelines so Gitlab can use them to do what it needs.

but I've just written quick-and-dirty scripts to do that every time I've needed it.

This is what we're trying to improve. Those quick-and-dirty generally start very simple but they become brittle and very difficult to test by other engineers. Yes, you could use docker or any container-like thing to enable portability, but you'll probably have to write more scripts to glue all that together.

Quoting one of our founders:

"Our mission is to help your teams to keep the CI configuration as light and "dumb" as possible, by moving as much logic as possible into portable scripts. This minimizes "push and pray", where any pipeline change requires committing, pushing, and waiting for the proprietary CI black box to give you a green or red light. Ideally those scripts use containers for maximum reproduceability. Our goal at Dagger is to help democratize this way of creating pipelines, and making it a standard, so that an actual software ecosystem can appear, where devops engineers can actually reuse each other's code, the same way application developers can."

I completely agree, which is why Dagger is perfect for medium/large projects.

Initially that was the case, but with the upcoming work on modules (aka project Zenith), hopefully this changes. After all, IMO the ultimate aspects that will make it super easy to adopt is the ecosystem and learning how to use the tool. The later is mostly tackled by the "pick your favorite language" story; the former is where we hope modules can help users the most.

Dagger fits very nice with small and large dev and devops teams. Similarly to other tools, the more you grow, the better you'll have to organize your projects to make the best use of it.

Hi there, Dagger contributor here.

One thing that generally is not immediately obvious is all the side benefits that using a programming language actually unlocks.

Need type checking at build time? done.

Need a package manager to version and publish your CI code? done.

Need linting / formatting? done.

Need to import functions from other places? done

Need a test framework? done.

Need a better collaborative IDE? done.

All these things above bring massive improvements to both Dev and Devops engineers that need to interact with build & deploy pipelines daily. Generally it'll be quite difficult for any other configuration or custom language to provide these kind of tooling.

Hey there, Dagger employee here.

We've heard this feedback from a bunch of our users, and even though the awesome work of nektos/act has helped some of them, we feel like there might be more to just try to emulate GHA locally. After all, GitHub's doesn't have any incentives to allow their users escape their platform.

Having said that, our community has pushed the boundaries of Dagger and has made awesome progress on streamlining GHA into our platform. Here's two in-progress demos about some of that work

Source to action: https://youtu.be/EgOvSbwKVts Running GHA in Dagger (project gale): https://youtu.be/rHk3spfCHFQ

We could use some feedback and help to make this even better. If you feel like that might be interesting, we're very active in our discord server: https://discord.com/invite/dagger-io

Hey, Dagger employee here. This exactly is one of the the main design decisions of Dagger. We're not expecting companies and/or projects to perform a full migration to it, that's why we generally recommend starting by wrapping different parts of your pipeline and move on from there. Unlike other solutions, Dagger allows you to keep using your existing tooling and reuse Dockerfiles (https://docs.dagger.io/quickstart/429462/build-dockerfile/#r...) while slowly transition your pipelines to code.

Hey there! Dagger employee here. Congrats on the launch, it's grateful to see other people trying to collaborate on this space.

Such as dependency management (in the case of python, the requirement of a python interpreter, and its package managers, etc). togomak is just a single statically-linked binary.

Not sure if you've been following the latest updates about Dagger, but since the latest 0.9 release we have a preview feature where all the SDK tooling runs within Dagger itself as a container so they're not required to be installed in the host machine anymore. We've also added support for Dagger Modules which allows you to package and distribute pipelines a-la terraform. Our docs are still not updated yet but if you join our Discord server, you can find all the information there.

Cheers!

:wave: Dagger contributor here. This is exactly one of the many reasons why we've decided to build Dagger. We're working for a future where CI pipelines can be defined in your language of choice and composable across different ecosystems. If you want to know more, happy to chat in our Discord community.

https://dagger.io/

Hi there! Dagger (https://dagger.io) contributor here. Looks like Dagger could be a very nice fit for what you're looking for; it allows you to define your pipelines in either Go, Python or Typescript/JavaScript (more languages to come) as well as targeting multiple CPU platforms. Regarding monorepos, here's a link on how Dagger makes that experience quite nice: https://youtu.be/vJfoyN77fo0

If you have any questions or need any further help, happy to connect in our discord server!

Cheers!

^ 1000% this.

One of the very few open minded answers I've seen so far. Of course people will complain, specially in HN. Even though I agree Docker's communication and execution wasn't the best, I applaud them since they're trying to monetize their work in a different strategy than the standard "support plan". In the end, I really hope this ends up working for them since it'll ultimately be reflected in the quality of the product.

If you ever launch a Linux version I'll be happily be a paying customer.

I work for ZEIT (https://zeit.co/home) the creators of next js and the best place to host your static content. It'd be awesome if you give our platform a try and help you out to host your content the best way possible. You shouldn't have to run containers or anything complex nowadays just to host a single static website.