diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7a6c0f350cee3bd7bffc8279f31cdd8cf3531a7e..9e98867c8b81a11592bf83a3e755e97ad687d85f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ stages: - checks - tests - - publish + - package - coverage variables: @@ -76,8 +76,30 @@ tests-3.9: variables: PYTHON_VERSION: "3.9" +.container: + stage: package + tags: [docker] + image: docker:latest + services: + - docker:dind + script: + - docker pull $CI_REGISTRY_IMAGE:$IMAGE_TAG || true + - docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" -f release/container-pip . + - docker login -u "$CI_REGISTRY_USER" -p "$CI_BUILD_TOKEN" $CI_REGISTRY + - docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - docker push "$CI_REGISTRY_IMAGE:$IMAGE_TAG" + - docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "$CI_REGISTRY_IMAGE:latest" + - docker push "$CI_REGISTRY_IMAGE:latest" + +container: + extends: .container + variables: + IMAGE_TAG: "dev" + rules: + - when: manual + pypi_test: - stage: publish + stage: package rules: - if: $CI_COMMIT_TAG when: manual @@ -86,7 +108,7 @@ pypi_test: - poetry publish --build --username $PYPI_TEST_LOGIN --password $PYPI_TEST_PASSWORD --repository pypi_test pypi: - stage: publish + stage: package rules: - if: $CI_COMMIT_TAG when: manual diff --git a/release/container-pip b/release/container-pip new file mode 100644 index 0000000000000000000000000000000000000000..7d6da9f39ac8d72ea39713cd7ef8289dbde3affb --- /dev/null +++ b/release/container-pip @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------------ +# Build Stage +# ------------------------------------------------------------------------------ +ARG PYTHON_VERS=3.9 +FROM registry.duniter.org/docker/python3/poetry/${PYTHON_VERS}:latest as build + +WORKDIR /silkaj + +# Copy source tree +COPY ./ ./ + +# Install Silkaj +RUN pip install . + +# ------------------------------------------------------------------------------ +# Final Stage +# ------------------------------------------------------------------------------ +FROM registry.duniter.org/docker/python3/poetry/${PYTHON_VERS}:latest +ARG PYTHON_VERS=3.9 + +# Create silkaj group and user +RUN groupadd -g 1111 silkaj && \ + useradd -d /silkaj -g silkaj -u 1111 silkaj + +# Copy the build artifact from the build stage +COPY --from=build /usr/local/bin/silkaj /usr/local/bin/silkaj +COPY --from=build /usr/local/lib/python${PYTHON_VERS}/site-packages/ /usr/local/lib/python${PYTHON_VERS}/site-packages/ + +# Use silkaj user +USER silkaj +WORKDIR /usr/local/lib/python${PYTHON_VERS}/site-packages/silkaj + +CMD ["/usr/local/bin/silkaj"]