2

Jenkinsでテスト中のプロジェクトがあります(「テストインストール」。インストーラーが機能することを確認するためにいくつかの回帰テストを実行します)。このプロジェクトは、Jenkinsの制御外のものにソフトに依存しています。最新のインストーラーが利用できない場合、テストすることはできません。ただし、古いインストーラーはいつでも再テストできますが、それはやりがいのあることのようです(CPUサイクルがあるので、それらを焼き付けた方がよいでしょう)。

私が欲しいのは、インストーラーが最新でない場合に大きな警告を生成することですが、それからテストを続行します。

私が最初に試したのは、インストーラーが古くなったときに失敗するテストを行うことでした。それは目立ったものでしたが、インストールテストが実際に失敗したものではなかったため、混乱を招きました。

今、私は同じテストを持っていますが、アサーションの代わりにJUnitの仮定を使用しています。これは、テストがスキップまたは合格することを意味します。Jenkinsがフロントページに「9つのテスト、0の失敗」と報告しているため、これも完全ではありません。テスト結果に複数のレイヤーをドリルダウンした場合にのみ、9つのテストのうち1つがスキップされたことがわかります。

Jenkinsにスキップされたテストをフロントページで報告させることはできますか?適切なプラグインが見つかりませんでした。インストーラーが古くなっていることを警告するために使用するより良い方法はありますか?

4

1 に答える 1

1

あなたへの質問に答えるのは少し遅れますが、他の人の助けになるかもしれません。。。

このような場合に最適だと思う2つの簡単なこと:

  • テストを1つ追加して、最新のインストーラーのバージョンを確認して失敗します。そのため、そのジョブは不安定としてマークされます。

  • または、ビルド後のプラグインの1つを使用して、ログを確認し、ジョブを不安定ではなく失敗としてマークすることもできます。

スキップされたテストをより目立たせる簡単な方法はありません。

ただし、テスト結果に対して後処理を行うことはできます。

ジョブスクリプト/テストスクリプトでVERSION.txtファイルを生成し、ジョブワークスペースに配置します。次に、Groovy Postbuildアクションを使用して、ジョブの説明を設定します。

「Groovypostbuild」

def currentBuild = Thread.currentThread().executable
def ws = manager.build.workspace.getRemote()
String desc = new File(ws + "/VERSION.txt").text
currentBuild.setDescription(desc)

これは、テストされたバージョンやその他の詳細をジョブ履歴で確認できるので非常に便利です。

物事をより目立つようにマークする。。。>;)バッジといくつかのグルーヴィーなものを使用できます。 バッジの例を作成し、ジョブ履歴のサイドバーに表示します。 バッジは、ジョブページ、ビルドモニタービューにも表示されます。 。 。

使用したプラグイン:

https://wiki.jenkins.io/display/JENKINS/Groovy+Postbuild+Plugin

GroovyPostbuildプラグインは本当に必要な唯一のものです。Badges APIは、GroovyPostbuildプラグインの一部です。

https://wiki.jenkins.io/display/JENKINS/Groovy+plugin

Groovyプラグインは、groovyを試したり、groovyで仕事をしたりするのに便利です。

https://wiki.jenkins.io/display/JENKINS/Build+Trigger+Badge+Plugin

実際、バッジはjenkinsgroovypostbuildプラグインで利用できます。私が使用しているBuildTriggerBadgeプラグインは、さまざまなトリガーが使用されているが、バッジの設定に実際には必要ない場合に、とにかく便利です。インストールされているのでここに含めますが、コードがそれなしで機能するかどうかは100%確信していません(ただし、おそらく98.5%確信しています)。バッジプラグインがインストールされていません。

以下のバッジを使ったグルーヴィーな実験をご覧ください。

def currentBuild = Thread.currentThread().executable
def ws = manager.build.workspace.getRemote()
String desc = new File(ws + "/VERSION.txt").text
currentBuild.setDescription(desc)

