Возможно создать файл в каталоге исходников на Azure DevOps во время сборки - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть сценарий узла, который должен создать файл в каталоге root моего приложения, прежде чем он создаст файл.

Данные, которые будет содержать этот файл, указываются c для каждой сборки, которая срабатывает, однако, мне не везет на Azure DevOps в этом отношении.

Для записи файла я использую fs.writeFile (...), что-то похожее на это:

fs.writeFile (targetPath, file, function (err) {// удалено для краткости});

однако это вызывает исключение:

[Ошибка: ENOENT : нет такого файла или каталога, откройте '/home/vsts/work/1/s/data-file.json']

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

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 20 апреля 2020

Возможно создать файл в каталоге исходников на Azure DevOps во время сборки

Ответ Да . Это полностью поддерживаемый сценарий в Azure Devops Service, если вы используете агент, размещенный в Microsoft ubuntu.

Если вы столкнулись с этой проблемой при использовании агента, размещенного в Microsoft, я думаю, что эта проблема больше связана с одним путем вопрос. Пожалуйста, проверьте:

  1. Функция, где появляется ошибка no such file or directory. Помимо функции fs.writeFile, вы также используете fs.readFile в файле xx.js? Если это так, вы должны убедиться, что два пути одинаковы .

  2. Структура ваших исходных файлов и ваши реальные требования. В соответствии с вашим вопросом вы хотите создать его в каталоге Source /home/vsts/work/1/s, но первая строка указывает, что вы действительно хотите создать файл в каталоге root моего приложения.

    1). Если вы хотите создайте файл в исходном каталоге /home/vsts/work/1/s:

    В вашем js файле: используйте что-то вроде targetpath, например './data-file.json'. И убедитесь, что вы запускаете команду node xx.js из исходного каталога. (Оставляя задачу CMD / задача PS / Bash рабочий каталог задачи пусто !!!)

    2). Если вы хотите сделать это в root папки приложения, например /home/vsts/work/1/s/MyApp:

    В вашем файле js: используйте __dirname как fs.writeFile(__dirname + '/data-file.json', file, function(err) { // removed for brevity }); и fs.readFile(__dirname + '/data-file.json',...).

...