This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/docs/tests/use-cases/go-docker-swarm/full/particubes.docs.cue
guillaume f6bd78a3ca Go on Docker Swarm
Updates the `Go on Docker Swarm` use case to europa config. Diagrams are also included for better UX

Signed-off-by: guillaume <guillaume.derouville@gmail.com>
2022-03-30 18:23:42 +02:00

159 lines
3.7 KiB
CUE

package docs
import (
"dagger.io/dagger"
"dagger.io/dagger/core"
"universe.dagger.io/alpine"
"universe.dagger.io/bash"
"universe.dagger.io/docker"
"universe.dagger.io/docker/cli"
)
dagger.#Plan & {
client: {
// Locally, manual source of the .env or install https://direnv.net
env: {
GITHUB_SHA: string
SSH_PRIVATE_KEY_DOCKER_SWARM: dagger.#Secret
}
filesystem: {
"./": read: contents: dagger.#FS
"./merge.output": write: contents: actions.build.image.rootfs // Creates a build artifact for debug
}
network: "unix:///var/run/docker.sock": connect: dagger.#Socket // Docker daemon socket
}
actions: {
params: image: {
ref: "registry.particubes.com/lua-docs"
tag: "latest"
localTag: "test-particubes" // name of the image when being run locally
}
_dockerCLI: alpine.#Build & {
packages: {
bash: {}
curl: {}
"docker-cli": {}
"openssh-client": {}
}
}
#_verifyGithubSHA: bash.#Run & {
input: _dockerCLI.output
env: GITHUB_SHA: client.env.GITHUB_SHA
always: true
script: contents: #"""
TRIMMED_URL="$(echo $URL | cut -d '/' -f 1)"
curl --verbose --fail --connect-timeout 5 --location "$URL" >"$TRIMMED_URL.curl.out" 2>&1
if ! grep "$GITHUB_SHA" "$TRIMMED_URL.curl.out"
then
echo "$GITHUB_SHA not present in the $TRIMMED_URL response:"
cat "$TRIMMED_URL.curl.out"
exit 1
fi
"""#
}
build: {
luaDocs: docker.#Dockerfile & {
source: client.filesystem."./lua-docs".read.contents
}
_addGithubSHA: core.#WriteFile & {
input: luaDocs.output.rootfs
path: "/www/github_sha.yml"
contents: #"""
keywords: ["particubes", "game", "mobile", "scripting", "cube", "voxel", "world", "docs"]
title: "Github SHA"
blocks:
- text: "\#(client.env.GITHUB_SHA)"
"""#
}
image: docker.#Image & {
rootfs: _addGithubSHA.output
config: luaDocs.output.config
}
}
clean: cli.#Run & {
host: client.network."unix:///var/run/docker.sock".connect
always: true
env: IMAGE_NAME: params.image.localTag
command: {
name: "sh"
flags: "-c": #"""
docker rm --force "$IMAGE_NAME"
"""#
}
}
test: {
preLoad: clean
load: cli.#Load & {
image: build.image
host: client.network."unix:///var/run/docker.sock".connect
tag: params.image.localTag
env: DEP: "\(preLoad.success)" // DEP created wth preLoad
}
run: cli.#Run & {
host: client.network."unix:///var/run/docker.sock".connect
always: true
env: {
IMAGE_NAME: params.image.localTag
PORTS: "80:80"
DEP: "\(load.success)" // DEP created wth load
}
command: {
name: "sh"
flags: "-c": #"""
docker run -d --rm --name "$IMAGE_NAME" -p "$PORTS" "$IMAGE_NAME"
"""#
}
}
verify: #_verifyGithubSHA & {
env: {
URL: "localhost/github_sha"
DEP: "\(run.success)" // DEP created wth run
}
}
postVerify: clean & {
env: DEP: "\(verify.success)" // DEP created wth verify
}
}
deploy: {
publish: docker.#Push & {
dest: "\(params.image.ref):\(params.image.tag)"
image: build.image
}
update: cli.#Run & {
host: "ssh://ubuntu@3.139.83.217"
always: true
ssh: key: client.env.SSH_PRIVATE_KEY_DOCKER_SWARM
env: DEP: "\(publish.result)" // DEP created wth publish
command: {
name: "sh"
flags: "-c": #"""
docker service update --image registry.particubes.com/lua-docs:latest lua-docs
"""#
}
}
verify: #_verifyGithubSHA & {
env: {
URL: "https://docs.particubes.com/github_sha"
DEP: "\(update.success)" // DEP created wth run
}
}
}
}
}