Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Used by "mix format"
[
import_deps: [:dagger],
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
Expand Down
8 changes: 8 additions & 0 deletions .dagger/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
/dagger_sdk
/_build
/cover
/deps
/doc
/erl_crash.dump
/*.ez
/template-*.tar
/tmp
3 changes: 3 additions & 0 deletions .dagger/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# DagsterPipesElixir

CI/CD for dagster-pipes-elixir.
3 changes: 3 additions & 0 deletions .dagger/config/config.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Config

config :dagger, client: Dagger.Core.GraphQLClient.Req
26 changes: 0 additions & 26 deletions .dagger/dagster_pipes_elixir/.gitignore

This file was deleted.

3 changes: 0 additions & 3 deletions .dagger/dagster_pipes_elixir/README.md

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion .dagger/dagster_pipes_elixir/test/test_helper.exs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,39 @@ defmodule DagsterPipesElixir do

use Dagger.Mod.Object, name: "DagsterPipesElixir"

object do
field :source, Dagger.Directory.t()
field :container, Dagger.Container.t()
end

defn init(
source:
{Dagger.Directory.t(),
default_path: ".",
ignore: [
"**/*",
"!dagster_pipes/mix.exs",
"!dagster_pipes/mix.lock",
"!dagster_pipes/test.sh",
"!dagster_pipes/lib/**/*.ex",
"!dagster_pipes/test/**/*.ex",
"!dagster_pipes/test/test_helper.exs",
"!dagster_pipes/test/test.exs",
"!dagster_pipes/test/**/*_test.exs",
"!integration_tests/pipes.toml",
"!integration_tests/pyproject.toml",
"!integration_tests/uv.lock",
"!integration_tests/tests/**/*.py"
]}
) :: DagsterPipesElixir.t() do
%DagsterPipesElixir{source: source, container: elixir() |> with_source(source)}
end

@doc """
Run unit test in `dagster_pipes` project.
"""
defn unit_test(source: {Dagger.Directory.t(), default_path: "."}) :: Dagger.Void.t() do
elixir()
|> with_source(source)
defn unit_test(self) :: Dagger.Void.t() do
self.container
|> Dagger.Container.with_workdir("dagster_pipes")
|> Dagger.Container.with_env_variable("MIX_ENV", "test")
|> Dagger.Container.with_exec(~w"mix deps.get")
Expand All @@ -23,9 +50,8 @@ defmodule DagsterPipesElixir do
@doc """
Run integration tests provided by Dagster.
"""
defn integration_test(source: {Dagger.Directory.t(), default_path: "."}) :: Dagger.Void.t() do
elixir()
|> with_source(source)
defn integration_test(self) :: Dagger.Void.t() do
self.container
|> Dagger.Container.with_workdir("integration_tests")
|> Dagger.Container.with_env_variable("PATH", "/root/.local/bin:$PATH", expand: true)
|> Dagger.Container.with_env_variable("UV_LINK_MODE", "copy")
Expand All @@ -36,11 +62,11 @@ defmodule DagsterPipesElixir do
|> Dagger.Container.sync()
end

defn check(source: {Dagger.Directory.t(), default_path: "."}) :: Dagger.Void.t() do
defn check(self) :: Dagger.Void.t() do
results =
[
Task.async(fn -> unit_test(source) end),
Task.async(fn -> integration_test(source) end)
Task.async(fn -> unit_test(self) end),
Task.async(fn -> integration_test(self) end)
]
|> Task.await_many(:infinity)

Expand Down
9 changes: 5 additions & 4 deletions .dagger/dagster_pipes_elixir/mix.exs → .dagger/mix.exs
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
defmodule DagsterPipesElixir.MixProject do
defmodule Template.MixProject do
use Mix.Project

def project do
[
app: :dagster_pipes_elixir,
version: "0.1.0",
elixir: "~> 1.16",
elixir: "~> 1.17",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end

def application do
[
extra_applications: [:logger],
extra_applications: [:logger]
]
end

defp deps do
[
{:dagger, path: "../dagger_sdk"}
{:dagger, path: "./dagger_sdk"},
{:req, "~> 0.5"}
]
end
end
1 change: 1 addition & 0 deletions .dagger/dagster_pipes_elixir/mix.lock → .dagger/mix.lock
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
%{
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"nestru": {:hex, :nestru, "1.0.1", "f02321db91b898da3d598c274f2ccba2c41ec5c50c942eabe900474dbfe4bce3", [:mix], [], "hexpm", "e4fbbd6d64b1c8cb37ef590a891f0b6b17b0b880c1c5ce2ac98de02c0ad7417e"},
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
}
5 changes: 5 additions & 0 deletions .github/.formatter.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Used by "mix format"
[
import_deps: [:dagger],
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
]
1 change: 1 addition & 0 deletions .github/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/dagger_sdk/** linguist-generated
9 changes: 9 additions & 0 deletions .github/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/dagger_sdk
/_build
/cover
/deps
/doc
/erl_crash.dump
/*.ez
/template-*.tar
/tmp
26 changes: 26 additions & 0 deletions .github/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Ci

This is a README for you module. Feel free to edit it.

## Quickstart

Once this module is initialized, it can run an example from generated module by:

```
$ dagger call container-echo --string-arg=hello stdout
Hello
```

## The project structure

The module is just a regular Elixir application. The structure is looks like:

```
.
├── lib
│   └── ci.ex
├── mix.exs
└── README.md
```

The `lib` is the Elixir source code while the `ci.ex` is the main Dagger module.
14 changes: 14 additions & 0 deletions .github/dagger.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "ci",
"engineVersion": "v0.18.6",
"sdk": {
"source": "elixir"
},
"dependencies": [
{
"name": "gha",
"source": "github.com/dagger/dagger/modules/gha@v0.18.6",
"pin": "48a88b9b11cf606920579d885c1c3d1eeafe9aca"
}
]
}
26 changes: 26 additions & 0 deletions .github/lib/ci.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
defmodule Ci do
@moduledoc false

use Dagger.Mod.Object, name: "Ci"

defn generate() :: Dagger.Directory.t() do
dag()
|> Dagger.Client.gha()
|> Dagger.Gha.with_workflow(test())
|> Dagger.Gha.generate()
end

defp test() do
dag()
|> Dagger.Client.gha()
|> Dagger.Gha.workflow("ci", on_pull_request: true, on_pull_request_branches: ["main"])
|> Dagger.GhaWorkflow.with_job(
dag()
|> Dagger.Client.gha()
|> Dagger.Gha.job("check", "init check",
runner: ["ubuntu-latest"],
secrets: ["DAGGER_CLOUD_TOKEN"]
)
)
end
end
25 changes: 25 additions & 0 deletions .github/mix.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
defmodule Template.MixProject do
use Mix.Project

def project do
[
app: :ci,
version: "0.1.0",
elixir: "~> 1.17",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end

def application do
[
extra_applications: [:logger]
]
end

defp deps do
[
{:dagger, path: "./dagger_sdk"}
]
end
end
5 changes: 5 additions & 0 deletions .github/mix.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
%{
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"nestru": {:hex, :nestru, "1.0.1", "f02321db91b898da3d598c274f2ccba2c41ec5c50c942eabe900474dbfe4bce3", [:mix], [], "hexpm", "e4fbbd6d64b1c8cb37ef590a891f0b6b17b0b880c1c5ce2ac98de02c0ad7417e"},
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
}
1 change: 1 addition & 0 deletions .github/workflows/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.gen.yml linguist-generated
Loading
Loading