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/ci-cd-for-go-project/complete-ci-cd/dagger.cue
Helder Correia 995881ffb5
doc: Improve wording on “Go on Docker Hub” use case
Signed-off-by: Helder Correia <174525+helderco@users.noreply.github.com>
2022-03-30 16:37:07 +00:00

75 lines
1.3 KiB
CUE

package main
import (
"dagger.io/dagger"
"universe.dagger.io/go"
"universe.dagger.io/docker"
"universe.dagger.io/alpine"
)
dagger.#Plan & {
client: {
filesystem: ".": read: {
contents: dagger.#FS
include: ["go.mod", "go.sum", "**/*.go"]
}
env: DOCKER_PASSWORD: dagger.#Secret
}
actions: {
// Alias to code
_code: client.filesystem.".".read.contents
// Improve go base image with useful tool
// Enable cgo by installing build-base
_base: go.#Image & {
packages: {
"build-base": version: _
bash: version: _
}
}
// Run go unit tests
unitTest: go.#Test & {
source: _code
package: "./..."
input: _base.output
}
// Build go project
build: go.#Build & {
source: _code
}
// Build docker image (depends on build)
image: docker.#Build & {
steps: [
alpine.#Build,
docker.#Copy & {
contents: build.output
dest: "/usr/bin"
},
docker.#Set & {
config: cmd: ["<path/to/binary>"]
},
]
}
// Push image to remote registry (depends on image)
push: {
// Docker username
_dockerUsername: "<my_username>"
docker.#Push & {
"image": image.output
dest: "\(_dockerUsername)/<my_repository>"
auth: {
username: _dockerUsername
secret: client.env.DOCKER_PASSWORD
}
}
}
}
}