adds ci-cd and Docker container

This commit is contained in:
Seraphim Strub 2023-01-26 22:06:58 +01:00
parent 2a3ec00b58
commit 29550290d2
2 changed files with 47 additions and 0 deletions

27
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,27 @@
docker-build:
# Use the official docker image.
image: docker:latest
stage: build
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
# Default branch leaves tag empty (= latest tag)
# All other branches are tagged with the escaped branch name (commit ref slug)
script:
- |
if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
tag=""
echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
else
tag=":$CI_COMMIT_REF_SLUG"
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
fi
- docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
- docker push "$CI_REGISTRY_IMAGE${tag}"
# Run this job in a branch where a Dockerfile exists
rules:
- if: $CI_COMMIT_BRANCH
exists:
- Dockerfile

20
Dockerfile Normal file
View file

@ -0,0 +1,20 @@
FROM golang:latest as builder
ARG GO_CMD=funbot
ENV CGO_ENABLED=0 \
GOARCH=amd64 \
GOOS=linux
WORKDIR /app
ADD . /app/
RUN go build -ldflags "-s -w -extldflags '-static'" -o /main ./cmd/${GO_CMD}/
FROM scratch
COPY --chown=65534:0 --from=builder /main /
USER 65534
WORKDIR /
CMD ["/main"]