Как добавить модуль приватной ноды в GitLab CI

Я смог использовать свой частный репозиторий (в GitLab) в качестве локального модуля узла для приложения, которое я разрабатываю. Я сделал это, сгенерировав личный токен доступа в GitLab, а затем запустив эту команду локально с PAT в качестве переменной среды:git config --global url."https://oauth2:${GITLAB_PERSONAL_ACCESS_TOKEN}@gitlab.com/".insteadOf https://gitlab.com/

Но когда я пытаюсь развернуть свое приложение, делая то же самое с GitLab CI, мои задания завершаются с ошибкой:

HTTP Basic: доступ запрещен... Ошибка аутентификации для «https://gitlab.com/myuser/myrepo.git/»

Я убедился, что PAT находится в переменной среды GitLab CI и что к нему можно получить доступ. Он также используется в моих тестовых заданиях (сборка, анализ, шутка), и я могу подтвердить, что он используется, потому что, когда я вынимаю его из этих заданий, они также терпят неудачу с той же ошибкой. Так что это работает для них, но не для развертывания.

пакет.json

      ...
"dependencies": {
  "my-dependency": "git+https://gitlab.com/myuser/myrepo.git",
...

.gitlab-ci.yml (lint, jest, сборка завершаются с одной и той же ошибкой)

      image: node:14.17.1

.git_config: &git_config |
  git config --global url."https://oauth2:${GITLAB_PERSONAL_ACCESS_TOKEN}@gitlab.com/".insteadOf https://gitlab.com/

.npm_install: &npm_install |
  npm ci --cache .npm --prefer-offline --ignore-scripts --include=dev

stages:
  - test
  - deploy

# Cache modules in between jobs
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .npm/

lint:
  stage: test
  before_script:
    - *git_config
    - *npm_install
  script:
    - npm run lint

jest:
  stage: test
  before_script:
    - *git_config
    - *npm_install
  script:
    - npm test

build:
  stage: test
  script:
    - *git_config
    - NODE_ENV=production npm ci # this is what Heroku will run

deploy-prod:
  stage: deploy
  image: ruby:latest
  before_script:
    - *git_config
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
  script:
    - dpl --provider=heroku --app=$HEROKU_APP_PROD --api-key=$HEROKU_API_KEY
  only:
    - master
    - production
  environment:
    name: production
    url: https://app.myapp.com
  when: manual

1 ответ

В вашейpackage.jsonвключите свою зависимость следующим образом:

      "package-name": "git+https://USER:PAT_TOKEN@gitlab.com/USER/package-name"

Замените имя пакета , USER и PAT_TOKEN .

Другие вопросы по тегам