013900c2a2
* Script is written to filesystem, not inlined as argument * Pass script either as string, or directory+filename Signed-off-by: Solomon Hykes <solomon@dagger.io>
88 lines
1.8 KiB
CUE
88 lines
1.8 KiB
CUE
package bash
|
|
|
|
import (
|
|
"dagger.io/dagger"
|
|
|
|
"universe.dagger.io/docker"
|
|
"universe.dagger.io/alpine"
|
|
)
|
|
|
|
dagger.#DAG & {
|
|
actions: {
|
|
"Run from source directory": {
|
|
build: alpine.#Build & {
|
|
packages: bash: _
|
|
}
|
|
run: #Run & {
|
|
image: build.output
|
|
script: {
|
|
directory: loadScripts.output
|
|
filename: "hello.sh"
|
|
}
|
|
export: files: "/out.txt": _
|
|
}
|
|
output: run.export.files."/out.txt".contents & "Hello, world\n"
|
|
}
|
|
|
|
"Run from source directory with custom image": {
|
|
debian: docker.#Pull & {
|
|
source: "index.docker.io/debian"
|
|
}
|
|
run: #Run & {
|
|
image: debian.output
|
|
export: files: "/out.txt": _
|
|
script: {
|
|
directory: loadScripts.output
|
|
filename: "hello.sh"
|
|
}
|
|
}
|
|
output: run.export.files."/out.txt".contents & "Hello, world\n"
|
|
}
|
|
|
|
"Run from string": {
|
|
run: #Run & {
|
|
script: contents: "echo 'Hello, inlined world!' > /output.txt"
|
|
export: files: "/output.txt": _
|
|
}
|
|
output: run.export.files."/output.txt".contents & "Hello, inlined world!\n"
|
|
}
|
|
|
|
"Run from string with custom image": {
|
|
debian: docker.#Pull & {
|
|
source: "index.docker.io/debian"
|
|
}
|
|
run: #Run & {
|
|
image: debian.output
|
|
export: files: "/output.txt": _
|
|
script: contents: "echo 'Hello, inlined world!' > /output.txt"
|
|
}
|
|
output: run.export.files."/output.txt".contents & "Hello, inlined world!\n"
|
|
}
|
|
|
|
// Same thing but without bash.#Run
|
|
control: {
|
|
run: docker.#Run & {
|
|
image: base.output
|
|
command: {
|
|
name: "sh"
|
|
args: ["/bash/scripts/hello.sh"]
|
|
}
|
|
mounts: scripts: {
|
|
contents: loadScripts.output
|
|
dest: "/bash/scripts"
|
|
}
|
|
export: files: "/out.txt": _
|
|
}
|
|
output: run.export.files."/out.txt".contents & "Hello, world\n"
|
|
base: docker.#Pull & {
|
|
source: "alpine"
|
|
}
|
|
}
|
|
|
|
loadScripts: dagger.#Source & {
|
|
path: "."
|
|
include: ["*.sh"]
|
|
}
|
|
}
|
|
}
|