Загрузка данных


workflow:
  rules:
    - if: $CI_COMMIT_TAG
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
      when: never

include:
  - project: 'moex-admins/moex-dop/moex-dop-cicd'
    ref: 'itt_template'
    file: '/teams/itt/mr_approval.yml'

  - project: 'moex-admins/moex-dop/moex-dop-cicd'
    ref: 'itt_template'
    file: '/teams/itt/sonar-nodejs.yml'
    rules:
      - if: $CI_PIPELINE_SOURCE == "pipeline"
        when: never
      - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
      - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^bugfix\/.*$/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release\/.*$/
      - if: $CI_COMMIT_REF_NAME =~ /^release\/.*$/ && $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"

stages:
  - build
  - test
  - sast
  - publish

variables:
  PACKAGE_NAME: moex-chart
  SONARQUBE_PROJECT_KEY: info-trade-terminal_${CI_PROJECT_NAME}
  SONARQUBE_PROJECT_NAME: ${CI_PROJECT_NAME}
  SONARQUBE_COVERAGE_REPORT_USE: 'true'
  TEST_ENABLED: 'true'
  SONARQUBE_ENABLED: 'true'
  SONARSCANNER_IMAGE: moex-docker-static-hosted-nexus-dev.tech.moex.com/sonarsource/sonar-scanner-cli:5.0

build:
  stage: build
  image: moex-docker-static-hosted-nexus-dev.tech.moex.com/node:22.11.0-bookworm-jq
  script:
    - |
      npm config set loglevel verbose
      npm config set ignore-scripts true
      rm -f package-lock.json

      VERSION=${CI_COMMIT_TAG:-"0.0.0"}
      npm version $VERSION --no-git-tag-version || true

      npm install
      npm run build:lib:js
      npm run build:lib:types
      npm pack

      mkdir -p pack-result
      mv $PACKAGE_NAME-*.tgz pack-result
  artifacts:
    paths:
      - pack-result/
  rules:
    - if: $CI_COMMIT_TAG
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

test:
  stage: test
  image: moex-docker-static-hosted-nexus-dev.tech.moex.com/node:22.11.0-bookworm-jq
  script:
    - |
      npm config set loglevel verbose
      npm config set ignore-scripts true

      npm install
      npm run coverage

      test -f coverage/lcov.info
  artifacts:
    paths:
      - coverage/lcov.info
    expire_in: 1 day
  rules:
    - if: $CI_COMMIT_TAG
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
    - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^bugfix\/.*$/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release\/.*$/
    - if: $CI_COMMIT_REF_NAME =~ /^release\/.*$/ && $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"

publish:
  stage: publish
  image: moex-docker-static-hosted-nexus-dev.tech.moex.com/node:22.11.0-bookworm-jq
  variables:
    GIT_STRATEGY: none
  dependencies:
    - build
  script:
    - |
      cd pack-result
      TGZ_FILE=$(ls -t ${PACKAGE_NAME}-*.tgz 2>/dev/null | head -n 1)

      curl -v \
        -H "Authorization: Basic ${DOP_NPM_NEXUS_TOKEN}" \
        -X POST \
        "https://nexus-dev.tech.moex.com/service/rest/v1/components?repository=trade-radar-npm-private-hosted" \
        -F "npm.asset=@./${TGZ_FILE};type=application/octet-stream" \
        --fail
  rules:
    - if: $CI_COMMIT_TAG
      when: manual



sonar.sources=src
sonar.tests=src

sonar.test.inclusions=**/*.test.ts,**/*.test.tsx

sonar.coverage.exclusions=**/*.test.ts,**/*.test.tsx,**/*.d.ts,**/*.stories.ts,**/*.stories.tsx,jest.config.ts

sonar.cpd.exclusions=**/*.test.ts,**/*.test.tsx,**/*.mock.ts,**/*.mock.tsx,**/*.stories.ts,**/*.stories.tsx

sonar.javascript.lcov.reportPaths=coverage/lcov.info