Дженкинс создает сборку проекта C++, сделанного в Visual Studio.
Во время процесса вызываются некоторые .bat
, и в одном из них есть такая структура:
SET TEMPDIR=Temp
rmdir %TEMPDIR% /S /Q
echo Don't continue if there was an error above (except the not found error which is ok) and go hand delete the dir!
:pause
mkdir %TEMPDIR%
Я не очень хорошо знаком с пакетными сценариями, но когда вызываются и rmdir
, и mkdir
, Дженкинс дает мне access denied
.
Я просмотрел конфигурации сборки для поиска любого типа разрешений на чтение/запись, но, похоже, их нет.
Как я могу это исправить? Позже другие скрипты пытаются получить доступ к Temp
, но они терпят неудачу, и это ломает мою сборку.
Temp
— это относительный путь, так с чем он связан? - person aschipfl   schedule 25.01.2020Temp
— это истинное имя папки, на которую ссылается переменнаяTEMPDIR
.Temp
используется для хранения двоичных файлов, созданных Visual Studio в процессе сборки. Поскольку это дает мнеaccess denied
, папка не создается, и сборка ломается. - person Daniel   schedule 25.01.2020Temp
— это литерал, который присваиваетсяTEMPDIR
, а не значению, содержащемуся в%Temp%
, поэтому это относительный путь от%CWD%
. Есть ли у процесса Jenkins привилегии везде, где находится его%CWD%
? - person jwdonahue   schedule 25.01.2020TEMPDIR
и%TEMPDIR%
? Как я уже сказал, я не эксперт в пакетном синтаксисе, и в данной ситуации это имеет смысл. Я думал, что все, что мне нужно, это добавить дополнительную строку, предоставляющую разрешения. - person Daniel   schedule 25.01.2020%VAR%
для чтения значения, хранящегося вVAR
.%CWD%
— это встроеннаяcmd.exe
псевдопеременная окружения. - person jwdonahue   schedule 25.01.2020rmdir %TEMPDIR% /S /Q
удаляет каталог (не уверен, почему вы это делаете, поскольку пытаетесь воссоздать его сразу) относительно текущего каталога (где бы он ни был - он меняется в зависимости от того, КАК вы запускаете свою программу). - person   schedule 25.01.2020Temp
это только имя папки, не указано на каком диске она находится и по какому пути... - person aschipfl   schedule 25.01.2020C:\Users\Daniel\...
. - person Daniel   schedule 25.01.2020rmdir "C:\Users\Daniel\Temp" /s /q
удалит эту папку и всегда найдет ее. - person   schedule 25.01.2020rmdir "C:\Users\Daniel\Temp" /s /q
, вы говорите, что это сработает. Но если я нахожусь вC:\Users\Daniel
и пишуrmdir %TEMPDIR% /S /Q
, какая разница, что первый случай работает, а второй нет? - person Daniel   schedule 25.01.2020Temp
. Вы можете использоватьCD "Temp"
,RD /S/Q "Temp"
,CD ..
илиPushD "Temp"
,RD /S/Q "Temp"
,PopD
. - person Compo   schedule 25.01.2020RD /S/Q "."
или `RD /S/Q %CD%. - person Compo   schedule 26.01.2020