diff --git a/.gitlab/.gitlab-ci.yml b/.gitlab/.gitlab-ci.yml index 0e41bfd1e..cbb7eeffb 100644 --- a/.gitlab/.gitlab-ci.yml +++ b/.gitlab/.gitlab-ci.yml @@ -3,6 +3,9 @@ include: - template: Security/License-Scanning.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml +variables: + GO_VERSION: 1.16.3 + stages: - test - build @@ -121,4 +124,20 @@ build for darwin arm64: - go build -o featurebase_darwin_arm64 ./cmd/featurebase artifacts: paths: - - featurebase_darwin_arm64 \ No newline at end of file + - featurebase_darwin_arm64 + +# Build a Docker image with CI/CD and push to the GitLab registry. +build container fb: + image: docker:latest + stage: build + services: + - docker:dind + script: + - | + docker build + --build-arg GO_VERSION=$(GO_VERSION) + --tag featurebase:$(VERSION) . + - docker push "$CI_REGISTRY_IMAGE${tag}" + - @echo Created docker image: featurebase:$(VERSION) + + diff --git a/.gitlab/Dockerfile b/.gitlab/Dockerfile new file mode 100644 index 000000000..115855034 --- /dev/null +++ b/.gitlab/Dockerfile @@ -0,0 +1,56 @@ +ARG GO_VERSION=latest + +####################### +### Lattice builder ### +####################### + +FROM moleculacorp/nodejs:latest as lattice-builder +WORKDIR /lattice + +COPY lattice/package.json ./ +COPY lattice/yarn.lock ./ +RUN yarn install + +COPY lattice ./ +RUN yarn build + +###################### +### Pilosa builder ### +###################### + +FROM golang:${GO_VERSION} as pilosa-builder +ARG MAKE_FLAGS +WORKDIR /pilosa + +RUN go get github.com/rakyll/statik + +COPY . ./ +COPY --from=lattice-builder /lattice/build /lattice +RUN /go/bin/statik -src=/lattice -dest=/pilosa + +RUN make build FLAGS="-o build/featurebase" ${MAKE_FLAGS} + +##################### +### Pilosa runner ### +##################### + +FROM alpine:3.13.2 as runner + +LABEL maintainer "dev@molecula.com" + +RUN apk add --no-cache curl jq + +COPY --from=pilosa-builder /pilosa/build/featurebase / + +COPY LICENSE /LICENSE +COPY NOTICE /NOTICE + +EXPOSE 10101 +VOLUME /data + +ENV PILOSA_DATA_DIR /data +ENV PILOSA_BIND 0.0.0.0:10101 +ENV PILOSA_BIND_GRPC 0.0.0.0:20101 + +ENTRYPOINT ["/featurebase"] +CMD ["server"]