第一次
This commit is contained in:
111
.gitlab-ci.yml
Normal file
111
.gitlab-ci.yml
Normal file
@@ -0,0 +1,111 @@
|
||||
# =============================================
|
||||
# GitLab CI for fst_data_pipeline
|
||||
# =============================================
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
GIT_DEPTH: 0
|
||||
REGISTRY: "artifacts.swf.i.mercedes-benz.com"
|
||||
IMAGE_NAME: "${REGISTRY}/panguprod-docker/fst_data_pipeline/root_db_api"
|
||||
DOCKER_CLI_EXPERIMENTAL: "enabled"
|
||||
|
||||
default:
|
||||
tags:
|
||||
- shared-xsmall-x86-linux
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
stages:
|
||||
- check-code-jobs
|
||||
- build-docker-image
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# 1️⃣ 代码格式 & lint 检查
|
||||
# ------------------------------------------------------------------
|
||||
python-lint-format:
|
||||
stage: check-code-jobs
|
||||
image: ${REGISTRY}/panguprod-docker/perception-3d/code-format:v1
|
||||
script:
|
||||
- ./infra/tencent/docker_ci/entrypoint_python_format.sh --check --no-lint --fetch
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# pytest + 覆盖率
|
||||
# ------------------------------------------------------------------
|
||||
root-db-api-pytest-coverage:
|
||||
stage: check-code-jobs
|
||||
image: ${REGISTRY}/panguprod-docker/fst_data_pipeline/python:3.12-slim-bookworm
|
||||
needs: ["python-lint-format"]
|
||||
before_script:
|
||||
- python -m pip install --user uv
|
||||
- export PATH=$HOME/.local/bin:$PATH
|
||||
- cd fst_data_pipeline/apps/root_db_api
|
||||
- uv sync --dev
|
||||
script:
|
||||
- mkdir -p tests/results
|
||||
- >
|
||||
uv run pytest
|
||||
--cov=fst_data_pipeline/apps/root_db_api
|
||||
--cov-report=term-missing
|
||||
--cov-report=xml:tests/results/coverage.xml
|
||||
--cov-report=html:tests/results/htmlcov
|
||||
--junitxml=tests/results/report.xml
|
||||
coverage: '/TOTAL.*\s+(\d+%)$/'
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- fst_data_pipeline/apps/root_db_api/tests/results/htmlcov/
|
||||
reports:
|
||||
junit: fst_data_pipeline/apps/root_db_api/tests/results/report.xml
|
||||
coverage_report:
|
||||
coverage_format: cobertura
|
||||
path: fst_data_pipeline/apps/root_db_api/tests/results/coverage.xml
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# 2️⃣ 构建并推送 Docker 镜像 (Kaniko)
|
||||
# ------------------------------------------------------------------
|
||||
build-docker-image:
|
||||
stage: build-docker-image
|
||||
image:
|
||||
name: gcr.io/kaniko-project/executor:v1.23.0-debug
|
||||
entrypoint: [""]
|
||||
variables:
|
||||
DOCKER_CONFIG: /kaniko/.docker
|
||||
before_script:
|
||||
- mkdir -p /kaniko/.docker
|
||||
- cp "$DOCKER_AUTH_CONFIG" /kaniko/.docker/config.json
|
||||
script:
|
||||
- |
|
||||
if [[ -n "$CI_COMMIT_TAG" ]]; then
|
||||
IMAGE_TAG="${IMAGE_NAME}:${CI_COMMIT_TAG}"
|
||||
else
|
||||
IMAGE_TAG="${IMAGE_NAME}:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
|
||||
fi
|
||||
/kaniko/executor \
|
||||
--context "${CI_PROJECT_DIR}" \
|
||||
--dockerfile "${CI_PROJECT_DIR}/infra/tencent/docker_ci/Dockerfile.root_db" \
|
||||
--destination "${IMAGE_TAG}"
|
||||
needs:
|
||||
- job: python-lint-format
|
||||
optional: true
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
changes:
|
||||
- fst_data_pipeline/apps/root_db_api/**/*
|
||||
- fst_data_pipeline/apps/root_db_api/pyproject.toml
|
||||
- fst_data_pipeline/apps/root_db_api/uv.lock
|
||||
- infra/tencent/docker_ci/Dockerfile.root_db
|
||||
- pyproject.toml
|
||||
- uv.lock
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == "web"
|
||||
Reference in New Issue
Block a user