Я работаю над созданием цепочек сборки. Базовая архитектура: 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). Это не обязательно должен быть каталог извлечения, этомое текущее понимание того, куда приложение должно идти.