if (desc.contains("ERROR")) {
  coverageText="VarkeninK, SomethinK iz bad."
  // Apologies :-7 I can only assume this was from Viktor in http://www.userfriendly.org/ web comic
  manager.addShortText(coverageText, "black", "repeating-linear-gradient(45deg, 
yellow, yellow 10px, Orange 10px, Orange 20px)", "0px", "white")
}

manager.addShortText("GreyWhite0pxWhite", "grey", "white", "0px", "white")
manager.addShortText("BlackGreen0pxWhite", "black", "green", "0px", "white")
manager.addShortText("BlackGreen5pxWhite", "black", "green", "5px", "white")
manager.addShortText("VERSION WhiteGreen0pxWhite", "white", "green", "0px", "white")
manager.addShortText("WhiteGreen5pxWhite", "white", "green", "5px", "white")

manager.addShortText("VERSION Black on Lime Green", "black", "limegreen", "0px", "white")

// darkgrey is lighter than grey!! :-P
manager.addShortText("OBSOLETE YellowDarkGrey5pxGrey", "yellow", "darkgrey", "5px", "grey")
manager.addShortText("OBSOLETE YellowGrey5pxGrey", "yellow", "grey", "5px", "grey")


manager.removeBadges()


manager.addShortText("VERSION Black on Lime Green", "black", "limegreen", "0px", "white")
manager.addShortText(desc, "black", "limegreen", "5px", "white")
manager.addShortText("OBSOLETE YellowGrey5pxGrey", "yellow", "grey", "5px", "grey")

manager.addBadge("warning.gif", "Warning test")
manager.addWarningBadge("other warning test")


// https://wiki.jenkins.io/display/JENKINS/Groovy+Postbuild+Plugin

// contains(file, regexp) - returns true if the given file contains a line matching regexp.
// logContains(regexp) - returns true if the build log file contains a line matching regexp.
// getMatcher(file, regexp) - returns a java.util.regex.Matcher for the first occurrence of regexp in the given file.
// getLogMatcher(regexp) - returns a java.util.regex.Matcher for the first occurrence of regexp in the build log file.
// setBuildNumber(number) - sets the build with the given number as current build. The current build is the target of all methods that add or remove badges and summaries or change the build result.
// addShortText(text) - puts a badge with a short text, using the default format.
// addShortText(text, color, background, border, borderColor) - puts a badge with a short text, using the specified format.
// addBadge(icon, text) - puts a badge with the given icon and text. In addition to the 16x16 icons offered by Jenkins, groovy-postbuild provides the following icons:
//  - completed.gif
//  - db_in.gif
//  - db_out.gif
//  - delete.gif
//  - error.gif
//  - folder.gif
//  - green.gif
//  - info.gif
//  - red.gif
//  - save.gif
//  - success.gif
//  - text.gif
//  - warning.gif
//  - yellow.gif
// addBadge(icon, text, link) - like addBadge(icon, text), but the Badge icon then actually links to the given link (since 1.8)
// addInfoBadge(text) - puts a badge with  info icon and the given text.
// addWarningBadge(text) - puts a badge with  warning icon and the given text.
// addErrorBadge(text) - puts a badge with  error icon and the given text.
// removeBadges() - removes all badges from the current build.
// removeBadge(index) - removes the badge with the given index.
// createSummary(icon) - creates an entry in the build summary page and returns a summary object corresponding to this entry. The icon must be one of the 48x48 icons offered by Jenkins. You can append text to the summary object by calling its appendText methods:
// appendText(text, escapeHtml)
// appendText(text, escapeHtml, bold, italic, color)
// removeSummaries() - removes all summaries from the current build.
// removeSummary(index) - removes the summary with the given index.
// buildUnstable() - sets the build result to UNSTABLE.
// buildFailure() - sets the build result to FAILURE.
// buildSuccess() - sets the build result to SUCCESS.
于 2020-01-07T16:09:47.047 に答える