2016-08-24 3 views
2

Я получаю этот выход консоли при запуске задания Jenkins на подчиненном устройстве. Задание должно создать файл и поместить его в c:\foo\services.csv.Запуск команды powershell на подчиненном устройстве - Jenkins

Вот команда задания PowerShell:

Get-Service | Export-CSV c:\foo\service.csv 

Обратите внимание на слово «шунтирование» в выводе консоли. Я не могу пройти мимо него. Я думаю, что это вопрос:

[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy шунтирующий "& " C: \ Users \ ххх \ AppData \ Local \ Temp \ hudson1582303083838020200.ps1"

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

Поэтому я вручную создал сценарий на подчиненном устройстве и поместил его в c:\foo\listServices.ps1. Затем в Jenkins (master) эта команда запускается на подчиненном устройстве: “C:\foo\listServices.ps1”, чтобы вызвать скрипт для запуска непосредственно из подчиненного устройства.

Я все еще получаю тот же выход на консоль ... что-то об «байпасе», похоже, по-прежнему вызывает у него не работу. Файл csv не помещается в папку foo. Это обход, который мешает ему работать, и если да, то какое решение?

И полный выход консоли:

Started by user anonymous 
Building remotely on slave1 in workspace C:\Jenkins\Master\workspace\AnonymousJWTApi 
> git.exe rev-parse --is-inside-work-tree # timeout=10 
Fetching changes from the remote Git repository 
> git.exe config remote.origin.url C:\Users\xxx\Source\Repos\AnonymousJWTApi # timeout=10 
Fetching upstream changes from C:\Users\xxx\Source\Repos\AnonymousJWTApi 
> git.exe --version # timeout=10 
> git.exe -c core.askpass=true fetch --tags --progress C:\Users\xxx\Source\Repos\AnonymousJWTApi +refs/heads/*:refs/remotes/origin/* 
Seen branch in repository origin/master 
Seen 1 remote branch 
Checking out Revision a7087f81af855cc96b8763a5ec66b96c19a44a30 (origin/master) 
> git.exe config core.sparsecheckout # timeout=10 
> git.exe checkout -f a7087f81af855cc96b8763a5ec66b96c19a44a30 
> git.exe rev-list a7087f81af855cc96b8763a5ec66b96c19a44a30 # timeout=10 
[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\xxx\AppData\Local\Temp\hudson1582303083838020200.ps1'" 
Finished: SUCCESS 

EDIT: Файл становится сохранен к мастеру ...: P

Кажется, раб не предназначен для размещения сценариев PowerShell или выходы из них, о которых я не знал.

+0

Вы вошли в подчиненное устройство и попытались запустить эту команду вручную? Что происходит? –

+0

@ChrisN да, это работает при выполнении этого – BeniaminoBaggins

ответ

2

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

Проблема может быть разрешением.

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

У пользователя может не быть разрешения на запись в C:\Foo, так что вы можете это проверить.

Другой способ проверить это запись в каталог рабочего пространства, так что-то вроде этого:

Get-Service | Export-CSV $env:WORKSPACE\service.csv 

Это должно работать. Если это так, измените разрешение в каталоге C:\Foo или запустите ведомое устройство как учетную запись, у которой уже есть разрешение.

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

Get-ChildItem env:\ | Out-String | Set-Content -Path $env:USERPROFILE\env.txt 

Это запишет файл с именем env.txt к профилю пользователя, запустившего скрипт, содержащий все переменные среды (включая %WORKSPACE%). Вам просто нужно просмотреть каждый профиль пользователя, чтобы узнать, где он закончится, а затем вы также узнаете пользователя.

+0

Как узнать, где $ env: WORKSPACE? Запуск этого в powershell на master это фактически диск c, и разрешение отклонено. Но на рабе это, похоже, сработало, я просто не знаю, где искать файл – BeniaminoBaggins

+0

Как вы запускаете ведомый в качестве учетной записи? – BeniaminoBaggins

+1

@Beniamino_Baggins вы указали корень FS, когда вы определили подчиненный узел на главном; 'workspace' будет на один уровень ниже этого, и тогда я думаю, что он создаст папку там с именем задания. См. Https://wiki.jenkins-ci.org/x/BAN-Ag – briantist

Смежные вопросы