image: node:22-alpine stages: - test - qualimetrie - deploy test_job: stage: test before_script: - npm install -g pnpm - pnpm install --frozen-lockfile script: # Run tests with coverage report - pnpm exec jest --coverage - pnpm run qualimetrie:full artifacts: paths: - coverage/ - rapport.html when: always qualimetrie: stage: qualimetrie before_script: - npm install -g pnpm - pnpm install --frozen-lockfile - pnpm run build script: # Build CLI and exécute l’agent de qualimétrie complet pour générer le rapport - pnpm run build - node dist/cli/index.js qualimetrie:full > qualimetrie-report.md artifacts: paths: - qualimetrie-report.md when: always docker-build: stage: deploy image: docker:24 services: - docker:24-dind script: - echo "$CONTAINER_REGISTRY_PASSWORD" | docker login docker.io --username "$CONTAINER_REGISTRY_USERNAME" --password-stdin - VERSION=${CI_COMMIT_TAG:-0.0.0-build-${CI_COMMIT_SHORT_SHA:-${CI_COMMIT_SHA:0:8}}-$(date +%Y%m%d%H%M)} - IMAGE="docker.io/ftprod/ftprod-ai-tools" - docker build -t "$IMAGE:$VERSION" . - docker push "$IMAGE:$VERSION" only: - tags artifacts: when: always expire_in: 1 week npm-publish: stage: deploy image: node:22-alpine before_script: - npm install -g pnpm - pnpm install --frozen-lockfile script: - pnpm run build - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc - pnpm publish --access public only: - tags except: - branches