📚

Jenkinsのジョブをバックアップするジョブ

2022/09/18に公開

JenkinsのジョブをXMLにバックアップするジョブを作成しました。

ジョブの内容

  • バックアップを行うgroovyファイルの作成
  • jenkins-cli.jarのダウンロード
  • jenkins-cli.jarでgroovyの実行
  • /tmp/jobsに出力する
  • Foldersプラグインには未対応
  • TODO:user:passwordを記載するので専用のユーザを用意するか環境変数などにする

Build Step - シェルの実行

echo '
import jenkins.model.*
 
def instance  = Jenkins.getInstance()
def topLevelItems = instance.getItems()
 
def backupDirectory = new File("/tmp/jobs")
backupDirectory.mkdir()
 
topLevelItems.each { topLevelItem ->
  topLevelItem.getAllJobs().each { job ->
    println configPath = job.getBuildDir().getParent() + "/config.xml"
    println backupPath = backupDirectory.getAbsolutePath() + "/" + job.name + ".xml"
    new File(backupPath).setBytes(new File(configPath).getBytes())
  }
}
' > backup_tmp.groovy

curl -v http://localhost:8080//jnlpJars/jenkins-cli.jar --output jenkins-cli.jar
java -jar jenkins-cli.jar  -s http://localhost:8080/ -auth user:password groovy = < backup_tmp.groovy

参考・レストアは以下の手順

https://qiita.com/kobarasukimaro/items/4ac0e87894fd80b5066f

https://tech.drecom.co.jp/ac2020-start-jenkins-configuration-as-code-life/

https://github.com/junjanjon/jenkins_configuration_as_code_sample

Discussion