First pass through changelog.com Europa port
Uses the low-level engine API.
⚠️ Is _not_ complete!
Signed-off-by: Joel Longtine <joel@dagger.io>
This commit is contained in:
parent
56a259e140
commit
dc8d6b74dd
175
europa-universe/examples/changelog.com/lowlevel/main.cue
Normal file
175
europa-universe/examples/changelog.com/lowlevel/main.cue
Normal file
@ -0,0 +1,175 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"alpha.dagger.io/europa/dagger/engine"
|
||||
)
|
||||
|
||||
runtime_image_ref: string | *"thechangelog/runtime:2021-05-29T10.17.12Z"
|
||||
|
||||
engine.#Plan & {
|
||||
inputs: directories: app: {
|
||||
path: "."
|
||||
exclude: [
|
||||
".circleci",
|
||||
".dagger",
|
||||
".git",
|
||||
".github",
|
||||
"2021",
|
||||
"2022",
|
||||
"_build/dev",
|
||||
"_build/test",
|
||||
"assets/node_modules",
|
||||
"cue.mod",
|
||||
"dev_docker",
|
||||
"docker",
|
||||
"import",
|
||||
"nginx",
|
||||
"priv/db",
|
||||
"priv/uploads",
|
||||
"script",
|
||||
"tmp",
|
||||
".all-contributorsrc",
|
||||
".autocomplete",
|
||||
".credo.exs",
|
||||
".dockerignore",
|
||||
".formatter.exs",
|
||||
".envrc",
|
||||
".env",
|
||||
".gitattributes",
|
||||
".gitignore",
|
||||
"README.md",
|
||||
"coveralls.json",
|
||||
"start_dev_stack.sh",
|
||||
".kube",
|
||||
"erl_crash.dump",
|
||||
"deps",
|
||||
"_build",
|
||||
"dagger",
|
||||
"main.cue",
|
||||
]
|
||||
}
|
||||
inputs: directories: docker: {
|
||||
path: "."
|
||||
include: [
|
||||
"docker/Dockerfile.production",
|
||||
".dockerignore",
|
||||
]
|
||||
}
|
||||
|
||||
actions: {
|
||||
runtimeImage: engine.#Pull & {
|
||||
source: runtime_image_ref
|
||||
}
|
||||
|
||||
depsCache: engine.#CacheDir & {
|
||||
id: "depsCache"
|
||||
}
|
||||
|
||||
depsCacheMount: "depsCache": {
|
||||
dest: *"/app/deps/" | string
|
||||
contents: depsCache
|
||||
}
|
||||
|
||||
buildCacheTest: engine.#CacheDir & {
|
||||
id: "buildCacheTest"
|
||||
}
|
||||
|
||||
buildCacheTestMount: "buildCacheTest": {
|
||||
dest: *"/app/_build/test" | string
|
||||
contents: buildCacheTest
|
||||
}
|
||||
|
||||
buildCacheProd: engine.#CacheDir & {
|
||||
id: "buildCacheProd"
|
||||
}
|
||||
|
||||
buildCacheProdMount: "buildCacheProd": {
|
||||
dest: *"/app/_build/prod" | string
|
||||
contents: buildCacheProd
|
||||
}
|
||||
|
||||
nodeModulesCache: engine.#CacheDir & {
|
||||
id: "nodeModulesCache"
|
||||
}
|
||||
|
||||
nodeModulesCacheMount: "nodeModulesCache": {
|
||||
dest: *"/app/assets/node_modules" | string
|
||||
contents: nodeModulesCache
|
||||
}
|
||||
|
||||
appImage: engine.#Copy & {
|
||||
input: runtimeImage.output
|
||||
source: {
|
||||
root: inputs.directories.app.contents
|
||||
}
|
||||
dest: "/app"
|
||||
}
|
||||
|
||||
deps: engine.#Exec & {
|
||||
input: appImage.output
|
||||
mounts: depsCacheMount
|
||||
workdir: "/app"
|
||||
args: ["bash", "-c", " mix deps.get"]
|
||||
}
|
||||
|
||||
assetsCompile: engine.#Exec & {
|
||||
input: depsCompileProd.output
|
||||
mounts: depsCacheMount & nodeModulesCacheMount
|
||||
workdir: "/app/assets"
|
||||
env: PATH: "/usr/local/lib/nodejs/node-v14.17.0-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
args: ["bash", "-c", "yarn install --frozen-lockfile && yarn run compile"]
|
||||
}
|
||||
|
||||
#depsCompile: engine.#Exec & {
|
||||
input: deps.output
|
||||
mounts: depsCacheMount
|
||||
workdir: "/app"
|
||||
args: ["bash", "-c", "mix do deps.compile, compile"]
|
||||
}
|
||||
|
||||
depsCompileTest: #depsCompile & {
|
||||
env: MIX_ENV: "test"
|
||||
mounts: buildCacheTestMount
|
||||
}
|
||||
|
||||
depsCompileProd: #depsCompile & {
|
||||
env: MIX_ENV: "prod"
|
||||
mounts: buildCacheProdMount
|
||||
}
|
||||
|
||||
assetsDigest: engine.#Exec & {
|
||||
input: assetsCompile.output
|
||||
mounts: depsCacheMount & buildCacheProdMount & nodeModulesCacheMount
|
||||
env: MIX_ENV: "prod"
|
||||
workdir: "/app"
|
||||
args: ["bash", "-c", "mix phx.digest"]
|
||||
}
|
||||
|
||||
imageProdCacheCopy: engine.#Exec & {
|
||||
input: assetsDigest.output
|
||||
mounts: (depsCacheMount & {depsCache: dest: "/mnt/app/deps/"} )
|
||||
mounts: (buildCacheProdMount & {buildCacheProd: dest: "/mnt/app/_build/prod"} )
|
||||
args: ["bash", "-c", "cp -Rp /mnt/app/deps/* /app/deps/ && cp -Rp /mnt/app/_build/prod/* /app/_build/prod/"]
|
||||
}
|
||||
|
||||
imageProdDockerCopy: engine.#Copy & {
|
||||
input: imageProdCacheCopy.output
|
||||
source: {
|
||||
root: inputs.directories.docker.contents
|
||||
}
|
||||
dest: "/"
|
||||
}
|
||||
|
||||
imageProd: engine.#Build & {
|
||||
source: imageProdDockerCopy.output
|
||||
dockerfile: path: "/docker/Dockerfile.production"
|
||||
buildArg: {
|
||||
APP_FROM_PATH: "/app"
|
||||
GIT_AUTHOR: "joel"
|
||||
GIT_SHA: "abcdef"
|
||||
APP_VERSION: "main"
|
||||
BUILD_URL: "longtine.io/build"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user