Как использовать команду npm link в Azure конвейерах - PullRequest
0 голосов
/ 25 апреля 2020

Я создал библиотечный модуль SPFX, в котором есть код для совместного использования с несколькими веб-частями, аналогичными здесь . Я использовал команду npm link <lib name>, чтобы связать ее. Он хорошо работает как в локальной среде, так и при развертывании вручную в каталоге онлайн-приложений SharePoint. Но если я разверну его с помощью Azure Pipelines (сценарий YAML), он всегда выдаст сообщение об ошибке и библиотека не найдена.

Я убедился, что библиотека сначала создается, а затем другие конвейеры создаются в конвейере ( вводя этапы) но все равно не находит библиотеку. Есть ли способ запустить npm link как задачу конвейера?

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

После попытки описанных выше решений он все еще не работал, поэтому я опубликовал его как пакет NPM с помощью команды npm publish. Это решило проблему. Мы также можем использовать эту команду в YAML для автоматической публикации sh пакета каждый раз, когда мы собираем, но в моем случае это не требовалось, поэтому я не использовал его.

0 голосов
/ 28 апреля 2020

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

Допустим, библиотека построена на этапе A, а другие веб-части созданы на этапе B. В качестве обходного пути вам нужно будет опубликовать sh библиотеку в качестве артефактов на azure сервере devops с использованием Publi sh Задача Build Artifacts на этапе A. А затем загрузите библиотеку в агент, который создает другие веб-части на этапе B, используя Загрузить задачу Build Artifacts .

. Ниже пример:

Библиотека построена на этапе A и опубликована на azure devops-сервере как артефакты с именем library.

На этапе B библиотечные артефакты загружаются из azure devops сервер в папку $(Build.ArtifactStagingDirectory). Затем вы можете обратиться к библиотеке по пути $(Build.ArtifactStagingDirectory)/library для выполнения следующих задач на этапе B.

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

stages:
- stage: A
  jobs:
  - job: Library
    pool: 
      vmImage: "windows-latest"
    steps:
    ...
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: {path to the library}
        ArtifactName: library


- stage: B
  dependsOn: A
  jobs:
  - job: WebParts1
    pool: 
      vmImage: "windows-latest"
    steps:

    - task: DownloadBuildArtifacts@0
      inputs:
        downloadPath: $(Build.ArtifactStagingDirectory)
        buildType: current
        artifactName: library
    ...

  - job: WebParts2
    pool: 
      vmImage: "windows-latest"
    steps:

    - task: DownloadBuildArtifacts@0
      inputs:
        downloadPath: $(Build.ArtifactStagingDirectory)
        buildType: current
        artifactName: library
    ...
...