Merge remote-tracking branch 'origin/master' into feature/add-latest-tag

This commit is contained in:
Krzysztof Taraszka
2024-02-25 20:37:47 +01:00
151 changed files with 1395 additions and 1099 deletions

View File

@@ -4,12 +4,10 @@ import (
"bytes"
"errors"
"fmt"
"os"
"strconv"
"strings"
"text/template"
"github.com/codeskyblue/go-sh"
"github.com/dokku/dokku/plugins/common"
)
@@ -152,25 +150,21 @@ func pushToRegistry(appName string, tag int, imageID string, imageRepo string) e
}
func dockerTag(imageID string, imageTag string) bool {
cmd := sh.Command(common.DockerBin(), "image", "tag", imageID, imageTag)
cmd.Stdout = nil
cmd.Stderr = nil
if err := cmd.Run(); err != nil {
return false
}
return true
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: common.DockerBin(),
Args: []string{"image", "tag", imageID, imageTag},
StreamStdio: true,
})
return err == nil && result.ExitCode == 0
}
func dockerPush(imageTag string) bool {
cmd := sh.Command(common.DockerBin(), "image", "push", imageTag)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return false
}
return true
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: common.DockerBin(),
Args: []string{"image", "push", imageTag},
StreamStdio: true,
})
return err == nil && result.ExitCode == 0
}
func imageCleanup(appName string, imageRepo string, imageTag string, tag int) {

View File

@@ -3,7 +3,6 @@ module github.com/dokku/dokku/plugins/registry
go 1.21
require (
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27
github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000
github.com/spf13/pflag v1.0.5
)
@@ -11,6 +10,7 @@ require (
require (
github.com/alexellis/go-execute/v2 v2.2.1 // indirect
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core registry plugin"
version = "0.33.5"
version = "0.33.7"
[plugin.config]

View File

@@ -20,8 +20,7 @@ Additional commands:`
helpContent = `
registry:login [--password-stdin] <server> <username> [<password>], Login to a docker registry
registry:report [<app>] [<flag>], Displays a registry report for one or more apps
registry:set <app> <property> (<value>), Set or clear a registry property for an app
`
registry:set <app> <property> (<value>), Set or clear a registry property for an app`
)
func main() {
@@ -34,10 +33,8 @@ func main() {
usage()
case "help":
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: "ps",
Args: []string{"-o", "command=", strconv.Itoa(os.Getppid())},
CaptureOutput: true,
StreamStdio: false,
Command: "ps",
Args: []string{"-o", "command=", strconv.Itoa(os.Getppid())},
})
if err == nil && strings.Contains(result.StdoutContents(), "--all") {
fmt.Println(helpContent)

View File

@@ -3,6 +3,7 @@ package registry
import (
"bytes"
"errors"
"fmt"
"io"
"os"
"strings"
@@ -35,29 +36,26 @@ func CommandLogin(server string, username string, password string, passwordStdin
server = "docker.io"
}
command := []string{
common.DockerBin(),
"login",
"--username",
username,
"--password-stdin",
server,
}
buffer := bytes.Buffer{}
buffer.Write([]byte(password + "\n"))
loginCmd := common.NewShellCmd(strings.Join(command, " "))
loginCmd.Command.Stdin = &buffer
if !loginCmd.Execute() {
return errors.New("Failed to log into registry")
result, err := common.CallExecCommand(common.ExecCommandInput{
Command: common.DockerBin(),
Args: []string{"login", "--username", username, "--password-stdin", server},
Stdin: &buffer,
StreamStdio: true,
})
if err != nil {
return fmt.Errorf("Unable to run docker login: %w", err)
}
if result.ExitCode != 0 {
return fmt.Errorf("Unable to run docker login: %s", result.StderrContents())
}
_, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "post-registry-login",
Args: []string{server, username},
StreamStdio: true,
CaptureOutput: false,
_, err = common.CallPlugnTrigger(common.PlugnTriggerInput{
Trigger: "post-registry-login",
Args: []string{server, username},
StreamStdio: true,
Env: map[string]string{
"DOCKER_REGISTRY_PASS": password,
},