Ошибка авторизации Teamcity (код выхода 126) при выполнении на артефакте в цепочке сборки - PullRequest
0 голосов
/ 11 октября 2019

Я работаю над созданием цепочек сборки. Базовая архитектура: build > test > deploy. Это для тестирования ветвей функций, поэтому я хочу, чтобы развертывание было автоматическим. Я также хочу создать приложение только один раз на этапе сборки, а не на каждой работе. Поэтому введите снэпшот / зависимости артефактов.

Я полагаю, что у меня все цепочки зависимостей сборки в порядке. У меня установлен триггер VCS на deploy для прослушивания изменений кода.

Тогда deploy имеет снимок и зависимость артефакта от test. То же самое относится и к test в зависимости от build.

После того, как приложение встроено в шаг build, я передаю его для передачи на test. Мой путь к артефакту для первой работы build: %system.teamcity.build.checkoutDir%/** => st_ui.zip. Я дважды проверил этот почтовый индекс успешно копирует весь проект, включая node_modules.

Пока все хорошо. В test мое правило зависимости от артефактов - распаковать zip-архив и скопировать его в рабочий каталог агента сборки: st_ui.zip!** => %system.teamcity.build.checkoutDir%

Теперь я могу успешно распаковать zip-архив, однако, когда я пытаюсь выполнить его наприложение, я получаю Exit Code 126 Permission Denied ошибку. Я приложу журнал сборки чуть ниже. Когда я ssh к серверу агента сборки и пытаюсь выполнить, я получаю ту же ошибку. Это выполнение выполнено в качестве суперпользователя, которому принадлежит каталог, в котором находится файл, который я пытаюсь выполнить, поэтому у меня возникают проблемы, когда я оборачиваюсь вокруг него.

[12:31:06]  Finalize build settings
[12:31:06]  Collecting changes in 1 VCS root
[12:31:11]  Skip checking for changes - changes are already collected
[12:31:12]  Clearing temporary directory: /opt/teamcity/temp/buildTmp
[12:31:12]  Publishing internal artifacts (3s)
[12:31:12]  Checkout directory: /opt/teamcity/work/a289be5eae7725c
[12:31:12]  Updating sources: auto checkout (on agent)
[12:31:12]  [Updating sources] Will use agent side checkout
[12:31:12]  Resolving artifact dependencies (18s)
[12:31:12]  [Resolving artifact dependencies] Started downloading files from REDACTED
[12:31:30]  [Resolving artifact dependencies] 94608 files retrieved from REDACTED for pattern [st_ui.zip!** => /opt/teamcity/work/a289be5eae7725c]
[12:31:30]  Step 1/1: Run Tests (Gulp)
[12:31:30]  [Step 1/1] Executing /opt/teamcity/work/a289be5eae7725c/node_modules/.bin/gulp via wrapping shell script
[12:31:30]  [Step 1/1] Starting: /opt/teamcity/temp/agentTmp/wrapper3645075516094104483.sh --no-color --teamcity.properties.all=/opt/teamcity/temp/agentTmp/teamcity6742679845678469104.json --teamcity.properties=/opt/teamcity/temp/agentTmp/teamcity6827850557743504325.json test
[12:31:30]  [Step 1/1] in directory: /opt/teamcity/work/a289be5eae7725c
[12:31:30]  [Step 1/1] /opt/teamcity/temp/agentTmp/wrapper3645075516094104483.sh: line 2: /opt/teamcity/work/a289be5eae7725c/node_modules/.bin/gulp: Permission denied
[12:31:30]  [Step 1/1] Process exited with code 126
[12:31:30]  [Step 1/1] Step Run Tests (Gulp) failed
[12:31:30]  Publishing internal artifacts
[12:31:30]  Publishing artifacts (1m:24s)
[12:33:04]  Build finished

Единственная идея, которая у меня есть, этоdir checkout /opt/teamcity/work/a289be5eae7725c, и задание, похоже, выполняется в временном каталоге: /opt/teamcity/temp/agentTmp/wrapper3645075516094104483.sh

Это несоответствие относительно того, где выполняется задание, может объяснить мою проблему с аутентификацией. Должен ли я копировать приложение в другом месте? Я просто хочу сжать приложение в zip между заданиями и передать приложение следующему агенту сборки (который может быть другим агентом на другом сервере с той же лицензией TC). Это не обязательно должен быть каталог извлечения, этомое текущее понимание того, куда приложение должно идти.

...