Improve examples using go & docker stdlib packages

Signed-off-by: Solomon Hykes <sh.github.6811@hykes.org>
This commit is contained in:
Solomon Hykes 2021-03-12 23:08:40 +00:00
parent be64c1576b
commit 1f874025aa
5 changed files with 51 additions and 122 deletions

View File

@ -0,0 +1,46 @@
package main
// A dagger configuration to build and test the dagger source code.
// This configuration can easily be adapted to build and test any go project.
//
//
// Example:
// dagger compute ./examples/dagger-dev --input-dir repository=/path/to/go/project
import (
"dagger.io/dagger"
"dagger.io/go"
"dagger.io/docker"
)
repository: dagger.#Dir
// Build `dagger` using Go
build: go.#Build & {
source: repository
packages: "./cmd/dagger"
output: "/usr/local/bin/dagger"
}
// Run go tests
test: go.#Test & {
source: repository
packages: "./..."
}
// Run a command with the binary we just built
help: docker.#Run & {
image: build
args: ["dagger", "-h"]
}
// Build dagger using the (included) Dockerfile
buildWithDocker: docker.#Build & {
source: repository
}
// Run a command in the docker image we just built
helpFromDocker: docker.#Run & {
image: buildWithDocker.image
args: ["dagger", "-h"]
}

View File

@ -1,39 +0,0 @@
package main
import (
"dagger.io/dagger"
"dagger.io/go"
)
repository: dagger.#Dir // Use `--input-dir repository=.` from the root directory of the project
// Build `dagger` using Go
build: go.#Build & {
source: repository
packages: "./cmd/dagger"
output: "/usr/local/bin/dagger"
}
test: go.#Test & {
source: repository
packages: "./..."
}
// Run a command with the binary we just built
help: #compute: [
dagger.#Load & {from: build},
dagger.#Exec & {args: ["dagger", "-h"]},
]
// Build dagger using the (included) Dockerfile
buildWithDocker: #compute: [
dagger.#DockerBuild & {
context: repository
},
]
// Run a command in the docker image we just built
helpFromDocker: #compute: [
dagger.#Load & {from: buildWithDocker},
dagger.#Exec & {args: ["dagger", "-h"]},
]

View File

@ -1,17 +1,15 @@
package main
import (
"dagger.io/dagger"
"dagger.io/netlify"
"dagger.io/yarn"
"dagger.io/git"
)
repository: #compute: [
dagger.#FetchGit & {
remote: "https://github.com/kabirbaidhya/react-todo-app.git"
ref: "624041b17bd62292143f99bce474a0e3c2d2dd61"
},
]
repository: git.#Repository & {
remote: "https://github.com/kabirbaidhya/react-todo-app.git"
ref: "624041b17bd62292143f99bce474a0e3c2d2dd61"
}
todoApp: netlify.#Site & {
account: {

View File

@ -1,68 +0,0 @@
package simple
import (
"dagger.io/dagger"
)
let alpine = {
digest: "sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436"
package: [string]: true | false | string
#compute: [
{
do: "fetch-container"
ref: "index.docker.io/alpine@\(digest)"
},
for pkg, info in package {
if (info & true) != _|_ {
do: "exec"
args: ["apk", "add", "-U", "--no-cache", pkg]
}
if (info & string) != _|_ {
do: "exec"
args: ["apk", "add", "-U", "--no-cache", "\(pkg)\(info)"]
}
},
]
}
www: {
source: dagger.#Dir
// List the contents of the source directory
listing: {
string
#compute: [
dagger.#Load & {
from: alpine
},
dagger.#Exec & {
args: ["sh", "-c", "ls /src > /tmp/out"]
mount: "/src": from: source
},
dagger.#Export & {
source: "/tmp/out"
},
]
}
host: string
url: {
string
#compute: [
{
do: "load"
from: alpine
},
dagger.#Exec & {
args: ["sh", "-c", "echo -n 'https://\(host)/foo' > /tmp/out"]
},
dagger.#Export & {
source: "/tmp/out"
},
]
}
}

View File

@ -13,13 +13,6 @@ DAGGER_BINARY_ARGS="${DAGGER_BINARY_ARGS:---log-format json}"
read -ra DAGGER_BINARY_ARGS <<< "${DAGGER_BINARY_ARGS:-}"
readonly DAGGER_BINARY_ARGS
test::examples() {
local dagger="$1"
test::one "Examples: simple" --stdout='{"www":{"listing":"simple.cue\n","source":{}}}' \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-dir www.source="$d"/../examples/simple "$d"/../examples/simple
}
test::stdlib() {
local dagger="$1"
@ -259,7 +252,6 @@ test::all(){
test::dockerbuild "$dagger"
test::stdlib "$dagger"
test::examples "$dagger"
}
case "${1:-all}" in