บริบท:
ฉันกำลังพยายามตั้งค่าเซิร์ฟเวอร์บิลด์ Jenkins (2.223) (บิลด์โดยใช้ msbuild
ในกรณีนี้) บน Windows Server 2012 R2 Jenkins ได้รับการตั้งค่าเป็นบริการและทำงานเป็น Local System
ปัญหา:
ฉันประสบปัญหาในการเรียกใช้สคริปต์บิลด์เมื่อ RDP เข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบ แต่ไม่สามารถเรียกใช้สคริปต์เดียวกันผ่าน Jenkins ได้ หลังจากขุดลึกมาบ้าง ฉันพบว่าเจนกินส์ไม่พบไดเร็กทอรีที่มีการอ้างอิงบิลด์ที่จำเป็น (C:\Windows\System32\config\systemprofile\.nuget\packages
) จากการตรวจสอบเพิ่มเติมอีกเล็กน้อย ฉันพบว่าไดเรกทอรี C:\Windows\System32\config\systemprofile
ดูเหมือนจะไม่สอดคล้องกัน
ฉันสามารถเรียกใช้คำสั่ง dir C:\Windows\System32\config\systemprofile
ผ่านบัญชีผู้ดูแลระบบของฉัน และฉันได้รับ:
Directory: C:\Windows\System32\config\systemprofile
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/11/2020 9:43 AM .dotnet
d---- 3/11/2020 2:27 PM .nuget
d---- 3/9/2020 1:49 PM .ssh
d---- 8/22/2013 6:36 AM AppData
-a--- 3/2/2020 3:41 PM 262144 ntuser.dat
ฉันสามารถรันคำสั่งเดียวกัน (dir C:\Windows\System32\config\systemprofile
) ผ่าน Jenkins และฉันได้รับ:
Directory: C:\Windows\System32\config\systemprofile
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 3/9/2020 1:49 PM .config
d---- 3/6/2020 2:50 PM .groovy
d---- 8/22/2013 8:39 AM AppData
ฉันต้องการการอ้างอิงภายใน ...\systemprofile\.nuget\packages\
เพื่อให้เจนกินส์เห็นเพื่อสร้างงานให้เสร็จสมบูรณ์ (การอ้างอิงถูกวางไว้ที่นั่นโดยคำสั่ง nuget restore
ที่ทำงานโดยบริการเจนกินส์ ดังนั้นสิ่งนี้จึงดูสมเหตุสมผลสำหรับฉัน) พูดตามตรง ฉันไม่คุ้นเคยกับแนวคิดของ dir
ที่ให้ผลลัพธ์ที่แตกต่างออกไป ฉันสงสัยว่า Windows shenanigans แต่ฉันสงสัยว่าเกิดอะไรขึ้น - เหตุใดฉันจึงได้รับผลลัพธ์ที่แตกต่างกันตามผู้ใช้ที่รันคำสั่ง
ข้อมูลเพิ่มเติม:
ฉันสามารถทำให้สิ่งนี้ใช้งานได้บนเดสก์ท็อป Windows 10 ในพื้นที่ของฉันโดยไม่ต้องยุ่งยากใดๆ ฉันยังคงได้รับผลลัพธ์ที่แตกต่างกันเมื่อดำเนินการคำสั่ง
dir
ในฐานะผู้ใช้ของฉันเทียบกับบริการ Jenkins แต่ทั้งสองมีไดเรกทอรีsystemprofile\.nuget\packages
ที่พร้อมใช้งานบนเซิร์ฟเวอร์ 2012 $env:UserName และ $env:ComputerName ของผู้ใช้ผู้ดูแลระบบของฉันคือ
Administrator
และWIN-64VG7CF1QK3
ตามลำดับ ระบบภายในเครื่องของ Jenkin $env:UserName และ $env:ComputerName มีทั้งWIN-64VG7CF1QK3
C:\Windows\System32
แม้ว่าคุณจะสามารถเข้าถึงไดเร็กทอรีอื่นตามลำดับในทางเทคนิคเป็นC:\Windows\SysWOW64
(dir 32 บิตจากกระบวนการ 64 บิต) และC:\Windows\SysNative
(dir 64 บิตจากกระบวนการ 32 บิต) - person mklement0   schedule 12.03.2020