Files
Kevin Minehart 13f4cf162e CI: move grafana-build into pkg/build (#105640)
* move grafana-build into pkg/build
2025-05-20 10:48:00 -05:00

33 lines
1.6 KiB
Go

package docker
import (
"context"
"fmt"
"dagger.io/dagger"
)
func PublishPackageImage(ctx context.Context, d *dagger.Client, pkg *dagger.File, tag, username, password, registry string) (string, error) {
return d.Container().From("docker").
WithFile("grafana.img", pkg).
WithSecretVariable("DOCKER_USERNAME", d.SetSecret("docker-username", username)).
WithSecretVariable("DOCKER_PASSWORD", d.SetSecret("docker-password", password)).
WithUnixSocket("/var/run/docker.sock", d.Host().UnixSocket("/var/run/docker.sock")).
WithExec([]string{"/bin/sh", "-c", fmt.Sprintf("docker login %s -u $DOCKER_USERNAME -p $DOCKER_PASSWORD", registry)}).
WithExec([]string{"/bin/sh", "-c", "docker load -i grafana.img | awk -F 'Loaded image: ' '{print $2}' > /tmp/image_tag"}).
WithExec([]string{"/bin/sh", "-c", fmt.Sprintf("docker tag $(cat /tmp/image_tag) %s", tag)}).
WithExec([]string{"docker", "push", tag}).
Stdout(ctx)
}
func PublishManifest(ctx context.Context, d *dagger.Client, manifest string, tags []string, username, password, registry string) (string, error) {
return d.Container().From("docker").
WithUnixSocket("/var/run/docker.sock", d.Host().UnixSocket("/var/run/docker.sock")).
WithSecretVariable("DOCKER_USERNAME", d.SetSecret("docker-username", username)).
WithSecretVariable("DOCKER_PASSWORD", d.SetSecret("docker-password", password)).
WithExec([]string{"/bin/sh", "-c", fmt.Sprintf("docker login %s -u $DOCKER_USERNAME -p $DOCKER_PASSWORD", registry)}).
WithExec(append([]string{"docker", "manifest", "create", manifest}, tags...)).
WithExec([]string{"docker", "manifest", "push", manifest}).
Stdout(ctx)
}