From 34886325f66c190d32fc3fc8d7b1a8cb86a1ffb9 Mon Sep 17 00:00:00 2001 From: Lee Brown Date: Tue, 6 Aug 2019 13:38:51 -0800 Subject: [PATCH] updated gitlab to cache devops tool build --- .gitlab-ci.yml | 2 +- tools/devops/Dockerfile | 24 ++++++++++++++++++++++++ tools/devops/scripts/build.sh | 26 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tools/devops/Dockerfile create mode 100755 tools/devops/scripts/build.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d2bf084..48cb489 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ variables: DOCKER_TLS_CERTDIR: "" before_script: - - 'cd ./tools/devops && make install && cd ../../' + - './tools/devops/scripts/build.sh' stages: - build:dev diff --git a/tools/devops/Dockerfile b/tools/devops/Dockerfile new file mode 100644 index 0000000..dbcf127 --- /dev/null +++ b/tools/devops/Dockerfile @@ -0,0 +1,24 @@ +FROM golang:1.12.6-alpine3.9 + +LABEL maintainer="lee@geeksinthewoods.com" + +RUN apk --update --no-cache add \ + git + +# Change dir to project base. +WORKDIR $GOPATH/src/gitlab.com/geeks-accelerator/oss/saas-starter-kit + +# Enable go modules. +ENV GO111MODULE="on" +COPY go.mod . +COPY go.sum . +RUN go mod download + +COPY internal ./internal +COPY tools/devops ./tools/devops + +WORKDIR ./tools/devops + +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o /devops . + +ENTRYPOINT ["/devops"] diff --git a/tools/devops/scripts/build.sh b/tools/devops/scripts/build.sh new file mode 100755 index 0000000..8ed8d83 --- /dev/null +++ b/tools/devops/scripts/build.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +doPush=0 +if [[ "${CI_REGISTRY_USER}" != "" ]]; then + docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} + + releaseImg="${CI_REGISTRY_IMAGE}:devops-${CI_COMMIT_REF_NAME}" + doPush=1 +else : + releaseImg="devops" +fi + +echo "release image: ${releaseImg}" + +docker pull ${releaseImg} || true + +docker build -f tools/devops/Dockerfile --cache-from ${releaseImg} -t ${releaseImg} . + +if [[ $doPush == 1 ]]; then + docker push ${releaseImg} +fi + +binPath=$GOROOT/bin/devops +echo "installing to: ${binPath}" + +docker run --rm --entrypoint=cat devops /devops > $binPath