universe.dagger.io/examples/changelog.com: cleanup and fixes
Signed-off-by: Solomon Hykes <solomon@dagger.io>
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
package mix
|
||||
|
||||
import (
|
||||
"dagger.io/dagger"
|
||||
"dagger.io/dagger/engine"
|
||||
|
||||
"universe.dagger.io/docker"
|
||||
)
|
||||
|
||||
#Get: #Run & {
|
||||
// Applies to all environments
|
||||
env: null
|
||||
cache: {
|
||||
build: null
|
||||
deps: "locked"
|
||||
}
|
||||
container: command: {
|
||||
name: "sh"
|
||||
flags: "-c": "mix do deps.compile, compile"
|
||||
}
|
||||
}
|
||||
|
||||
// Compile Elixir dependencies, including the app
|
||||
#Compile: #Run & {
|
||||
cache: {
|
||||
build: "locked"
|
||||
deps: "locked"
|
||||
}
|
||||
container: command: {
|
||||
name: "sh"
|
||||
flags: "-c": "mix do deps.compile, compile"
|
||||
}
|
||||
}
|
||||
|
||||
// Run mix task with all necessary mounts so compiled artefacts get cached
|
||||
// FIXME: add default image to hexpm/elixir:1.13.2-erlang-23.3.4.11-debian-bullseye-20210902
|
||||
#Run: {
|
||||
app: {
|
||||
// Application name
|
||||
name: string
|
||||
|
||||
// Application source code
|
||||
source: dagger.#FS
|
||||
}
|
||||
|
||||
// Mix environment
|
||||
env: string | null
|
||||
|
||||
// Configure mix caching
|
||||
// FIXME: simpler interface, eg. "ro" | "rw"
|
||||
cache: {
|
||||
// Dependencies cache
|
||||
deps: null | "locked"
|
||||
|
||||
// Build cache
|
||||
build: null | "locked"
|
||||
}
|
||||
|
||||
// Run mix in a docker container
|
||||
container: docker.#Run & {
|
||||
if env != null {
|
||||
"env": MIX_ENV: env
|
||||
}
|
||||
workdir: mounts.app.dest
|
||||
mounts: "app": {
|
||||
contents: app.source
|
||||
dest: "/mix/app"
|
||||
}
|
||||
if cache.deps != null {
|
||||
mounts: deps: {
|
||||
contents: engine.#CacheDir & {
|
||||
id: "\(app.name)_deps"
|
||||
concurrency: cache.deps
|
||||
}
|
||||
dest: "\(mounts.app.dest)/deps"
|
||||
}
|
||||
}
|
||||
if cache.build != null {
|
||||
mounts: buildCache: {
|
||||
contents: engine.#CacheDir & {
|
||||
id: "\(app.name)_build_\(env)"
|
||||
concurrency: cache.build
|
||||
}
|
||||
dest: "\(mounts.app.dest)/_build/\(env)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user