diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..19ba48a6f44a04c865e15558f87b5b97151ac3fb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,39 @@ +stages: + - test + - build + +variables: + DEBIAN_FRONTEND: noninteractive + CONTAINER_IMAGE: registry.git.mpib-berlin.mpg.de/castellum/rms_bridge + +test: + stage: test + image: buildpack-deps + before_script: + - apt-get update -q && apt-get install -y -qq python3-pip + - pip3 install -r requirements.txt flake8 + script: + - flake8 + +build: + stage: build + image: docker + services: + - docker:dind + before_script: + - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.git.mpib-berlin.mpg.de + - docker pull $CONTAINER_IMAGE:latest || true + script: + - docker build --cache-from $CONTAINER_IMAGE:latest -t $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME . + after_script: + - > + if [ "$CI_COMMIT_REF_NAME" == "main" ]; then + docker tag $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME $CONTAINER_IMAGE:latest + docker push $CONTAINER_IMAGE:latest + fi + - > + if [ -n "$CI_COMMIT_TAG" ]; then + docker tag $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME $CONTAINER_IMAGE:stable + docker push $CONTAINER_IMAGE:$CI_COMMIT_REF_NAME + docker push $CONTAINER_IMAGE:stable + fi diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..cec77a513bdd6523d1cbffb7cc4df2d53ff92f74 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM buildpack-deps:20.04 + +ENV DEBIAN_FRONTEND noninteractive + +RUN adduser --disabled-login --gecos '' uwsgi +RUN apt-get update -q && apt-get install -y -qq python3-pip python3-wheel uwsgi uwsgi-plugin-python3 + +WORKDIR code/ +COPY rms_bridge.py requirements.txt uwsgi.ini LICENSE ./ +RUN pip3 install -r requirements.txt + +CMD uwsgi uwsgi.ini --die-on-term diff --git a/uwsgi.ini b/uwsgi.ini new file mode 100644 index 0000000000000000000000000000000000000000..8b3d37ce5b312a9254bc4c8607246cbb30e5cbf5 --- /dev/null +++ b/uwsgi.ini @@ -0,0 +1,10 @@ +[uwsgi] +master = true +uid=uwsgi +threads = 4 +protocol=http +socket = :5000 + +plugin=python3 +wsgi-file = rms_bridge.py +callable = app