You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2017/08/22 06:13:10 UTC
[11/11] hbase git commit: HBASE-18467 WIP build up a jira comment.
HBASE-18467 WIP build up a jira comment.
HBASE-18467 WIP fail yetus checks instead of running.
WIP fixing syntax.
WIP switch to non-jenkins substituded string.
WIP adding attempt at using jira selector after all.
HBASE-18467 make sure placeholder failure for yetus writes console report.
HBASE-18467 more syntax.
HBASE-18467 WIP let's try using the changeset directly.
HBASE-18467 WIP assemble comment contents.
HBASE-18467 WIP, doesn't look like newlines are cool with groovy.
HBASE-18467 WIP ah, it was that you can't have newlines in var names.
HBASE-18467 WIP more debugging. ugh.
HBASE-18467 WIP
HBASE-18467 attempt at using jiraComment.
HBASE-18467 correct naming the output file for comments. correctly join the list of results.
HBASE-18467 fixing substitutions. debug output of changeSets
HBASE-18467 delete result files from prior runs.
HBASE-18467 GitChangeSetList doesn't have a size.
HBASE-18467 just remove attempts to see the size of the changeset.
HBASE-18467 add a note for when the changeset is empty.
HBASE-18467 cleanup.
HBASE_18467 more debug info. :/ jenkins groovy is miserable.
HBASE-18467 remove anything other than interating over the changeset.
HBASE-18467 add back in a .size call at Andrew B's request.
HBASE-18467 result of help from Andrew B.
HBASE-18467 output a bit about each scm's changelist.
HBASE-18467 ugh.
HBASE-18467 just use methods from ChangeLogSet.Entry
HBASE-18467 switch to ubuntu label instead of Hadoop.
HBASE-18467 more change information. some debug about message.
HBASE-18467 just print all the methods on change, since the javadocs are wrong.
HBASE-18467 more change output.
HBASE-18467 typo.
HBASE-18467 removing currentRevision since it doesn't seem to exist.
HBASE-18467 grasping at straws.
HBASE-18467 figure out what part of findAll is failing.
HBASE-18467 remove some debug entries we no longer need.
HBASE-18467 switch to eachMatch instead of findAll().each
HBASE-18467 mark end of iterating.
HBASE-18467 maybe pattern isn't a Pattern?
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/39aff511
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/39aff511
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/39aff511
Branch: refs/heads/HBASE-18467
Commit: 39aff5114ed2f16bd02a865afe6a384333895e52
Parents: 23ddf69
Author: Sean Busbey <bu...@apache.org>
Authored: Wed Aug 9 00:48:46 2017 -0500
Committer: Sean Busbey <bu...@apache.org>
Committed: Tue Aug 22 01:12:43 2017 -0500
----------------------------------------------------------------------
dev-support/Jenkinsfile | 138 ++++++++++++++++++++++++++++++--
dev-support/hbase_nightly_yetus.sh | 7 ++
2 files changed, 138 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/39aff511/dev-support/Jenkinsfile
----------------------------------------------------------------------
diff --git a/dev-support/Jenkinsfile b/dev-support/Jenkinsfile
index 1f01a47..8876e5f 100644
--- a/dev-support/Jenkinsfile
+++ b/dev-support/Jenkinsfile
@@ -17,7 +17,9 @@
pipeline {
agent {
node {
- label 'Hadoop'
+// label 'Hadoop'
+// temp go to ubuntu since it seems like no one uses those
+ label 'ubuntu'
}
}
triggers {
@@ -128,7 +130,18 @@ curl -L -o personality.sh "${env.PROJET_PERSONALITY}"
steps {
unstash 'yetus'
// TODO should this be a download from master, similar to how the personality is?
- sh "${env.BASEDIR}/dev-support/hbase_nightly_yetus.sh"
+ sh '''#!/usr/bin/env bash
+ rm -f "${OUTPUTDIR}/success" "${OUTPUTDIR}/failure"
+ declare commentfile
+ if "${BASEDIR}/dev-support/hbase_nightly_yetus.sh" ; then
+ commentfile="${OUTPUTDIR}/success"
+ echo '(/) *{color:green}+1 general checks{color}*' >> "${commentfile}"
+ else
+ commentfile="${OUTPUTDIR}/failure"
+ echo '(x) *{color:red}-1 general checks{color}*' >> "${commentfile}"
+ fi
+ echo "-- For more information [see general report|${BUILD_URL}/General_Nightly_Build_Report/]" >> "${commentfile}"
+ '''
}
post {
always {
@@ -159,13 +172,22 @@ curl -L -o personality.sh "${env.PROJET_PERSONALITY}"
}
steps {
unstash 'yetus'
- sh """#!/usr/bin/env bash
+ sh '''#!/usr/bin/env bash
# for branch-1.1 we don't do jdk8 findbugs, so do it here
- if [ "${env.BRANCH_NAME}" == "branch-1.1" ]; then
+ if [ "${BRANCH_NAME}" == "branch-1.1" ]; then
TESTS+=",findbugs"
fi
- "${env.BASEDIR}/dev-support/hbase_nightly_yetus.sh"
- """
+ declare commentfile
+ rm -f "${OUTPUTDIR}/success" "${OUTPUTDIR}/failure"
+ if "${BASEDIR}/dev-support/hbase_nightly_yetus.sh" ; then
+ commentfile="${OUTPUTDIR}/success"
+ echo '(/) *{color:green}+1 jdk7 checks{color}*' >> "${commentfile}"
+ else
+ commentfile="${OUTPUTDIR}/failure"
+ echo '(x) *{color:red}-1 jdk7 checks{color}*' >> "${commentfile}"
+ fi
+ echo "-- For more information [see jdk7 report|${BUILD_URL}/JDK7_Nightly_Build_Report/]" >> "${commentfile}"
+ '''
}
post {
always {
@@ -215,7 +237,18 @@ curl -L -o personality.sh "${env.PROJET_PERSONALITY}"
}
steps {
unstash 'yetus'
- sh "${env.BASEDIR}/dev-support/hbase_nightly_yetus.sh"
+ sh '''#!/usr/bin/env bash
+ declare commentfile
+ rm -f "${OUTPUTDIR}/success" "${OUTPUTDIR}/failure"
+ if "${BASEDIR}/dev-support/hbase_nightly_yetus.sh" ; then
+ commentfile="${OUTPUTDIR}/success"
+ echo '(/) *{color:green}+1 jdk8 checks{color}*' >> "${commentfile}"
+ else
+ commentfile="${OUTPUTDIR}/failure"
+ echo '(x) *{color:red}-1 jdk8 checks{color}*' >> "${commentfile}"
+ fi
+ echo "-- For more information [see jdk8 report|${BUILD_URL}/JDK8_Nightly_Build_Report/]" >> "${commentfile}"
+ '''
}
post {
always {
@@ -287,6 +320,7 @@ curl -L -o personality.sh "${env.PROJET_PERSONALITY}"
}
// expectation check largely based on HBASE-14952
sh '''#!/bin/bash -e
+ rm -rf "${env.WORKSPACE}/src_tarball_success" "${env.WORKSPACE}/src_tarball_failure"
echo "Checking against things we don't expect to include in the source tarball (git related, hbase-native-client, etc.)"
cat >known_excluded <<END
Only in .: .git
@@ -304,6 +338,96 @@ END
fi
'''
}
+ // This approach only works because the source release artifact is the last stage that does work.
+ post {
+ success {
+ writeFile file: "${env.WORKSPACE}/src_tarball_success", text: '(/) *{color:green}+1 source release artifact{color}*'
+ }
+ failure {
+ writeFile file: "${env.WORKSPACE}/src_tarball_failure", text: '(x) *{color:red}-1 source release artifact{color}*'
+ }
+ }
+ }
+ stage ('Fail if previous stages failed') {
+ steps {
+ script {
+ def failures = ['src_tarball_failure', "${env.OUTPUT_RELATIVE_GENERAL}/failure",
+ "${env.OUTPUT_RELATIVE_JDK7}/failure", "${OUTPUT_RELATIVE_JDK8}/failure"]
+ for ( failure_file in failures ) {
+ if (fileExists(file: failure_file)) {
+ error 'Failing job due to previous failure(s) in prior steps.'
+ }
+ }
+ }
+ }
+ }
+ }
+ post {
+ always {
+ script {
+ sh "printenv"
+ def results = ["${env.OUTPUT_RELATIVE_GENERAL}/failure", "${env.OUTPUT_RELATIVE_GENERAL}/success",
+ "${env.OUTPUT_RELATIVE_JDK7}/failure", "${env.OUTPUT_RELATIVE_JDK7}/success",
+ "${env.OUTPUT_RELATIVE_JDK8}/failure", "${env.OUTPUT_RELATIVE_JDK8}/success",
+ 'src_tarball_failure', 'src_tarball_success']
+ echo env.BRANCH_NAME
+ echo env.BUILD_URL
+ echo currentBuild.result
+ echo currentBuild.durationString
+ def comment = "Results for branch ${env.BRANCH_NAME}, done in ${currentBuild.durationString}\n"
+ if (currentBuild.result == "SUCCESS") {
+ comment += ' (/) *{color:green}+1 overall{color}*\\'
+ } else {
+ comment += '(x) *{color:red}-1 overall{color}*\\'
+ // Ideally get the committer our of the change and @ mention them in the per-jira comment
+ comment += 'Committer, please check your recent inclusion of a patch for this issue.\\'
+ }
+ comment += " [build ${currentBuild.displayName} on builds.a.o|${env.BUILD_URL}]: ${currentBuild.result}\\----\\details (if available):\n"
+ //echo "[DEBUG] Comment so far: "
+ //echo comment
+ echo ""
+ echo "[DEBUG] trying to aggregate step-wise results"
+ comment += results.collect { fileExists(file: it) ? readFile(file: it) : "" }.join("\n")
+ echo "[INFO] Comment:"
+ echo comment
+ echo ""
+ echo "[INFO] There are ${currentBuild.changeSets.size()} change sets."
+ def seenJiras = []
+ for ( changelist in currentBuild.changeSets ) {
+ if ( changelist.isEmptySet() ) {
+ echo "[DEBUG] change set was empty, skipping JIRA comments."
+ } else {
+ echo "[DEBUG] there are changes in the change set. Attempting to post comments."
+ }
+ for ( change in changelist ) {
+ def msg = change.msg
+ echo "[DEBUG] msg is of class ${msg.class}"
+ echo "change: ${change}"
+ echo " ${msg}"
+ echo " ${change.commitId}"
+ echo " ${change.author}"
+ echo ""
+ def pattern = /HBASE-[0-9]+/
+ echo "pattern (${pattern.class}): ${pattern}"
+ echo "eachMatch:"
+ msg.eachMatch(pattern) {
+ echo " ${it}"
+ }
+ echo "/eachMatch"
+ msg.findAll( /HBASE-[0-9]+/ ).each { currentIssue ->
+ echo "[DEBUG] found jira key: ${currentIssue}"
+ if ( currentIssue in seenJiras ) {
+ echo "[DEBUG] already commented on ${currentIssue}."
+ } else {
+ echo "[INFO] commenting on ${currentIssue}."
+ jiraComment issueKey: currentIssue, body: comment
+ seenJiras << currentIssue
+ }
+ }
+ //TODO warn if no JIRA key found in message, email committer
+ }
+ }
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/39aff511/dev-support/hbase_nightly_yetus.sh
----------------------------------------------------------------------
diff --git a/dev-support/hbase_nightly_yetus.sh b/dev-support/hbase_nightly_yetus.sh
index 007d64a..5920a81 100755
--- a/dev-support/hbase_nightly_yetus.sh
+++ b/dev-support/hbase_nightly_yetus.sh
@@ -16,6 +16,13 @@
# specific language governing permissions and limitations
# under the License.
+# XXX Don't commit this part.
+# fail fast
+mkdir -p "${OUTPUTDIR}"
+echo "placeholder" >> "${OUTPUTDIR}/console-report.html"
+exit 1772
+# /XXX Don't commit this part.
+
declare -i missing_env=0
# Validate params
for required_env in "TESTS" "TOOLS" "BASEDIR" "ARCHIVE_PATTERN_LIST" "OUTPUT_RELATIVE" \