совместное использование сценария / приложения NPM через организации на базе Azure DevOps с использованием артефактов Azure

У меня есть репозиторий git, содержащий приложение node.js (всего 1 файл) с его package.json.

Мне нужно использовать это приложение из конвейера azure DevOps других организаций, поэтому я создал конвейер в этом проекте nodejs, который обеспечивает управление версиями + публикацию этого скрипта в фиде артефактов Azure на основе NPM.

В другой организации, в конвейере, где я хотел использовать это приложение, я использовал задачу npm, настроенную следующим образом:

steps:
- task: Npm@1
  displayName: 'npm install MyPackage'
  inputs:
    command: custom
    verbose: false
    customCommand: 'install MyPackage'
    customRegistry: useFeed
    customFeed: '...some-guid....'

Установки кажутся нормальными (я создал канал во 2-й организации с каналом 1-й организации в качестве источника восходящего потока, как указано в документе).

Теперь, как я должен выполнить этот сценарий в следующей задаче конвейера? Я попытался подключиться к агенту, но когда я запускаю команду MyPackage, я получаю команду не найдена. Где установлен скрипт? Как я должен это выполнить? Есть ли что-то, что нужно добавить в ПУТЬ? Стоит ли использовать параметр -g?

Спасибо за вашу помощь :)

Обновление запрошенными журналами:

Журнал задач:

Starting: npm custom
==============================================================================
Task         : npm
Description  : Install and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.
Version      : 1.182.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/package/npm
==============================================================================
/usr/local/bin/npm --version
6.13.7
/usr/local/bin/npm config list
; cli configs
metrics-registry = "https://pkgs.dev.azure.com/org/_packaging/....some-guid..../npm/registry/"
scope = ""
user-agent = "npm/6.13.7 node/v13.11.0 darwin x64"

; environment configs
userconfig = "/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/npm/33366.npmrc"

; userconfig /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/npm/33366.npmrc
registry = "https://pkgs.dev.azure.com/org/_packaging/....some-guid..../npm/registry/"

; builtin config undefined
prefix = "/usr/local"

; node bin location = /usr/local/Cellar/node/13.11.0/bin/node
; cwd = /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/s
; HOME = /Users/...
; "npm config ls -l" to show all defaults.

/usr/local/bin/npm install -g MyPackage
+ [email protected]
added 198 packages from 99 contributors in 18.319s
Finishing: npm custom

Вот второе определение:

steps:
- script: |
   echo "1"
   node MyPackage
   
   echo "2"
   MyPackage
   
  displayName: 'Command Line Script'

И связанный журнал выполнения:

Starting: Command Line Script
==============================================================================
Task         : Command line
Description  : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version      : 2.182.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
Generating script.
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/_temp/7fe7833a-ce7d-48af-ab8f-1fcf2e740c36.sh
1
internal/modules/cjs/loader.js:979
  throw err;
  ^

Error: Cannot find module '/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/s/MyPackage'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:976:15)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
2
/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/_temp/7fe7833a-ce7d-48af-ab8f-1fcf2e740c36.sh: line 5: MyPackage: command not found
##[error]Bash exited with code '127'.
Finishing: Command Line Script


person LiohAu    schedule 15.02.2021    source источник


Ответы (2)


Мы могли бы добавить канал артефактов Azure в другую организацию в вашем Azure Клиент AD как исходный код.

Например, вы создаете канал в первой организации и добавляете в него пакет npm, теперь вы хотите использовать пакет во второй организации, нам нужно настроить исходный источник во втором канале организации, например azure-feed://myOrg/myProject/myFeed@local, затем мы могли бы установить и использовать пакет во втором конвейере организации.

Вы также можете проверить это блог для получения дополнительных сведений.

Обновление1

Мне нужно найти путь, по которому он установлен

Мы могли бы добавить задачу Command line и запустить npm list, чтобы увидеть установленные неглобальные библиотеки для вашего текущего местоположения. Проверьте этот билет и blog для получения дополнительных сведений.

Путь установки $(Build.SourcesDirectory)/node_modules, мы могли бы добавить задачу bash и запустить ls '$(Build.SourcesDirectory)/node_modules', чтобы проверить это.

person Vito Liu    schedule 16.02.2021
comment
when I run "MyPackage" command, I get "command not found" не могли бы вы поделиться здесь подробным журналом и определением задачи? Вы также можете проверить этот ​​тикет для устранения неполадок. - person Vito Liu; 16.02.2021
comment
Я уже поделился определением задачи для части установки NPM. Установка моего исполняемого файла / пакета кажется нормальной, даже в рамках организации, я не прошу об этом, поскольку эта часть работает. Проблема в том, чтобы запустить пакет. Не знаю, где он установлен. Я думаю, что одна из частей решения - добавить узел #! / Usr / bin / env в начало моего файла .js, чтобы иметь возможность выполнять без узла перед ним. Но все же мне нужно найти путь, по которому он установлен ... - person LiohAu; 16.02.2021
comment
Привет @LiohAu, я обновил ответ, проверьте update1, мы могли бы запустить список cmd npm, чтобы увидеть путь установки. - person Vito Liu; 17.02.2021

Наконец нашел проблемы:

  • 1-й, мне пришлось установить пакет глобально с опцией -g
  • 2-й. Мне пришлось использовать npx для его запуска.
  • В-третьих, мне пришлось обновить package.json с помощью:
  "bin": {
    "NAME_OF_THE_BINARY": "./FILE_TO_EXECUTE.js"
  },
person LiohAu    schedule 17.02.2021
comment
Привет, Вы можете смело принять свой ответ. Спасибо - person Vito Liu; 22.02.2021