2 poin oleh GN⁺ 2025-04-02 | 2 komentar | Bagikan ke WhatsApp
  • Shell Unix telah digunakan selama lebih dari 50 tahun, dan merupakan alat komputasi yang kuat yang memungkinkan perilaku kompleks disusun dari perintah sederhana
    • Namun, stack perangkat lunak modern telah menjadi jauh lebih kompleks, dan shell lama sulit menangani semua pekerjaan ini
    • Terinspirasi oleh Docker, make, powershell, nix, dan lainnya, kini dibutuhkan shell modern yang secara native mendukung container, secret, endpoint layanan, eksekusi deklaratif, cache, dan sandboxing
  • Dagger Shell adalah frontend berbasis sintaks bash untuk Dagger Engine, dan dapat digunakan untuk berbagai tugas otomasi seperti build, test, deployment, dan environment sementara
  • Alih-alih menggantikan shell sistem, ini adalah alat pelengkap yang membantu menyusun workflow kompleks dari kombinasi modul sederhana
    container |  
      from alpine |  
      with-exec apk add git |  
      terminal  
    
  • Shell dan kode saja sudah cukup

    • Saat menangani skrip kompleks, Anda bisa menulisnya dalam bahasa pemrograman sungguhan alih-alih mempelajari DSL aneh
    • Tersedia SDK untuk berbagai bahasa seperti Go, Python, Typescript, Java, dan PHP
    • Fungsi yang ditulis dalam bahasa tersebut dapat diperluas menjadi primitive baru di Dagger
  • Shell yang terhubung ke API

    • Dagger Shell berperan sebagai klien API Dagger, dengan akses ke objek bertipe, dokumentasi, dan ekosistem modul yang dapat digunakan ulang (Daggerverse)
    • Misalnya, Anda bisa memuat dan menjalankan modul pemindaian keamanan Trivy
  • Lingkungan sandbox bawaan

    • Semua perintah berjalan di dalam sandbox secara default, dan akses ke file, secret, layanan, dan lainnya harus ditentukan secara eksplisit. Sedikit lebih panjang, tetapi meningkatkan repeatability dan keamanan
      container |  
        from alpine |  
        with-secret-variable POSTGRES_PASSWORD op://dev/db-password/credential |  
        with-directory /src ~/src/myapp |  
        with-service-binding db tcp://localhost:5432 |  
        terminal  
      
  • Build container yang sederhana

    • Pembuatan container berbasis Alpine, penyisipan file teks, pengaturan output pesan, hingga push ke registry sementara dapat dijalankan sekaligus
    • Dapat dilakukan tanpa perlu berpindah konteks antara penulisan Dockerfile, perintah build, dan push
      # Build a wolfi linux container with curl, then test connection to stable and dev docs  
      github.com/dagger/dagger/modules/wolfi | container --packages=curl |  
        with-service-binding docs-stable $(github.com/dagger/dagger/docs@v0.17.1 | server) |  
        with-service-binding docs-dev $(github.com/dagger/dagger/docs@main | server) |  
        with-exec curl http://docs-stable |  
        with-exec curl http://docs-dev  
      
  • Menyiapkan environment pengujian

    • Penyiapan environment pengujian, yang sering menjadi masalah di CI, juga dapat ditangani dengan mudah
    • Dengan dukungan native untuk service binding, beberapa instance live dapat dihubungkan dan diuji
      repo=$(git https://github.com/dagger/hello-dagger | head | tree)  
      
      env=$(container | from node:23 | with-directory /app $repo | with-workdir /app)  
      
      build=$($env | with-exec npm install | with-exec npm run build | directory ./dist)  
      
      container | from nginx | with-directory /usr/share/nginx/html $build | terminal --cmd=/bin/bash  
      
  • Build multi-tahap (Multi-Stage Builds)

    • Pipeline build yang kompleks dapat diimplementasikan dengan sintaks yang jelas dan modular
    • Dengan mendefinisikan setiap tahap sebagai variabel, debugging dan penggunaan ulang menjadi lebih mudah
      container |  
        from golang:latest |  
        with-directory /src $(git https://github.com/dagger/dagger | head | tree) |  
        with-workdir /src |  
        with-exec go build ./cmd/dagger |  
        file ./dagger |  
        export ./dagger  
      

2 komentar

 
winterjung 2025-04-02

Sebagai informasi, tautannya telah berubah menjadi alamat https://dagger.io/blog/…

 
GN⁺ 2025-04-02
Opini Hacker News
  • Belakangan ini rasanya makin sulit memahami kegunaan nyata Dagger

    • Awalnya saya berharap ini bisa menggantikan Jenkins
    • Menyediakan alternatif untuk menjalankan dan men-debug pipeline CI secara lokal
    • Ditulis dengan Golang dan bisa mengimpor hal-hal yang dibutuhkan
    • Sekarang arahnya terasa berantakan: mencoba menggantikan Docker, ingin menjadi shell baru, dan anehnya juga seperti ingin menjadi Langchain
    • Argumen CLI baru tidak terasa lebih baik daripada shell script atau Jenkinsfile yang sudah ada
    • Sayang sekali proyek ini tampaknya menjauh dari tujuan awalnya
  • Saya sering menyusun berbagai image dengan menggabungkan Dockerfile dan shell script

    • Perlu dijalankan secara berbeda tergantung lingkungannya, seperti mesin pengembang, robot, CI, dan sebagainya
    • Alat ini tampaknya bisa menyelesaikan kerumitan tersebut
    • Saya suka karena bisa merujuk output build tanpa harus menangani tag
  • Saya melewatkan fakta bahwa Dagger sedang mencoba menggantikan Docker

    • Ini visi yang besar
    • Upaya yang ambisius, tetapi sulit membuat saya percaya bahwa ini bisa langsung menggantikan alat yang sudah ada saat ini
    • Saya menyayangkan pilihan kompatibilitas Bash
    • Menurut saya sudah saatnya keluar dari sintaks dan masalah Bash
  • Sudah ada web UI yang memungkinkan penulisan skrip Dagger Shell dalam format notebook

    • Sangat menarik, layak untuk dicoba
  • Saya jadi penasaran setelah melihat penjelasan di situs Dagger

    • "Mesin komposisi lintas platform"
    • Membangun lingkungan perangkat lunak yang kuat dengan komponen modular dan fungsi sederhana
    • Cocok untuk build kompleks dan alur kerja AI
    • Terlalu umum sehingga tidak berguna
    • Semua hal adalah mesin komposisi. Javascript juga mesin komposisi, macOS juga mesin komposisi
  • Promosi diri yang terkait

  • Apakah tujuannya untuk melakukan pekerjaan pengembangan di dalam container?

    • Ini mengingatkan saya pada Devbox dari Jetify dan Flox.dev
  • Tepatnya, apa yang bisa dilakukan dengan alat ini?

    • Aktivitas seperti apa yang dibantu?
    • Program apa yang bisa digantikan?
    • Apa yang dilakukan oleh "sistem operasi DevOps"?
  • Kesan awal saya, ini seperti tahap perantara antara Dockerfile dan mendefinisikan serta menyusun perangkat lunak dengan kode sungguhan

    • Sebagai orang yang banyak memakai Nix, ini tidak terasa menarik
  • Apakah Dagger mengubah arah produknya?

    • Saya ingat poin jual utamanya dulu adalah layanan pipeline-as-code yang independen
    • Sekarang tampaknya ingin merancang ulang Docker