Konteks:
Saya mencoba menyiapkan server build Jenkins (2.223) (dalam hal ini build menggunakan msbuild
) di Windows Server 2012 R2. Jenkins diatur sebagai layanan dan dijalankan sebagai Local System
.
Masalah:
Saya mengalami masalah di mana saya dapat menjalankan skrip build ketika RDP digunakan sebagai pengguna Administrator, tetapi tidak dapat menjalankan skrip yang sama melalui Jenkins. Setelah menggali beberapa kali, saya menemukan bahwa direktori dengan referensi build yang diperlukan (C:\Windows\System32\config\systemprofile\.nuget\packages
) tidak ditemukan oleh Jenkins. Dengan sedikit penyelidikan lebih lanjut, saya menemukan bahwa direktori C:\Windows\System32\config\systemprofile
tampaknya tidak konsisten.
Saya dapat menjalankan perintah dir C:\Windows\System32\config\systemprofile
melalui akun Administrator saya dan saya mendapatkan:
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
Saya dapat menjalankan perintah yang sama (dir C:\Windows\System32\config\systemprofile
) melalui Jenkins, dan saya mendapatkan:
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
Saya memerlukan referensi dalam ...\systemprofile\.nuget\packages\
untuk dilihat oleh Jenkins untuk menyelesaikan pembangunan (referensi diletakkan di sana dengan perintah nuget restore
yang dijalankan oleh layanan Jenkins, jadi ini tampaknya masuk akal bagi saya). Dan sejujurnya saya belum familiar dengan konsep dir
yang memberikan hasil berbeda. Saya menduga Windows melakukan kejahatan, tetapi saya ingin tahu apa yang sebenarnya terjadi - mengapa saya mendapatkan hasil yang berbeda berdasarkan pengguna yang menjalankan perintah?
Info Tambahan:
Saya bisa menjalankan ini di desktop Windows 10 lokal saya tanpa kesulitan. Saya masih mendapatkan hasil yang berbeda ketika menjalankan perintah
dir
sebagai pengguna saya versus layanan Jenkins, tetapi keduanya memiliki direktorisystemprofile\.nuget\packages
yang tersedia.Di server 2012, $env:UserName dan $env:ComputerName pengguna Admin saya masing-masing adalah
Administrator
danWIN-64VG7CF1QK3
. Sistem lokal Jenkin $env:UserName dan $env:ComputerName keduanyaWIN-64VG7CF1QK3
.
C:\Windows\System32
, meskipun secara teknis Anda dapat mengakses direktori lainnya sebagaiC:\Windows\SysWOW64
(dir. 32-bit dari proses 64-bit) danC:\Windows\SysNative
(dir. 64-bit dari proses 32-bit). - person mklement0   schedule 12.03.2020