は、あなたが出力にジェンキンスコンソールですべてのトリガ設定を使用することができますスクリプトです:
#!groovy
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
println("Job ${it.name}:")
triggers.each { t->
println("\t${t.getSpec()}")
println("\t${t.isIgnorePostCommitHooks()}")
}
}
これにより、SCM構成を使用するすべてのジョブが、その仕様(実行時に関するcron-like式)と、コミット後のフックが無視されるように設定されているかどうかが出力されます。
#!groovy
import groovy.json.*
def result = [:]
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
triggers.each { t->
def builder = new JsonBuilder()
result[it.name] = builder {
spec "${t.getSpec()}"
ignorePostCommitHooks "${t.isIgnorePostCommitHooks()}"
}
}
}
return new JsonBuilder(result).toPrettyString()
をそして、あなたはHTTPクライアントからこれを取得するためにJenkins Script Console web APIを使用することができます。
あなたはこのようにJSONなどのデータを取得するには、このスクリプトを変更することができます。
例えば、カールでは、テキストファイルとしてスクリプトを保存してから実行することによってこれを行うことができますが:
curl --data-urlencode "script=$(<./script.groovy)" <YOUR SERVER>/scriptText
ジェンキンスは、基本認証を使用している場合は、-u <USERNAME>:<PASSWORD>
引数でそれを供給することができます。
最終的には、要求は次のようになります:
{
"Build Project 1": {
"spec": "H/30 * * * *",
"ignorePostCommitHooks": "false"
},
"Test Something": {
"spec": "@hourly",
"ignorePostCommitHooks": "false"
},
"Deploy ABC": {
"spec": "H/20 * * * *",
"ignorePostCommitHooks": "false"
}
}
あなたはあなたの特定のユースケースに合わせてこれらの例を調整することができるはずです。これは遠隔ではなく職場からアクセスする必要はないようですが、リモーティング部分も含めて他の人にとって便利な部分も含めています。
以前は似たような考えがありましたが、スレーブマシンからシステムのGroovyスクリプトを実行することができず、ビルド環境が厳しく管理されているため、私は諦めました。 – Heinz
私の会社では、エンドユーザーとスクリプトコンソールAPIの間に余分なレイヤーを構築しました。このようなGroovyスクリプトを保存し、管理者が承認し、ユーザーがそのシステムを介してスクリプトを実行できるようにするWeb APIがあります(スクリプトの内容は抽象化されています)。 Jenkinsのパイプラインでは、ユーザーはHTTPリクエスト(たとえばhttps://wiki.jenkins.io/display/JENKINS/HTTP+Request+Plugin)を使用して中間APIを起動できます。このようなツールの保守には間接的なオーバーヘッドがありますが、実装には一度だけの努力がなされています。 – JohnSomeone