Ошибка установки NPM на CodeBuild при попытке извлечь из частного репозитория Codecommit

Одно из моих репозиториев в codecommit пытается извлечь из другого моего репозитория codecommit.

Внутри первого репо package.json есть зависимость:

"dependencies": {
      "repo-2": "git+https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/repo-2.git#TAG"
}

Моя сборка кода выдает ошибку при попытке npm install (сборка кода использует nodejs12):

npm ERR! Command failed: git clone --mirror -q https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/repo-2.git 
   /root/.npm/_cacache/tmp/git-clone-3d2bf4b6/.git
npm ERR! warning: templates not found in /tmp/pacote-git-template-tmp/git-clone-7cae5b66
npm ERR! 
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-01-26T11_58_45_260Z-debug.log

Я убедился, что в моей политике указаны правильные разрешения:

      - Sid: CodeCommitRepoAccess
        Effect: Allow
        Action:
          - codecommit:GetRepository
          - codecommit:GitPull
          - codecommit:GetFolder
        Resource: 
          - arn:aws:codecommit:eu-west-1:*
      - Sid: CodeCommitListRepos
        Effect: Allow
        Action:
          - codecommit:ListRepositories
        Resource: "*" 

И я добавил помощника git-credential в buildspec.yaml:

env:
   git-credential-helper: yes

Я действительно не понимаю, почему это не удается, и сообщение об ошибке не дает мне никаких идей о том, что нужно исправить. Возможно, у меня пропущены какие-то разрешения в политике? - но поскольку это не ошибка 403, я не уверен. Я могу npm install локально на своей машине без проблем.

РЕДАКТИРОВАТЬ: Чтобы быть более понятным, я пытаюсь построить из репо-1, которое имеет зависимости от репо-2 и репо-3. Кроме того, репо-2 также зависит от репо-3. Я попытался запустить npm install без вложенного частного репозитория (удалил его из package.json в качестве теста), но сборка все равно не удалась.

ОБНОВЛЕНИЕ: я добавил строку git ls-remote -h -t https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/repo-2.git в свою спецификацию сборки, и это правильно возвращает ветки / теги в репо-2, поэтому разрешения выглядят нормально.


person C Murphy    schedule 26.01.2021    source источник


Ответы (1)


Ответ, если у кого-то такая же проблема:

Добавление следующего в мою спецификацию сборки на этапе установки решило проблему:

      - git config --global credential.helper '!aws codecommit credential-helper $@'
      - git config --global credential.UseHttpPath true

Мне также нужно было удалить помощника git-credential из моей спецификации сборки:

env:
    git-credential-helper: yes

Я думаю, что причиной проблемы было то, что npm install не собирал помощника git-credential, когда он был установлен с помощью env, но был выбран, когда он был установлен явно.

person C Murphy    schedule 27.01.2021