1. Chia sẻ thư mục trên Client: C:\Deploy
Khi đó từ Server có thể truy cập: \\192.168.1.100\Deploy
Yêu cầu tài khoản: DOMAIN\jenkinsuser hoặc CLIENT01\jenkinsuser
2. Trong Jenkins Pipeline
Bạn có thể dùng:
pipeline {
agent any
stages {
stage('Copy file') {
steps {
bat '''
net use \\\\192.168.1.100\\Deploy /user:CLIENT01\\jenkinsuser "password"
copy "D:\\Build\\MyApp.zip" "\\\\192.168.1.100\\Deploy\\MyApp.zip"
net use \\\\192.168.1.100\\Deploy /delete
'''
}
}
}
}
Sau khi chạy, file:
D:\Build\MyApp.zip
sẽ được copy sang:
C:\Deploy\MyApp.zip
3. Nếu muốn copy cả thư mục
Tôi khuyên dùng robocopy:
bat '''
net use \\\\192.168.1.100\\Deploy /user:CLIENT01\\jenkinsuser "password"
robocopy "D:\\Build" "\\\\192.168.1.100\\Deploy" /E /Z /R:3 /W:5
net use \\\\192.168.1.100\\Deploy /delete
'''
Trong đó:
/E: copy cả thư mục con
/Z: copy theo chế độ restartable
/R:3: thử lại 3 lần
/W:5: chờ 5 giây giữa các lần thử
Lưu ý: robocopy có mã exit 0–7 vẫn có thể là thành công, nên Jenkins có thể đánh dấu build thất bại nếu không xử lý exit code.
Có thể viết an toàn hơn:
bat '''
net use \\\\192.168.1.100\\Deploy /user:CLIENT01\\jenkinsuser "password"
robocopy "D:\\Build" "\\\\192.168.1.100\\Deploy" /E /Z /R:3 /W:5
if %ERRORLEVEL% LEQ 7 (
exit /B 0
) else (
exit /B %ERRORLEVEL%
)
net use \\\\192.168.1.100\\Deploy /delete
'''