diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..af3abf7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,37 @@ +stages: + - test + - build + +run tests: + image: dlang2/dmd-ubuntu:2.083.1 + script: + - dub test + +auto build and push: + image: docker:stable + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + stage: build + script: + - docker pull $CI_REGISTRY_IMAGE:latest || true + - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG . + - docker push $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + only: + - master + tags: + - build + +build and push: + image: docker:stable + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + stage: build + script: + - docker pull $CI_REGISTRY_IMAGE:latest || true + - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG . + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + except: + - master + when: manual + tags: + - build diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a177eba --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM dlang2/dmd-ubuntu:2.083.1 as build +WORKDIR /dlang/d-webservice-example +COPY . . + +RUN dub build --build=release + +FROM ubuntu:17.10 +EXPOSE 8080 +ENV DEBIAN_FRONTEND=noninteractive + +RUN set -ex && \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates \ + libssl1.0.0 + +COPY --from=build /dlang/d-webservice-example/d-webservice-example /dlang/d-webservice-example/d-webservice-example + +RUN useradd --user-group --create-home --shell /bin/false app && \ + chown -R app:app /dlang/d-webservice-example +USER app + +CMD ["/dlang/d-webservice-example/d-webservice-example]