%20%D0%B4%D0%BB%D1%8F%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%81%20%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D1%86%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20Jenkins.png)
Мне известно об использовании следующей команды для загрузки файлов с сервера 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 аутентифицируется по имени пользователя и паролю?
EDIT: /setcredentials работает, но одна проблема в том, что я могу использовать только /create, /addfile, /resume, затем /complete. Как мне дождаться окончания передачи, а затем продолжить пакетный скрипт?
EDIT: Дальнейший тест показывает, что /setcredential не работает. Предыдущий тест показывает, что это работает, потому что мой Jenkins разрешает анонимный доступ в то время. Я перехватил пакет при использовании bitadmin. Он показывает, что http-запрос — это HEAD без какой-либо информации об учетных данных. Если я использую curl-win для загрузки, http-запрос — это GET с базовой аутентификацией имени пользователя и пароля.
решение1
Если вам необходимо задать учетные данные для задания 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 можно найти здесь..
решение2
Вот .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