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"
@ -30,7 +30,7 @@ COPY go.mod .
COPY go.sum .
RUN go mod download
FROM build_base AS builder
FROM build_base_golang AS builder
# Copy shared packages.
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"
@ -14,7 +14,7 @@ COPY go.mod .
COPY go.sum .
RUN go mod download
FROM build_base AS builder
FROM build_base_golang AS builder
# Copy shared packages.
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)
// Generate a checksum for the lines associated with the build stage.
stageChecksum := 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)
buildBaseHashPts := []string{
fmt.Sprintf("%x", md5.Sum([]byte(strings.Join(stageLines, "\n")))),
}
goModChecksum := fmt.Sprintf("%x", md5.Sum(goSumDat))
// Combine both checksums used to tag the target build stage.
buildBaseHash := fmt.Sprintf("%x", md5.Sum([]byte(stageChecksum+goModChecksum)))
switch buildStageName {
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]
}
}
@ -279,7 +285,7 @@ func ServiceBuild(log *log.Logger, req *serviceBuildRequest) error {
"-p", os.Getenv("CI_REGISTRY_PASSWORD"),
ciReg})
buildBaseImage = ciReg + "/" + buildBaseImageTag
buildBaseImage = os.Getenv("CI_REGISTRY_IMAGE") + ":" + buildBaseImageTag
pushTargetImg = true
} else {
buildBaseImageTag = req.ProjectName + ":" + req.Env + "-" +req.ServiceName + "-" + buildBaseImageTag