Назад | Перейти на главную страницу

как использовать файл bitsadmin.exe (Windows) для загрузки с аутентифицированного сервера Jenkins

Мне известно об использовании следующей команды для загрузки файлов с сервера Jenkins, если к рабочему пространству предоставляется анонимный доступ:

bitsadmin.exe /transfer replica /priority FOREGROUND http://1.1.1.1:8080/job/dump_data/ws/dump_data.zip %WORKSPACE%\dump_data.zip

Но что, если сервер Jenkins аутентифицирован по имени пользователя и паролю?

РЕДАКТИРОВАТЬ: / setcredentials работает, но одна проблема в том, что я могу использовать только / create, / addfile, / resume, затем / complete. Как я могу дождаться завершения передачи и продолжить выполнение пакетного сценария?

РЕДАКТИРОВАТЬ: дальнейшие тесты показывают / setcredential не работают. Предыдущий тест показывает, что это работает, потому что мой Jenkins разрешает анонимный доступ в то время. Я захватил пакет при использовании bitadmin. Он показывает, что http-запрос - это HEAD без какой-либо информации об учетных данных. Если я использую curl-win для загрузки, HTTP-запрос будет GET с именем пользователя и паролем базовой аутентификации.

Если вам нужно установить учетные данные для задания BITS, вы должны использовать /setcredentials переключатель.

 /SETCREDENTIALS job target scheme username password
     Adds credentials to a job.
     target may be either SERVER or PROXY
     scheme may be BASIC, DIGEST, NTLM, NEGOTIATE, or PASSPORT.

Отличный справочник команд ss64 для BITSadmin можно найти здесь.

Вот .bat сценарий, соответствующий вопросу:

bitsadmin /Create DownloadDumpData
bitsadmin /SetCredentials DownloadDumpData target scheme username password
bitsadmin /AddFile DownloadDumpData http://1.1.1.1:8080/job/dump_data/ws/dump_data.zip %WORKSPACE%\dump_data.zip
bitsadmin /SetPriority DownloadDumpData "FOREGROUND"
bitsadmin /Resume DownloadDumpData
:WAIT_DUMP_DATA_DOWNLOAD_LOOP_START
    @rem state thanks to http://ss64.com/nt/bitsadmin.html & http://serverfault.com/a/646948/93281
    call bitsadmin /info DownloadDumpData /verbose | find "STATE: TRANSFERRED"
    if %ERRORLEVEL% equ 0 goto WAIT_DUMP_DATA_DOWNLOAD_LOOP_END
    call bitsadmin /RawReturn /GetBytesTransferred DownloadDumpData
    @rem sleep thanks to http://stackoverflow.com/a/1672375/535203
    timeout 2
    goto WAIT_DUMP_DATA_DOWNLOAD_LOOP_START
:WAIT_DUMP_DATA_DOWNLOAD_LOOP_END
call bitsadmin /Complete DownloadDumpData