From cdbb18618725848deee3f45a079100fa35d77359 Mon Sep 17 00:00:00 2001 From: Marco Cavalli Date: Fri, 7 Nov 2025 11:48:30 +0100 Subject: [PATCH 1/2] feat: add dockerfile and pipeline --- .gitlab-ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 8 +++++++ 2 files changed, 68 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..64c2d184 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,60 @@ +stages: + - build + - test + +variables: + DOCKER_DRIVER: overlay2 + IMAGE_NAME: registry.gitlab.com/$CI_PROJECT_PATH/app + DOCKER_TLS_CERTDIR: "" + +build_image: + stage: build + image: docker:25.0.3 + services: + - docker:25.0.3-dind + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + changes: + - Dockerfile + - requirements.txt + + - if: '$CI_COMMIT_BRANCH == "develop"' + changes: + - Dockerfile + - requirements.txt + - when: never + + script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + + - docker pull $IMAGE_NAME:cache || true + + - docker build \ + --cache-from=$IMAGE_NAME:cache \ + -t $IMAGE_NAME:$CI_COMMIT_SHA \ + -t $IMAGE_NAME:cache \ + . + + - docker push $IMAGE_NAME:$CI_COMMIT_SHA + - docker push $IMAGE_NAME:cache + + artifacts: + expire_in: 1 week + reports: + dotenv: build.env + after_script: + - echo "IMAGE_TAG=$CI_COMMIT_SHA" >> build.env + +test_documentation: + stage: test + image: $IMAGE_NAME:$CI_COMMIT_SHA + needs: ["build_image"] + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: '$CI_COMMIT_BRANCH == "develop"' + - when: never + variables: + GIT_STRATEGY: clone + script: + - ls -la + - python -m unittest discover -s ./doc/tests -t ./doc \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..8ded3f54 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.12 + +WORKDIR /app +COPY requirements.txt . + +RUN pip install --no-cache-dir -r requirements.txt + +CMD ["python", "-m", "unittest", "discover", "-s", "./doc/tests", "-t", "./doc"] \ No newline at end of file -- GitLab From ffbf707a3d991fa72143b158a417e3c55221a52d Mon Sep 17 00:00:00 2001 From: Marco Cavalli Date: Fri, 7 Nov 2025 12:43:51 +0100 Subject: [PATCH 2/2] fix: update dockerfile and pipeline --- .gitlab-ci.yml | 50 +++++++++++++++++++++++++++++++++++--------------- Dockerfile | 2 +- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 64c2d184..79a0c74c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,8 +4,8 @@ stages: variables: DOCKER_DRIVER: overlay2 - IMAGE_NAME: registry.gitlab.com/$CI_PROJECT_PATH/app DOCKER_TLS_CERTDIR: "" + GIT_CLEAN_FLAGS: -ffdx build_image: stage: build @@ -17,44 +17,64 @@ build_image: changes: - Dockerfile - requirements.txt - - if: '$CI_COMMIT_BRANCH == "develop"' changes: - Dockerfile - requirements.txt - when: never + variables: + GIT_STRATEGY: clone + GIT_CLEAN_FLAGS: -ffdx + + before_script: + - echo "CI_REGISTRY = $CI_REGISTRY" + - echo "CI_PROJECT_PATH = $CI_PROJECT_PATH" + - export IMAGE_NAME="$CI_REGISTRY/$(echo $CI_PROJECT_PATH | tr '[:upper:]' '[:lower:]')" + - echo "IMAGE_NAME = $IMAGE_NAME" script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - docker pull $IMAGE_NAME:cache || true - - docker build \ - --cache-from=$IMAGE_NAME:cache \ - -t $IMAGE_NAME:$CI_COMMIT_SHA \ - -t $IMAGE_NAME:cache \ - . + - docker build --cache-from=$IMAGE_NAME:cache -t $IMAGE_NAME:$CI_COMMIT_SHA -t $IMAGE_NAME:cache . - docker push $IMAGE_NAME:$CI_COMMIT_SHA - docker push $IMAGE_NAME:cache + + - echo "IMAGE_TAG=$CI_COMMIT_SHA" > build.env + - echo "IMAGE_NAME=$IMAGE_NAME" >> build.env + - cat build.env artifacts: - expire_in: 1 week + expire_in: 3 months reports: dotenv: build.env - after_script: - - echo "IMAGE_TAG=$CI_COMMIT_SHA" >> build.env test_documentation: stage: test - image: $IMAGE_NAME:$CI_COMMIT_SHA - needs: ["build_image"] + image: docker:25.0.3 + services: + - docker:25.0.3-dind + needs: + - job: build_image + artifacts: true rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_COMMIT_BRANCH == "develop"' - when: never variables: - GIT_STRATEGY: clone + GIT_STRATEGY: clone + GIT_CLEAN_FLAGS: -ffdx + before_script: + - echo "IMAGE_NAME from artifact = $IMAGE_NAME" + - echo "IMAGE_TAG from artifact = $IMAGE_TAG" + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - docker pull $IMAGE_NAME:$IMAGE_TAG script: - - ls -la - - python -m unittest discover -s ./doc/tests -t ./doc \ No newline at end of file + - echo "Running tests in container..." + - docker run --rm -v $CI_PROJECT_DIR:/workspace -w /workspace $IMAGE_NAME:$IMAGE_TAG python -m unittest discover -s ./doc/tests -t ./doc + + after_script: + - rm -rf __pycache__ || true + - find . -type d -name __pycache__ -exec rm -rf {} + || true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 8ded3f54..8410e691 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.12 +FROM python:3.11 WORKDIR /app COPY requirements.txt . -- GitLab