fix: Use unique build name for build and tag

This commit is contained in:
Rutvij Mehta
2023-05-15 09:00:35 -07:00
parent 6cf4d8e9e9
commit 49c16053ec
+18 -6
View File
@@ -195,10 +195,11 @@ func (p Plugin) Exec() error {
}
}
cmds = append(cmds, commandBuild(p.Build)) // docker build
buildName := getUniqueBuildName(p.Build.Repo, p.Build.Name)
cmds = append(cmds, commandBuild(p.Build, buildName)) // docker build
for _, tag := range p.Build.Tags {
cmds = append(cmds, commandTag(p.Build, tag)) // docker tag
cmds = append(cmds, commandTag(p.Build, tag, buildName)) // docker tag
if !p.Dryrun {
cmds = append(cmds, commandPush(p.Build, tag)) // docker push
@@ -299,12 +300,12 @@ func commandInfo() *exec.Cmd {
}
// helper function to create the docker build command.
func commandBuild(build Build) *exec.Cmd {
func commandBuild(build Build, buildName string) *exec.Cmd {
args := []string{
"build",
"--rm=true",
"-f", build.Dockerfile,
"-t", build.Name,
"-t", buildName,
}
args = append(args, build.Context)
@@ -461,9 +462,9 @@ func hasProxyBuildArg(build *Build, key string) bool {
}
// helper function to create the docker tag command.
func commandTag(build Build, tag string) *exec.Cmd {
func commandTag(build Build, tag, buildName string) *exec.Cmd {
var (
source = build.Name
source = buildName
target = fmt.Sprintf("%s:%s", build.Repo, tag)
)
return exec.Command(
@@ -582,3 +583,14 @@ func getDigest(buildName string) (string, error) {
}
return "", errors.New("unable to fetch digest")
}
func getUniqueBuildName(repo, buildName string) string {
var shortenCommitSHA string
if len(buildName) <= 8 {
shortenCommitSHA = buildName
} else {
shortenCommitSHA = buildName[:8]
}
imageName := repo[strings.LastIndex(repo, "/")+1:]
return fmt.Sprintf("%s-%s", imageName, shortenCommitSHA)
}