Loading .gitlab-ci.yml +38 −77 Changes for .gitlab-ci.yml: 38 added lines, 77 removed lines. Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ default: image: python:3.12-slim cache: paths: - .cache/pip - .cache/uv before_script: - pip install -r "$CI_PROJECT_DIR/mcp_module/requirements.txt" - pip install -r "$CI_PROJECT_DIR/ai_agent/requirements.txt" - pip install mypy pytest ruff import-linter - export PYTHONPATH="$CI_PROJECT_DIR:$PYTHONPATH" - cd "$CI_PROJECT_DIR/${BACKEND_DIR:-.}" - pip install uv - export UV_SYSTEM_CERTS=1 - uv sync --locked --extra dev - . .venv/bin/activate stages: - type Loading @@ -15,103 +16,63 @@ stages: - lint - format - test - build - build-and-push variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" SOURCE_DIRS: "mcp_module/ ai_agent/" TEST_DIRS: "tests/" include: - template: Security/SAST.gitlab-ci.yml sast: stage: test UV_CACHE_DIR: "$CI_PROJECT_DIR/.cache/uv" type: stage: type tags: - docker script: - mypy $SOURCE_DIRS - mypy src/ tests/ architecture: stage: architecture tags: - docker script: - | if [ -f "$CI_PROJECT_DIR/.importlinter" ] || \ [ -f "$CI_PROJECT_DIR/.importlinter.ini" ] || \ [ -f "$CI_PROJECT_DIR/pyproject.toml" ] || \ [ -f "$CI_PROJECT_DIR/setup.cfg" ]; then lint-imports else echo "No import-linter config found; skipping architecture check." fi - lint-imports lint: stage: lint tags: - docker script: - ruff check $SOURCE_DIRS $TEST_DIRS - ruff check src/ tests/ format: stage: format tags: - docker script: - ruff format --check $SOURCE_DIRS $TEST_DIRS - ruff format --check src/ tests/ test: stage: test tags: - docker variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" services: - docker:dind script: - pytest - pytest tests/unit tests/integration --cov=src/open_exposure_gateway --cov-branch --cov-report=term-missing || [ $? -eq 5 ] #bypass no tests found error. coverage: '/TOTAL.+ ([0-9]{1,3}(?:\.[0-9]+)?%)/' .variables-template: tags: - shell before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - | if [ -n "$CI_COMMIT_TAG" ]; then export IMAGE_TAG="$CI_COMMIT_TAG" elif [ "$CI_COMMIT_REF_NAME" = "main" ]; then export IMAGE_TAG="latest" elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then export IMAGE_TAG="develop" else export IMAGE_TAG="$(echo "$CI_COMMIT_REF_NAME" | tr '/' '-')" fi echo "Using image tag: $IMAGE_TAG" build-ai-agent: stage: build extends: .variables-template variables: IMAGE_NAME: "ai_agent" conformance: stage: test allow_failure: true script: - echo "Building ${IMAGE_NAME} image..." - docker build --network=host -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" -f "$CI_PROJECT_DIR/$IMAGE_NAME/Dockerfile" "$CI_PROJECT_DIR/$IMAGE_NAME" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" only: - main - develop - tags - pytest tests/conformance build-mcp-module: stage: build extends: .variables-template build-and-push: stage: build-and-push image: docker:cli variables: IMAGE_NAME: "mcp_module" DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" services: - docker:dind before_script: - docker info script: - echo "Building ${IMAGE_NAME} image..." - docker build --network=host -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" -f "$CI_PROJECT_DIR/$IMAGE_NAME/Dockerfile" "$CI_PROJECT_DIR/$IMAGE_NAME" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" only: - main - develop - tags No newline at end of file - export TEST_IMAGE_TAG="ci-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin - docker buildx build --provenance=false --network=host -t "$CI_REGISTRY_IMAGE:$TEST_IMAGE_TAG" --push . - docker logout "$CI_REGISTRY" rules: - if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "develop"' Loading
.gitlab-ci.yml +38 −77 Changes for .gitlab-ci.yml: 38 added lines, 77 removed lines. Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ default: image: python:3.12-slim cache: paths: - .cache/pip - .cache/uv before_script: - pip install -r "$CI_PROJECT_DIR/mcp_module/requirements.txt" - pip install -r "$CI_PROJECT_DIR/ai_agent/requirements.txt" - pip install mypy pytest ruff import-linter - export PYTHONPATH="$CI_PROJECT_DIR:$PYTHONPATH" - cd "$CI_PROJECT_DIR/${BACKEND_DIR:-.}" - pip install uv - export UV_SYSTEM_CERTS=1 - uv sync --locked --extra dev - . .venv/bin/activate stages: - type Loading @@ -15,103 +16,63 @@ stages: - lint - format - test - build - build-and-push variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" SOURCE_DIRS: "mcp_module/ ai_agent/" TEST_DIRS: "tests/" include: - template: Security/SAST.gitlab-ci.yml sast: stage: test UV_CACHE_DIR: "$CI_PROJECT_DIR/.cache/uv" type: stage: type tags: - docker script: - mypy $SOURCE_DIRS - mypy src/ tests/ architecture: stage: architecture tags: - docker script: - | if [ -f "$CI_PROJECT_DIR/.importlinter" ] || \ [ -f "$CI_PROJECT_DIR/.importlinter.ini" ] || \ [ -f "$CI_PROJECT_DIR/pyproject.toml" ] || \ [ -f "$CI_PROJECT_DIR/setup.cfg" ]; then lint-imports else echo "No import-linter config found; skipping architecture check." fi - lint-imports lint: stage: lint tags: - docker script: - ruff check $SOURCE_DIRS $TEST_DIRS - ruff check src/ tests/ format: stage: format tags: - docker script: - ruff format --check $SOURCE_DIRS $TEST_DIRS - ruff format --check src/ tests/ test: stage: test tags: - docker variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" services: - docker:dind script: - pytest - pytest tests/unit tests/integration --cov=src/open_exposure_gateway --cov-branch --cov-report=term-missing || [ $? -eq 5 ] #bypass no tests found error. coverage: '/TOTAL.+ ([0-9]{1,3}(?:\.[0-9]+)?%)/' .variables-template: tags: - shell before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - | if [ -n "$CI_COMMIT_TAG" ]; then export IMAGE_TAG="$CI_COMMIT_TAG" elif [ "$CI_COMMIT_REF_NAME" = "main" ]; then export IMAGE_TAG="latest" elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then export IMAGE_TAG="develop" else export IMAGE_TAG="$(echo "$CI_COMMIT_REF_NAME" | tr '/' '-')" fi echo "Using image tag: $IMAGE_TAG" build-ai-agent: stage: build extends: .variables-template variables: IMAGE_NAME: "ai_agent" conformance: stage: test allow_failure: true script: - echo "Building ${IMAGE_NAME} image..." - docker build --network=host -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" -f "$CI_PROJECT_DIR/$IMAGE_NAME/Dockerfile" "$CI_PROJECT_DIR/$IMAGE_NAME" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" only: - main - develop - tags - pytest tests/conformance build-mcp-module: stage: build extends: .variables-template build-and-push: stage: build-and-push image: docker:cli variables: IMAGE_NAME: "mcp_module" DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" services: - docker:dind before_script: - docker info script: - echo "Building ${IMAGE_NAME} image..." - docker build --network=host -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" -f "$CI_PROJECT_DIR/$IMAGE_NAME/Dockerfile" "$CI_PROJECT_DIR/$IMAGE_NAME" - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" only: - main - develop - tags No newline at end of file - export TEST_IMAGE_TAG="ci-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin - docker buildx build --provenance=false --network=host -t "$CI_REGISTRY_IMAGE:$TEST_IMAGE_TAG" --push . - docker logout "$CI_REGISTRY" rules: - if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "develop"'