1
0
mirror of https://github.com/raseels-repos/golang-saas-starter-kit.git synced 2025-08-08 22:36:41 +02:00

devsops remove build tags, only release image

This commit is contained in:
Lee Brown
2019-07-14 12:39:05 -08:00
parent e46c6317e5
commit 95e0d28c3b
3 changed files with 6 additions and 37 deletions

View File

@ -123,8 +123,7 @@ func exists(path string) (bool, error) {
return true, err
}
// execCmds executes a set of commands.
// execCmds executes a set of commands using the current env variables.
func execCmds(log *log.Logger, workDir string, cmds ...[]string) (error) {
for _, cmdVals := range cmds {
cmd := exec.Command(cmdVals[0], cmdVals[1:]...)

View File

@ -126,7 +126,6 @@ type serviceDeployRequest struct {
DBInstance *rds.CreateDBInstanceInput
ReleaseImage string
BuildTags []string
flags ServiceDeployFlags
_awsSession *session.Session
}

View File

@ -812,19 +812,16 @@ func ServiceDeploy(log *log.Logger, req *serviceDeployRequest) error {
// Tag of release image will always include one with environment and service name.
tag1 := req.Env + "-" + req.ServiceName
req.BuildTags = append(req.BuildTags, tag1)
// Generate tags for the release image.
if v := os.Getenv("CI_COMMIT_REF_NAME"); v != "" {
tag2 := tag1 + "-" + v
req.BuildTags = append(req.BuildTags, tag2)
req.ReleaseImage = *awsRepo.RepositoryUri + ":" + tag2
} else {
req.ReleaseImage = *awsRepo.RepositoryUri + ":" + tag1
}
log.Printf("\t\trelease image: %s", req.ReleaseImage)
log.Printf("\t\ttags: %s", strings.Join(req.BuildTags, " "))
log.Printf("\t%s\tRelease image valid.", tests.Success)
log.Println("ECR - Retrieve authorization token used for docker login.")
@ -862,32 +859,17 @@ func ServiceDeploy(log *log.Logger, req *serviceDeployRequest) error {
return errors.Wrapf(err, "Failed parse relative path for %s from %s", req.DockerFile, req.ProjectRoot)
}
// The initial build command slice.
buildCmd := []string{
"docker", "build",
"--file="+dockerFile,
"--build-arg", "service="+req.ServiceName,
"--build-arg", "env="+req.Env,
"-t", req.ReleaseImage,
".",
}
// Append the build tags.
var builtImageTags []string
for _, t := range req.BuildTags {
if strings.HasSuffix(req.ReleaseImage, ":"+t) {
// skip duplicate image tags
continue
}
imageTag := req.ReleaseImage + ":" + t
buildCmd = append(buildCmd, "-t", imageTag)
builtImageTags = append(builtImageTags, imageTag)
}
// Append the build context to the build command.
buildCmd = append(buildCmd, ".")
log.Println("Starting docker build")
err = execCmds(log, req.ProjectRoot, buildCmd)
if err != nil {
return errors.Wrap(err, "Failed to build docker image")
@ -895,29 +877,18 @@ func ServiceDeploy(log *log.Logger, req *serviceDeployRequest) error {
// Push the newly built image of the Docker container to the registry.
if req.NoPush == false {
log.Printf("\t\tPush release image %s", req.ReleaseImage)
log.Printf("\t\tDocker Login")
err = execCmds(log, req.ProjectRoot, dockerLoginCmd)
if err != nil {
return errors.Wrapf(err, "Failed to push docker image %s", req.ReleaseImage)
return errors.Wrapf(err, "Failed to login to AWS ECR")
}
log.Printf("\t\tPush release image %s", req.ReleaseImage)
err = execCmds(log, req.ProjectRoot, []string{"docker", "push", req.ReleaseImage})
if err != nil {
return errors.Wrapf(err, "Failed to push docker image %s", req.ReleaseImage)
}
// Itererate through the build tags and push the associated Docker container image.
for _, t := range builtImageTags {
log.Printf("\t\tpush tag %s", t)
err = execCmds(log, req.ProjectRoot, []string{"docker", "push", t})
if err != nil {
return errors.Wrapf(err, "Failed to push docker image %s", t)
}
}
}
log.Printf("\t%s\tbuild complete.\n", tests.Success)