From 7c02828bb5a022da0fbc9bc548d3bedd1a254230 Mon Sep 17 00:00:00 2001 From: Moul <moul@moul.re> Date: Sat, 3 Apr 2021 13:27:05 +0200 Subject: [PATCH] [ci] #388: Add image generation build automation Introduce Dockerfile based on latest Python available Install silkaj via pip and make it available to the CLI Two steps: build, copy Manual triggered job to generate the image Definition as an extensible job for future usages Rename stage --- .gitlab-ci.yml | 28 +++++++++++++++++++++++++--- release/container-pip | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 release/container-pip diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7a6c0f35..9e98867c 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 00000000..7d6da9f3 --- /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"] -- GitLab