web-dev-qa-db-ja.com

ビルド後のスクリプトでビルドステータスを取得する

Eと同じ出力が得られるように、ビルド後のフックなどを使用したいと考えています。 g。 IRCプラグインですが、スクリプトにそれを与えます。実際のビルドステータスを除いて、すべての情報を取得できました。これは、「Post-buildスクリプト」、「ポストビルドタスク」、「パラメータ化されたトリガー」阿蘇。

いくつかの非常に醜い回避策でそれは可能ですが、誰かがより良いオプションを持っている場合に備えて、私が尋ねたかったのです...私自身のプラグインを書くのに十分ではありません。

14
smlgbl

Groovyビルド後プラグイン を介してビルド後のステップでGroovyスクリプトを使用します。その後、 Jenkins Java API を介してJenkins内部にアクセスできます。プラグインは、変数managerAPIの重要な部分にアクセスするために使用できます(プラグインドキュメントのUsageセクションを参照してください)。

たとえば、Windowsで単純な外部Pythonスクリプトを実行し、その結果(およびビルド結果)を出力してコンソールをビルドする方法は次のとおりです。

def command =  """cmd /c python -c "for i in range(1,5): print i" """
manager.listener.logger.println command.execute().text

def result = manager.build.result
manager.listener.logger.println "And the result is: ${result}"
8
malenkiy_scot

Groovy Post-Build Pluginで述べたように機能しますが、実行される文字列内で余分な引用符はありません。したがって、実際の機能をシェルスクリプトに追加する必要がありました。これは、curlへの呼び出しを実行し、次にPOST parameters aso。

def result = manager.build.result
def build_number = manager.build.number
def env = manager.build.getEnvironment(manager.listener)
def build_url = env['BUILD_URL']
def build_branch = env['SVN_BRANCH']
def short_branch = ( build_branch =~ /branches\//).replaceFirst("")
def Host = env['NODE_NAME']
def svn_rev = env['SVN_REVISION']
def job_name = manager.build.project.getName()


"/usr/local/bin/skypeStagingNotify.sh Deployed ${short_branch} on ${Host} - ${result} - ${build_url}".execute()
8
smlgbl

本当に簡単な解決策、おそらくエレガントではないかもしれませんが、うまくいきます!

1:キャッチするすべてのビルド結果をキャッチします(この場合はSUCCESS)。

2:ジョブステータスで評価される環境変数を挿入する

Step 1

3:他の種類のステータスについても同じことを実行します(この場合、中止から不安定状態に移行します)

enter image description here

4:あなたがやりたいことのために値を使用できるようになった後..この場合、私はそれをANTスクリプトに渡します! (または、環境変数としてANTから直接ロードできます...)

enter image description here

お役に立てれば幸いです。

4
ivoruJavaBoy

このため、私は 条件付きビルドステップ プラグインが本当に好きです。これは非常に柔軟性があり、ビルドの失敗または成功に基づいて、実行するアクションを選択できます。たとえば、条件付きビルドステップを使用してビルド失敗の通知を送信する場合は次のとおりです。

enter image description here

条件付きビルドステップを使用して、環境変数を設定したり、後続の「シェルの実行」ステップで使用するログファイルに書き込んだりすることもできます。したがって、たとえば、コードをコンパイルしてテストを実行する1つのステップ、STATUS="failed"環境変数を設定する3つのステップ、次にThe build finished with a status: ${STATUS}のような電子メールを送信する3番目のステップの3つのステップでビルドを作成できます。

3
Matt Korostoff

試してみてください ビルド後のタスク プラグイン...

ログ出力に基づいて条件を指定できます...

1
ATOzTOA

Groovyスクリプトソリューション:-

ここでは、 groovyスクリプトプラグイン を使用してビルドステータスを取得し、環境変数に設定しているため、ビルド後のスクリプトで環境変数を使用できます。 post-build task plugin を使用します。

Groovyスクリプト:-

import hudson.EnvVars
import hudson.model.Environment

def build = Thread.currentThread().executable
def result = manager.build.result.toString()  
def vars = [BUILD_STATUS: result]

build.environments.add(0, Environment.create(new EnvVars(vars)))

追記:-

echo BUILD_STATUS="${BUILD_STATUS}"
0
Karan Vyas

基本的な解決策(笑わないでください)

#!/bin/bash
STATUS='Not set'
if [ ! -z $UPSTREAM_BUILD_DIR ];then
  ISFAIL=$(ls -l /var/lib/jenkins/jobs/$UPSTREAM_BUILD_DIR/builds | grep "lastFailedBuild\|lastUnsuccessfulBuild" | grep $UPSTREAM_BUILD_NR)
  ISSUCCESS=$(ls -l /var/lib/jenkins/jobs/$UPSTREAM_BUILD_DIR/builds | grep "lastSuccessfulBuild\|lastStableBuild" | grep $UPSTREAM_BUILD_NR)
  if [ ! -z "$ISFAIL" ];then
     echo $ISFAIL
     STATUS='FAIL'
  Elif [ ! -z "$ISSUCCESS" ]
  then
     STATUS='SUCCESS'
  fi
fi
echo $STATUS

どこ

$ UPSTREAM_BUILD_DIR = $ JOB_NAME

$ UPSTREAM_BUILD_NR = $ BUILD_NUMBER

上流のビルドから渡された

もちろん "/ var/lib/jenkins/jobs /"はjenkinsのインストールに依存します

0
fearis