diff options
| author | dd <dd@wx.tnyzeq.icu> | 2024-05-25 19:33:48 +0200 |
|---|---|---|
| committer | dd <dd@wx.tnyzeq.icu> | 2024-05-25 19:33:48 +0200 |
| commit | 719af0bf312c01f97af59db8f0cc46d9c2a99995 (patch) | |
| tree | 8f2bf3ea8cb71d5f17678bfc70d9d8e418e10fae | |
| parent | ebe6193a5b8cef88a418d73d728d18beac56ac70 (diff) | |
| download | vyos-jenkins-719af0bf312c01f97af59db8f0cc46d9c2a99995.tar.gz vyos-jenkins-719af0bf312c01f97af59db8f0cc46d9c2a99995.zip | |
added example jenkins script
| -rw-r--r-- | jenkins-scripts/readme.md | 16 | ||||
| -rwxr-xr-x | jenkins-scripts/setup-periodic-trigger-for-all-jobs.sh | 52 | ||||
| -rw-r--r-- | readme.md | 5 |
3 files changed, 73 insertions, 0 deletions
diff --git a/jenkins-scripts/readme.md b/jenkins-scripts/readme.md new file mode 100644 index 0000000..cad1136 --- /dev/null +++ b/jenkins-scripts/readme.md @@ -0,0 +1,16 @@ +Here I post some scripts as example how to manage Jenkins automatically. + +In order to make scripts work you need to create API token update script to use your credentials. + +Jenkins setup +-- + +**User account (click on your username - top-right corner) -> Configure** + +**API Token -> Current token(s) -> Add new Token** + +``` +Name: CLI +``` + +-> Generate -> [copy generated key and save it for later use] diff --git a/jenkins-scripts/setup-periodic-trigger-for-all-jobs.sh b/jenkins-scripts/setup-periodic-trigger-for-all-jobs.sh new file mode 100755 index 0000000..eda5be1 --- /dev/null +++ b/jenkins-scripts/setup-periodic-trigger-for-all-jobs.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +set -e + +# +# This script lists all available jobs +# then obtains XML definition for each job +# then modifies XML definition (adds periodic trigger) +# and at last pushes modified XML definition to Jenkins +# +# This may not be useful to you but it shows how to interact with Jenkins in automated way. +# +# dependency: apt install xmlstarlet +# + +user="YOUR_JENKINS_USERNAME" +token="YOUR_JENKINS_TOKEN" +jenkinsUrl="http://${user}:${token}@172.17.17.17:8080" +workingDir="/opt/jenkins-cli" + +mkdir -p "$workingDir" + +get() { + curl -sS -g "${jenkinsUrl}${1}" +} + +push() { + curl -sS -g -X POST -d "@${2}" -H "Content-Type: text/xml" "${jenkinsUrl}${1}" +} + +get "/api/xml?tree=jobs[name]" | xmlstarlet sel -t -v "//hudson/job/name" | while read projectName; do + + echo -n "$projectName:" + + originalPath="$workingDir/$projectName.xml" + get "/job/$projectName/config.xml" > "$originalPath" + + updatedPath="$workingDir/${projectName}_updated.xml" + project="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" + trigger="com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger" + plugin="cloudbees-folder@6.928.v7c780211d66e" + xmlstarlet ed --delete "//$project/triggers/$trigger" \ + --subnode "//$project/triggers" --type elem --name "$trigger" \ + --append "//$project/triggers/$trigger" --type attr --name plugin --value "$plugin" \ + --subnode "//$project/triggers/$trigger" --type elem --name spec --value "H/15 * * * *" \ + --subnode "//$project/triggers/$trigger" --type elem --name interval --value "3600000" \ + "$originalPath" > "$updatedPath" 2>/dev/null + + push "/job/$projectName/config.xml" "$updatedPath" + + echo " ok" + +done @@ -1005,3 +1005,8 @@ How to use your mirror: `--vyos-mirror http://172.17.17.17/equuleus` or `--vyos-mirror http://172.17.17.17/sagitta` and your singing key ` --custom-apt-key /opt/apt.gpg.key`. 4) Now the builder uses your mirror instead of `http://dev.packages.vyos.net/`. + +Smoketest +-- + +TODO: include instructions how to run standalone smoketest |
