Eと同じ出力が得られるように、ビルド後のフックなどを使用したいと考えています。 g。 IRCプラグインですが、スクリプトにそれを与えます。実際のビルドステータスを除いて、すべての情報を取得できました。これは、「Post-buildスクリプト」、「ポストビルドタスク」、「パラメータ化されたトリガー」阿蘇。
いくつかの非常に醜い回避策でそれは可能ですが、誰かがより良いオプションを持っている場合に備えて、私が尋ねたかったのです...私自身のプラグインを書くのに十分ではありません。
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}"
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()
このため、私は 条件付きビルドステップ プラグインが本当に好きです。これは非常に柔軟性があり、ビルドの失敗または成功に基づいて、実行するアクションを選択できます。たとえば、条件付きビルドステップを使用してビルド失敗の通知を送信する場合は次のとおりです。
条件付きビルドステップを使用して、環境変数を設定したり、後続の「シェルの実行」ステップで使用するログファイルに書き込んだりすることもできます。したがって、たとえば、コードをコンパイルしてテストを実行する1つのステップ、STATUS="failed"
環境変数を設定する3つのステップ、次にThe build finished with a status: ${STATUS}
のような電子メールを送信する3番目のステップの3つのステップでビルドを作成できます。
試してみてください ビルド後のタスク プラグイン...
ログ出力に基づいて条件を指定できます...
ここでは、 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}"
基本的な解決策(笑わないでください)
#!/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のインストールに依存します