Проблема Gitlab CI node_modules - PullRequest
       4

Проблема Gitlab CI node_modules

1 голос
/ 04 февраля 2020

У меня два конвейера с двумя заданиями, одна задача - установить мои пакеты npm, а другая - связать и развернуть. У меня есть один конвейер, который работает на master, когда я делаю запросы на слияние, и другой конвейер, который запускается через webhooks. Мои запросы на слияние работают нормально, но webhook - нет, и я заметил следующую разницу:

В моих запросах на слияние мой npm пакет устанавливает и находит все необходимые пакеты / файлы, но в моем триггере webhook несмотря на то, что он использует тот же коммит и ветвь, похоже, он не устанавливает все пакеты.

Образ со всеми пакетами

Образ, где он кажется, он не устанавливает одинаковое количество пакетов

Есть ли причина, по которой это происходит, даже если они находятся в одной и той же ветке и используют один и тот же коммит, но один является запросом на слияние, а другой - триггерный конвейер? Есть ли что-то, что мне не хватает? Спасибо.

Ниже приводится работа, которая не выполняется

production_publish:
  stage: publish
  before_script:
    - npm config set registry https://npm.ef.com/
    - npm config set //npm.ef.com/:_authToken ${EF_NPM_TOKEN}
  script:
    - npm install
    - npm run bundle
    - node ./devops/deployStatic
  only:
    refs:
      - pipelines
      - master
    variables:
      - $NODE_ENV == "production"
  except:
    refs:
      - staging
      - pushes
      - merge_requests
  tags:
    - storyblok
    - prod

Ниже приводится работа, которая работает нормально

install:
  stage: install
  script:
    - npm config set registry https://npm.ef.com/
    - npm config set //npm.ef.com/:_authToken ${EF_NPM_TOKEN}
    - npm install
  cache:
    key: ${CI_COMMIT_REF_NAME}-${CI_JOB_NAME}
    paths:
      - node_modules/
  artifacts:
    paths:
      - node_modules/
    expire_in: 1 mos
  only:
    refs:
      - master
  except:
    refs:
      - triggers
      - staging
  tags:
    - storyblok
    - prod

e1_id_production_deploy_next_server:
  stage: deploy
  before_script:
    - export COMMIT_TIME=$(git show -s --format=%ct $CI_COMMIT_SHA)
    - export COMMIT_TAG=$(git show -s --format=%H $CI_COMMIT_TAG)
    - export PRODUCT=$(echo $CI_JOB_NAME | cut -d '_' -f 1)
    - export REGION=$(echo $CI_JOB_NAME | cut -d '_' -f 2)
    - export NODE_ENV=$(echo $CI_JOB_NAME | cut -d '_' -f 3)
    - apt-get update && apt-get install -y zip
  script:
    - npm run build
    - zip ./builds/server_build_$COMMIT_TAG.zip -rq * .[^.]* .next/\* -x out/\* -x .git/\*
    - node ./devops/deployServer
  only:
    refs:
      - master
  except:
    - triggers
  tags:
    - storyblok
    - prod
  dependencies:
    - install

Основная проблема снова заключается в npm установить в обоих случаях, в первом случае, похоже, не устанавливаются все мои пакеты. Заранее спасибо за помощь

1 Ответ

0 голосов
/ 04 февраля 2020

Я понял, что основная проблема была в некоторых пакетах, устанавливаемых в devDependencies.

  1. Наша промежуточная среда работала нормально, потому что NODE_ENV не настроен на производство
  2. Наш основная среда, которая была установлена ​​в 2 заданиях, работала, потому что мы фактически устанавливали NODE_ENV после установки npm (во втором задании). В другом задании NODE_ENV устанавливался перед установкой npm, а когда установка NODE_ENV = production npm не устанавливает devDependencies
  3. Исправлено добавление пакетов, требуемых от devDependencies, в качестве зависимостей
...