bash.#Run: new and improved

* 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>
This commit is contained in:
Solomon Hykes
2022-02-08 17:54:42 +00:00
parent 4944bead44
commit 013900c2a2
8 changed files with 171 additions and 75 deletions

View File

@@ -0,0 +1,10 @@
setup() {
load '../../bats_helpers'
common_setup
}
@test "bash.#Run" {
dagger up ./run-simple
}

View File

@@ -0,0 +1,3 @@
#!/bin/sh
echo Hello, world > /out.txt

View File

@@ -0,0 +1,87 @@
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"]
}
}
}