package main
import (
"alpha.dagger.io/dagger"
"alpha.dagger.io/dagger/op"
"alpha.dagger.io/alpine"
"alpha.dagger.io/random"
)
registry: {
username: dagger.#Input & {string}
secret: dagger.#Input & {dagger.#Secret}
}
TestPushContainer: {
tag: random.#String & {
seed: "push-container"
// Push an image with a random tag
push: {
ref: "daggerio/ci-test:\(tag.out)"
#up: [
op.#DockerLogin & {
target: ref
registry
},
op.#WriteFile & {
content: tag.out
dest: "/rand"
op.#PushContainer & {
"ref": ref
]
// Pull the image back
pull: #up: [
op.#FetchContainer & {
ref: push.ref
// Check the content
check: #up: [
op.#Load & {from: alpine.#Image},
op.#Exec & {
args: [
"sh", "-c", #"""
test "$(cat /src/rand)" = "\#(tag.out)"
"""#,
mount: "/src": from: pull
// Ensures image metadata is preserved in a push
TestPushContainerMetadata: {
seed: "container-metadata"
// `docker build` using an `ENV` and push the image
ref: "daggerio/ci-test:\(tag.out)-dockerbuild"
op.#DockerBuild & {
dockerfile: #"""
FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d
ENV CHECK \#(tag.out)
"""#
// Pull the image down and make sure the ENV is preserved
env
test "$CHECK" = "\#(tag.out)"
// Do a FetchContainer followed by a PushContainer, make sure
// the ENV is preserved
pullPush: {
ref: "daggerio/ci-test:\(tag.out)-pullpush"
pullPushCheck: #up: [
ref: pullPush.ref