[6/6] hbase git commit: HBASE-18147 POC jenkinsfile for nightly checks.
HBASE-18147 POC jenkinsfile for nightly checks. * adds ruby tools to dockerfile * adds rubocop to dockerfile * adds ruby-lint to dockerfile * adds perlcritic to dockerfile Signed-off-by: Alex LeblangSigned-off-by: Josh Elser Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/5316580d Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/5316580d Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/5316580d Branch: refs/heads/branch-1.1 Commit: 5316580dc65840ca9acef852476ba4b794571ba0 Parents: b03a5e7 Author: Sean Busbey Authored: Thu Jul 20 17:07:33 2017 -0500 Committer: Sean Busbey Committed: Thu Jul 20 17:23:55 2017 -0500 -- dev-support/Jenkinsfile | 198 + dev-support/docker/Dockerfile | 29 ++ 2 files changed, 227 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/5316580d/dev-support/Jenkinsfile -- diff --git a/dev-support/Jenkinsfile b/dev-support/Jenkinsfile new file mode 100644 index 000..26f72d7 --- /dev/null +++ b/dev-support/Jenkinsfile @@ -0,0 +1,198 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +pipeline { + agent { +node { + label 'Hadoop' +} + } + // work around for YETUS-508, requires maven outside of the dockerfile + tools { +maven 'Maven (latest)' + } + triggers { +cron('@daily') + } + options { +buildDiscarder(logRotator(numToKeepStr: '30')) +timeout (time: 6, unit: 'HOURS') +timestamps() + } + environment { +TOOLS = "${env.WORKSPACE}/tools" +// where we check out to across stages +BASEDIR = "${env.WORKSPACE}/component" +YETUS_RELEASE = '0.5.0' +// where we'll write everything from different steps. +OUTPUT_RELATIVE = 'output' +OUTPUTDIR = "${env.WORKSPACE}/output" + } + parameters { +booleanParam(name: 'USE_YETUS_PRERELEASE', defaultValue: false, description: '''Check to use the current HEAD of apache/yetus rather than our configured release. + +Should only be used manually when e.g. there is some non-work-aroundable issue in yetus we are checking a fix for.''') +booleanParam(name: 'DEBUG', defaultValue: false, description: 'Produce a lot more meta-information.') + } + stages { +stage ('yetus check') { + environment { +PROJECT = 'hbase' +PROJECT_PERSONALITY = 'https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=blob_plain;f=dev-support/hbase-personality.sh;hb=refs/heads/master' +// This section of the docs tells folks not to use the javadoc tag. older branches have our old version of the check for said tag. +AUTHOR_IGNORE_LIST = 'src/main/asciidoc/_chapters/developer.adoc,dev-support/test-patch.sh' +WHITESPACE_IGNORE_LIST = '.*/generated/.*' +// output from surefire; sadly the archive function in yetus only works on file names. +ARCHIVE_PATTERN_LIST = 'TEST-*.xml,org.apache.h*-output.txt,org.apache.h*.txt' +// These tests currently have known failures. Once they burn down to 0, remove from here so that new problems will cause a failure. +TESTS_FILTER = 'cc,checkstyle,javac,javadoc,pylint,shellcheck,whitespace,perlcritic,ruby-lint,rubocop' +BRANCH_SPECIFIC_DOCKERFILE = "${env.BASEDIR}/dev-support/docker/Dockerfile" +EXCLUDE_TESTS_URL = 'https://builds.apache.org/job/HBase-Find-Flaky-Tests/lastSuccessfulBuild/artifact/excludes/' + } + steps { +// TODO we can move the yetus install into a different stage and then use stash to deploy it. +sh '''#!/usr/bin/env bash +printenv +echo "Ensure we have a copy of Apache Yetus." +if [[ true != "${USE_YETUS_PRERELEASE}" ]]; then + YETUS_DIR="${WORKSPACE}/yetus-${YETUS_RELEASE}" + echo "Checking for Yetus ${YETUS_RELEASE} in '${YETUS_DIR}'" + if [ ! -d "${YETUS_DIR}" ]; then +echo "New download of Apache Yetus version ${YETUS_RELEASE}." +rm
[6/6] hbase git commit: HBASE-18147 POC jenkinsfile for nightly checks.
HBASE-18147 POC jenkinsfile for nightly checks. * Jenkinsfile that works for all current branches. * adds dev-support script for setting parameters for our yetus nightly invocation * adds ruby tools to dockerfile * adds rubocop to dockerfile * adds ruby-lint to dockerfile * adds perlcritic to dockerfile Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4a2c0c38 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4a2c0c38 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4a2c0c38 Branch: refs/heads/branch-1-HBASE-18147 Commit: 4a2c0c38f7f848dfdcdd20b31dfcdf5d03f2ae28 Parents: cfd5b6b Author: Sean BusbeyAuthored: Thu Jul 20 00:51:07 2017 -0500 Committer: Sean Busbey Committed: Thu Jul 20 00:51:07 2017 -0500 -- dev-support/Jenkinsfile| 269 dev-support/docker/Dockerfile | 29 dev-support/hbase_nightly_yetus.sh | 86 ++ 3 files changed, 384 insertions(+) -- http://git-wip-us.apache.org/repos/asf/hbase/blob/4a2c0c38/dev-support/Jenkinsfile -- diff --git a/dev-support/Jenkinsfile b/dev-support/Jenkinsfile new file mode 100644 index 000..5ff3d82 --- /dev/null +++ b/dev-support/Jenkinsfile @@ -0,0 +1,269 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +pipeline { + agent { +node { + label 'Hadoop' +} + } + triggers { +cron('@daily') + } + options { +buildDiscarder(logRotator(numToKeepStr: '30')) +timeout (time: 6, unit: 'HOURS') +timestamps() + } + environment { +TOOLS = "${env.WORKSPACE}/tools" +// where we check out to across stages +BASEDIR = "${env.WORKSPACE}/component" +YETUS_RELEASE = '0.5.0' +// where we'll write everything from different steps. +OUTPUT_RELATIVE_GENERAL = 'output-general' +OUTPUTDIR_GENERAL = "${env.WORKSPACE}/output-general" +OUTPUT_RELATIVE_JDK7 = 'output-jdk7' +OUTPUTDIR_JDK7 = "${env.WORKSPACE}/output-jdk7" +OUTPUT_RELATIVE_JDK8 = 'output-jdk8' +OUTPUTDIR_JDK8 = "${env.WORKSPACE}/output-jdk8" +PROJECT = 'hbase' +PROJET_PERSONALITY = 'https://raw.githubusercontent.com/apache/hbase/master/dev-support/hbase-personality.sh' +// This section of the docs tells folks not to use the javadoc tag. older branches have our old version of the check for said tag. +AUTHOR_IGNORE_LIST = 'src/main/asciidoc/_chapters/developer.adoc,dev-support/test-patch.sh' +WHITESPACE_IGNORE_LIST = '.*/generated/.*' +// output from surefire; sadly the archive function in yetus only works on file names. +ARCHIVE_PATTERN_LIST = 'TEST-*.xml,org.apache.h*-output.txt,org.apache.h*.txt' +// These tests currently have known failures. Once they burn down to 0, remove from here so that new problems will cause a failure. +TESTS_FILTER = 'cc,checkstyle,javac,javadoc,pylint,shellcheck,whitespace,perlcritic,ruby-lint,rubocop' +BRANCH_SPECIFIC_DOCKERFILE = "${env.BASEDIR}/dev-support/docker/Dockerfile" +EXCLUDE_TESTS_URL = 'https://builds.apache.org/job/HBase-Find-Flaky-Tests/lastSuccessfulBuild/artifact/excludes/' + } + parameters { +booleanParam(name: 'USE_YETUS_PRERELEASE', defaultValue: false, description: '''Check to use the current HEAD of apache/yetus rather than our configured release. + +Should only be used manually when e.g. there is some non-work-aroundable issue in yetus we are checking a fix for.''') +booleanParam(name: 'DEBUG', defaultValue: false, description: 'Produce a lot more meta-information.') + } + stages { +stage ('yetus install') { + steps { +sh '''#!/usr/bin/env bash +echo "Ensure we have a copy of Apache Yetus." +if [[ true != "${USE_YETUS_PRERELEASE}" ]]; then + YETUS_DIR="${WORKSPACE}/yetus-${YETUS_RELEASE}" + echo "Checking for Yetus ${YETUS_RELEASE} in '${YETUS_DIR}'" + if [ ! -d "${YETUS_DIR}" ]; then +echo "New download of Apache Yetus version ${YETUS_RELEASE}." +rm -rf