# GitLab CI/CD 配置文件

stages:
  - dependency-check

# 依赖检查作业
dependency-check:
  stage: dependency-check
  image: node:22-alpine
  before_script:
    - npm install -g pnpm@10.18.2
    - pnpm install
  script:
    # 检查依赖树
    - pnpm list --recursive

    # 安全漏洞扫描
    - pnpm audit

    # 检查过时的依赖
    - pnpm outdated || echo "检查完成"

    # 验证工作区内部包引用
    - echo "验证工作区依赖..."
    - pnpm list @tools/api --recursive

    # 验证环境配置文件
    - echo "验证环境配置文件..."
    - pnpm env:validate

  only:
    - main
    - master
  except:
    - schedules
  tags:
    - docker

# 定时检查作业
scheduled-dependency-check:
  stage: dependency-check
  image: node:22-alpine
  before_script:
    - npm install -g pnpm@10.18.2
    - pnpm install
  script:
    # 检查依赖树
    - pnpm list --recursive

    # 安全漏洞扫描
    - pnpm audit

    # 检查过时的依赖
    - pnpm outdated || echo "检查完成"

    # 验证工作区内部包引用
    - echo "验证工作区依赖..."
    - pnpm list @tools/api --recursive

    # 验证环境配置文件
    - echo "验证环境配置文件..."
    - pnpm env:validate

  only:
    - schedules
  tags:
    - docker

# 合并请求检查作业
merge-request-check:
  stage: dependency-check
  image: node:22-alpine
  before_script:
    - npm install -g pnpm@10.18.2
    - pnpm install
  script:
    # 检查依赖树
    - pnpm list --recursive

    # 验证工作区内部包引用
    - echo "验证工作区依赖..."
    - pnpm list @tools/api --recursive

    # 验证环境配置文件
    - echo "验证环境配置文件..."
    - pnpm env:validate

  only:
    - merge_requests
  tags:
    - docker
