mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 00:42:27 +08:00
33 lines
1.6 KiB
Go
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)
|
|
}
|