Configuring Jenkins with PowerShell
No sooner do I say I have nothing technical to write up of general interest, than I spend a day stitching together pieces across the internet, because most Jenkins examples tend to be written to *nix or the JVM, and I'm on Windows where the admin tool of choice is PowerShell.
So, start on the Jenkins wiki page for Authenticating scripted clients, which tells you how to get your API key -- visit $(JENKINS_URL)/me/configure
in your browser and look for the API token so you don't have to script your password (especially if you're using AD authentication on the server). Setting username/API Token as a Credentials
object on a WebClient
will just get you 403 errors, until you notice that the Groovy script example sets pre-emptive auth on its web client. The secret to HTTP Authorization and .NET WebRequest, WebClient Classes needs to be sought separately.
At this point you can GET
from $(JENKINS_URL)/job/[job name]/config.xml
, with DownloadString
and cast to [xml]
PowerShell style to read and modify.
Then you have to POST
the modified XML back; but if you just do that with the Basic auth header, suddenly more 403 out of nowhere, until you read the small print about the Jenkins Remote access API about CSRF protection. When you get that and add it to your headers, it's now just a case of using UploadString
to push the xml as xml.
Putting it all together we get
This appears to correctly preserve line endings as is, so you don't need to do anything non-default, equivalent to the --data-binary
as you need for scripting with curl
.
No comments :
Post a Comment