cómo utilizar el archivo de descarga bitsadmin.exe (Windows) desde el servidor Jenkins autenticado

cómo utilizar el archivo de descarga bitsadmin.exe (Windows) desde el servidor Jenkins autenticado

Soy consciente de que utilizo el siguiente comando para descargar archivos del servidor Jenkins si el espacio de trabajo tiene acceso anónimo:

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

Pero, ¿qué pasa si el servidor Jenkins se autentica mediante nombre de usuario/contraseña?

EDITAR: /setcredentials funciona, pero un problema es que solo puedo usar /create, /addfile, /resume y luego /complete. ¿Cómo puedo esperar hasta que finalice la transferencia y luego continuar con el script por lotes?

EDITAR: Pruebas adicionales muestran que /setcredential no funcionó. La prueba anterior muestra que funciona porque mi Jenkins permite el acceso anónimo en ese momento. Capturé el paquete cuando usé bitadmin. Muestra que la solicitud http es HEAD sin ninguna información de credencial. Si uso curl-win para descargar, la solicitud http es GET con nombre de usuario y contraseña de autenticación básica.

Respuesta1

Si necesita configurar credenciales en un trabajo BITS, usará el /setcredentialsinterruptor.

 /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.

La excelente referencia del comando ss64 para BITSadmin se puede encontrar aquí.

Respuesta2

Aquí hay un .batguión correspondiente a la pregunta:

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

información relacionada