|
|
- package org.wikimedia.integration
-
- /**
- * Gerrit revision that can be used to comment on a gerrit patchset
- *
- * {@code
- * import org.wikimedia.integration.GerritReview
- * import org.wikimedia.integration.GerritPipelineComment
- *
- * stage('comment') {
- * comment = new GerritPipelineComment(
- * jobName: xx,
- * buildNumber: xx,
- * jobStatus: xx,
- * image: xx,
- * tags: xx
- * )
- * GerritReview.post(this, comment)
- * }
- */
- class GerritPipelineComment extends GerritComment implements Serializable {
- /**
- * Name of the job
- */
- String jobName
-
- /**
- * Jenkins build number
- */
- String buildNumber
-
- /**
- * Image in the docker registry
- */
- String image
-
- /**
- * Build status
- */
- String jobStatus
-
- /**
- * Image tags
- */
- List<String> tags
-
- String formatDashboard() {
- "pipeline-dashboard: ${this.jobName}"
- }
-
- String formatResult() {
- "pipeline-build-result: ${this.jobStatus} (job: ${this.jobName}, build: ${this.buildNumber})"
- }
-
- String formatImage() {
- "IMAGE:\n ${this.image}"
- }
-
- String formatTags() {
- "TAGS:\n ${this.tags.join(', ')}"
- }
-
- /**
- * Format final message output
- */
- String formatMessage() {
- def msg = "${this.formatDashboard()}\n${this.formatResult()}\n"
-
- if (this.image != null) {
- msg = "${msg}\n${this.formatImage()}\n"
- }
- if (this.tags != null) {
- msg = "${msg}\n${this.formatTags()}\n"
- }
-
- msg
- }
-
- GerritPipelineComment(Map settings = [:]) {
- settings.each { prop, value -> this.@"${prop}" = value }
- }
- }
|