From 81c8baba671c1736225c009e6011e234edb16347 Mon Sep 17 00:00:00 2001 From: Manuel Kieweg <mail@manuelkieweg.de> Date: Mon, 19 Oct 2020 13:04:43 +0100 Subject: [PATCH] Dockerfile and adapted CI --- .gitlab-ci.yml | 4 +++- Dockerfile | 16 +++++++++++++ build/ci/.build-container.yml | 44 ++++++++++++++++++++++++++++++++++ build/ci/.documentation-ci.yml | 4 ++-- 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100644 build/ci/.build-container.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1ca81acf9..8de33ee98 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,7 +3,8 @@ variables: stages: - test - - documentation + - build + - deploy before_script: - git config --global url."https://$GO_MODULES_USER:$GO_MODULES_ACCESS_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de" @@ -12,3 +13,4 @@ include: - local: '/build/ci/.code-quality-ci.yml' - local: '/build/ci/.documentation-ci.yml' - local: '/build/ci/.security-and-compliance-ci.yml' + - local: '/build/ci/.build-container.yml' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..f7e594ad6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM golang:alpine AS builder +ARG GITLAB_USER +ARG GITLAB_TOKEN +WORKDIR /src/gosdn +COPY . . +RUN git config --global url."https://$GITLAB_USER:$GITLAB_TOKEN@code.fbi.h-da.de".insteadOf "https://code.fbi.h-da.de" +RUN go mod download +RUN CGO_ENABLED=0 GOOS=linux go build ./cmd/gosdn + +FROM alpine:latest +EXPOSE 8443 +COPY --from=builder /src/gosdn/gosdn . +COPY --from=builder /src/gosdn/config . + +ENTRYPOINT [ "./gosdn" ] +CMD [""] diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml new file mode 100644 index 000000000..b33146da2 --- /dev/null +++ b/build/ci/.build-container.yml @@ -0,0 +1,44 @@ +variables: + DOCKER_IMAGE_SHA: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + +build:docker: + stage: build + tags: + - baremetal + script: + - > + docker build \ + --build-arg <GITLAB_USER>=<$GO_MODULES_USER> \ + --build-arg <GITLAB_TOKEN>=<$GO_MODULES_ACCESS_TOKEN> \ + -t $DOCKER_IMAGE_SHA . + +.deploy: &deploy + stage: deploy + needs: ["build:docker"] + tags: + - baremetal + script: + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY + - docker tag $DOCKER_IMAGE_SHA $TAG + - docker push $TAG + +deploy:develop: + variables: + TAG: $CI_REGISTRY_IMAGE:develop + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH + <<: *deploy + +deploy:tagged: + variables: + TAG: $CI_REGISTRY_IMAGE:CI_COMMIT_TAG + rules: + - if: CI_COMMIT_TAG + <<: *deploy + +deploy:latest: + variables: + TAG: $CI_REGISTRY_IMAGE:latest + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + <<: *deploy \ No newline at end of file diff --git a/build/ci/.documentation-ci.yml b/build/ci/.documentation-ci.yml index cd9bbc427..23a5caf7f 100644 --- a/build/ci/.documentation-ci.yml +++ b/build/ci/.documentation-ci.yml @@ -5,7 +5,7 @@ documentation:pdf: name: pandoc/latex entrypoint: - '' - stage: documentation + stage: deploy rules: - changes: - documentation/design/*.md @@ -22,7 +22,7 @@ documentation:pdf: - cargo install mdbook image: name: rust:latest - stage: documentation + stage: deploy script: - mdbook build documentation --dest-dir public cache: -- GitLab