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
'''