特定のジョブが現在実行されているかどうかを判断するためのAPIはありますか?
理想的には、推定完了率を判断し、SVNリビジョン番号の詳細を取得して、コメントもコミットできるようにしたいと思います。
編集:
私は答えを見つけました。 http://Host/job/project/lastBuild/api/
私が必要とするもののほとんどすべてがどこかにあります!手動ビルドを開始した場合、SCMチェンジセットは通知されませんが、それは理にかなっています。それでも最新のSCMリビジョンが表示されるので、それは良いことです。全体として、今の私の目的には十分です。
Gareth_bowlesとSagarが言ったように、JenkinsAPIを使用することが知る方法です。深さを1にすると、探しているものが表示されます。
http://Host/job/project/lastBuild/api/xml?depth=1
そのビルドが実行されているかどうかを示す<building>
タグがあることがわかります
...
<build>
<action>
<cause>
<shortDescription>Started by user Zageyiff</shortDescription>
<userId>Zageyiff</userId>
<userName>Zageyiff</userName>
</cause>
</action>
<building>true</building>
<duration>0</duration>
<estimatedDuration>-1</estimatedDuration>
<fullDisplayName>Project #12</fullDisplayName>
<id>2012-08-24_08-58-45</id>
<keepLog>false</keepLog>
<number>12</number>
<timestamp>123456789</timestamp>
<url>
http://Host/job/project/12
</url>
<builtOn>master</builtOn>
<changeSet/>
<mavenVersionUsed>3.0.3</mavenVersionUsed>
</build>
...
求人のページに移動し、URLの末尾に「api」を追加すると、APIの使用に関する情報が表示されます。
http://yourjenkins/job/job_name/api
Jenkins APIの使用に関する詳細情報:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Groovyプラグインを使用しており、次のスニペットをシステムとして実行します。
import hudson.model.*
def version = build.buildVariableResolver.resolve("VERSION")
println "VERSION=$version"
def nextJobName = 'MY_NEXT_JOB'
def nextJob = Hudson.instance.getItem(nextJobName)
def running = nextJob.lastBuild.building
if (running) {
println "${nextJobName} is already running. Not launching"
} else {
println "${nextJobName} is not running. Launching..."
def params = [
new StringParameterValue('VERSION', version)
]
nextJob.scheduleBuild2(0, new Cause.UpstreamCause(build), new ParametersAction(params))
}
それは魅力のように機能します。
Jenkins Java APIを掘り下げることに慣れている場合は、このデータを取得するためのシステムGroovyスクリプトを作成できます。 ジョブクラス から始めます。
ビルドの/api
ページ(「プログレッシブコンソール出力へのアクセス」の章)に記載されているように、<url-to-job>/lastBuild/logText/progressiveText
を呼び出すことにより、GETリクエストを使用してコンソール出力をポーリングできます。 APIドキュメントを引用するには:
応答に
X-More-Data: true header
も含まれている場合、サーバーはビルドが進行中であることを示しています
そして、あなたは行きます。この動作をテストするには、ブラウザーでそれぞれのURLを呼び出してから、ブラウザーの開発ツール(通常はF12キーを押してアクセスします)で応答ヘッダーを調べます。 Firefoxでは、それぞれのタブは「ネットワーク分析」と呼ばれます(私の翻訳が正しいと仮定すると、私のブラウザは英語に設定されていません)。 Chromeで、[ネットワーク]タブに移動します。
この回答は、Jenkinsバージョン2.176.3に基づいています。