1
0
mirror of https://github.com/raseels-repos/golang-saas-starter-kit.git synced 2025-07-03 00:58:13 +02:00

fix docker build gitlab image

This commit is contained in:
Lee Brown
2019-08-06 12:19:18 -08:00
parent 9418241408
commit 7e5cc45c73
3 changed files with 21 additions and 15 deletions

View File

@ -1,4 +1,4 @@
FROM golang:1.12.6-alpine3.9 AS build_base FROM golang:1.12.6-alpine3.9 AS build_base_golang
LABEL maintainer="lee@geeksinthewoods.com" LABEL maintainer="lee@geeksinthewoods.com"
@ -30,7 +30,7 @@ COPY go.mod .
COPY go.sum . COPY go.sum .
RUN go mod download RUN go mod download
FROM build_base AS builder FROM build_base_golang AS builder
# Copy shared packages. # Copy shared packages.
COPY internal ./internal COPY internal ./internal

View File

@ -1,4 +1,4 @@
FROM golang:1.12.6-alpine3.9 AS build_base FROM golang:1.12.6-alpine3.9 AS build_base_golang
LABEL maintainer="lee@geeksinthewoods.com" LABEL maintainer="lee@geeksinthewoods.com"
@ -14,7 +14,7 @@ COPY go.mod .
COPY go.sum . COPY go.sum .
RUN go mod download RUN go mod download
FROM build_base AS builder FROM build_base_golang AS builder
# Copy shared packages. # Copy shared packages.
COPY internal ./internal COPY internal ./internal

View File

@ -249,19 +249,25 @@ func ServiceBuild(log *log.Logger, req *serviceBuildRequest) error {
log.Printf("\t\tFound build stage %s for caching.\n", buildStageName) log.Printf("\t\tFound build stage %s for caching.\n", buildStageName)
// Generate a checksum for the lines associated with the build stage. // Generate a checksum for the lines associated with the build stage.
stageChecksum := fmt.Sprintf("%x", md5.Sum([]byte(strings.Join(stageLines, "\n")))) buildBaseHashPts := []string{
fmt.Sprintf("%x", md5.Sum([]byte(strings.Join(stageLines, "\n")))),
// Making the assumption that the first stage always imports go.sum. Compute a checksum for the file.
goSumPath := filepath.Join(req.ProjectRoot, "go.sum")
goSumDat, err := ioutil.ReadFile(goSumPath)
if err != nil {
return errors.Wrapf(err, "Failed parse relative path for %s from %s", req.DockerFile, req.ProjectRoot)
} }
goModChecksum := fmt.Sprintf("%x", md5.Sum(goSumDat))
// Combine both checksums used to tag the target build stage. switch buildStageName {
buildBaseHash := fmt.Sprintf("%x", md5.Sum([]byte(stageChecksum+goModChecksum))) case "build_base_golang":
// Compute the checksum for the go.mod file.
goSumPath := filepath.Join(req.ProjectRoot, "go.sum")
goSumDat, err := ioutil.ReadFile(goSumPath)
if err != nil {
return errors.Wrapf(err, "Failed parse relative path for %s from %s", req.DockerFile, req.ProjectRoot)
}
buildBaseHashPts = append(buildBaseHashPts, fmt.Sprintf("%x", md5.Sum(goSumDat)))
}
// Combine all the checksums to be used to tag the target build stage.
buildBaseHash := fmt.Sprintf("%x", md5.Sum([]byte(strings.Join(buildBaseHashPts, "|"))))
// New stage image tag.
buildBaseImageTag = buildStageName + "-" + buildBaseHash[0:8] buildBaseImageTag = buildStageName + "-" + buildBaseHash[0:8]
} }
} }
@ -279,7 +285,7 @@ func ServiceBuild(log *log.Logger, req *serviceBuildRequest) error {
"-p", os.Getenv("CI_REGISTRY_PASSWORD"), "-p", os.Getenv("CI_REGISTRY_PASSWORD"),
ciReg}) ciReg})
buildBaseImage = ciReg + "/" + buildBaseImageTag buildBaseImage = os.Getenv("CI_REGISTRY_IMAGE") + ":" + buildBaseImageTag
pushTargetImg = true pushTargetImg = true
} else { } else {
buildBaseImageTag = req.ProjectName + ":" + req.Env + "-" +req.ServiceName + "-" + buildBaseImageTag buildBaseImageTag = req.ProjectName + ":" + req.Env + "-" +req.ServiceName + "-" + buildBaseImageTag