diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..71b25de5fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,39 @@ +# Handle line endings automatically for files detected as text +# and leave all files detected as binary untouched. +* text=auto + +# +# The above will handle all files NOT found below +# +# These files are text and should be normalized (Convert crlf => lf) +*.css text +*.groovy text +*.htm text +*.html text +*.java text +*.js text +*.json text +*.jelly text +*.jellytag text +*.less text +*.properties text +*.rb text +*.sh text +*.txt text +*.xml text + +# These files are binary and should be left untouched +# (binary is a macro for -text -diff) +*.class binary +*.gz binary +*.tgz binary +*.ear binary +*.gif binary +*.hpi binary +*.ico binary +*.jar binary +*.jpg binary +*.jpeg binary +*.png binary +*.war binary +*.zip binary diff --git a/.gitignore b/.gitignore index edb353a62a..60ba89065c 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,10 @@ build # vim *~ +*.swp + +# ctags +tags # OS X .DS_Store diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 0000000000..e93a5b43ee --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1 @@ +-Xmx800m diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7bd3f7a8f7..7a2d5e0c53 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,3 @@ # Contributing to Jenkins -For information on contributing to Jenkins, check out the https://wiki.jenkins-ci.org/display/JENKINS/contributing and https://wiki.jenkins-ci.org/display/JENKINS/Extend+Jenkins wiki pages over at the official https://wiki.jenkins-ci.org . They will help you get started with contributing to Jenkins. +For information on contributing to Jenkins, check out the https://wiki.jenkins-ci.org/display/JENKINS/Beginners+Guide+to+Contributing and https://wiki.jenkins-ci.org/display/JENKINS/Extend+Jenkins wiki pages over at the official https://wiki.jenkins-ci.org . They will help you get started with contributing to Jenkins. diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..5fdd562b8c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,78 @@ +#!/usr/bin/env groovy + +/* + * This Jenkinsfile is intended to run on https://ci.jenkins-ci.org and may fail anywhere else. + * It makes assumptions about plugins being installed, labels mapping to nodes that can build what is needed, etc. + * + * The required labels are "java" and "docker" - "java" would be any node that can run Java builds. It doesn't need + * to have Java installed, but some setups may have nodes that shouldn't have heavier builds running on them, so we + * make this explicit. "docker" would be any node with docker installed. + */ + +// TEST FLAG - to make it easier to turn on/off unit tests for speeding up access to later stuff. +def runTests = true + +// Only keep the 10 most recent builds. +properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy: [$class: 'LogRotator', + numToKeepStr: '50', + artifactNumToKeepStr: '20']]]) + +node('java') { + timestamps { + // First stage is actually checking out the source. Since we're using Multibranch + // currently, we can use "checkout scm". + stage('Checkout') { + checkout scm + } + + // Now run the actual build. + stage("Build / Test") { + timeout(time: 180, unit: 'MINUTES') { + // See below for what this method does - we're passing an arbitrary environment + // variable to it so that JAVA_OPTS and MAVEN_OPTS are set correctly. + withMavenEnv(["JAVA_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m", + "MAVEN_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m"]) { + // Actually run Maven! + // The -Dmaven.repo.local=${pwd()}/.repository means that Maven will create a + // .repository directory at the root of the build (which it gets from the + // pwd() Workflow call) and use that for the local Maven repository. + sh "mvn -Pdebug -U clean install ${runTests ? '-Dmaven.test.failure.ignore=true' : '-DskipTests'} -V -B -Dmaven.repo.local=${pwd()}/.repository" + } + } + } + + + // Once we've built, archive the artifacts and the test results. + stage('Archive Artifacts / Test Results') { + archiveArtifacts artifacts: '**/target/*.jar, **/target/*.war, **/target/*.hpi', + fingerprint: true + if (runTests) { + junit healthScaleFactor: 20.0, testResults: '**/target/surefire-reports/*.xml' + } + } + } +} + +// This method sets up the Maven and JDK tools, puts them in the environment along +// with whatever other arbitrary environment variables we passed in, and runs the +// body we passed in within that environment. +void withMavenEnv(List envVars = [], def body) { + // The names here are currently hardcoded for my test environment. This needs + // to be made more flexible. + // Using the "tool" Workflow call automatically installs those tools on the + // node. + String mvntool = tool name: "mvn", type: 'hudson.tasks.Maven$MavenInstallation' + String jdktool = tool name: "jdk8", type: 'hudson.model.JDK' + + // Set JAVA_HOME, MAVEN_HOME and special PATH variables for the tools we're + // using. + List mvnEnv = ["PATH+MVN=${mvntool}/bin", "PATH+JDK=${jdktool}/bin", "JAVA_HOME=${jdktool}", "MAVEN_HOME=${mvntool}"] + + // Add any additional environment variables. + mvnEnv.addAll(envVars) + + // Invoke the body closure we're passed within the environment we've created. + withEnv(mvnEnv) { + body.call() + } +} diff --git a/README.md b/README.md index 4ecfdb2c37..501778372d 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,32 @@ [![][ButlerImage]][website] # About -In a nutshell, Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 1000 plugins to support building and testing virtually any project. +In a nutshell, Jenkins is the leading open-source automation server. +Built with Java, it provides over 1000 plugins to support automating virtually anything, +so that humans can actually spend their time doing things machines cannot. + +# What to Use Jenkins for and When to Use It + +Use Jenkins to automate your development workflow so you can focus on work that matters most. Jenkins is commonly used for: + +- Building projects +- Running tests to detect bugs and other issues as soon as they are introduced +- Static code analysis +- Deployment + +Execute repetitive tasks, save time, and optimize your development process with Jenkins. # Downloads Non-source downloads such as WAR files and several Linux packages can be found on our [Mirrors]. # Source -Our latest and greatest source of Jenkins CI can be found on [GitHub]. Fork us! +Our latest and greatest source of Jenkins can be found on [GitHub]. Fork us! # Contributing to Jenkins Follow [contributing](CONTRIBUTING.md) file. # News and Website -All information about Jenkins CI can be found on our [website]. Follow us on Twitter [@jenkinsci]. +All information about Jenkins can be found on our [website]. Follow us on Twitter [@jenkinsci]. # License Jenkins is **licensed** under the **[MIT License]**. The terms of the license are as follows: @@ -40,12 +53,12 @@ Jenkins is **licensed** under the **[MIT License]**. The terms of the license ar OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -[ButlerImage]: http://jenkins-ci.org/sites/default/files/jenkins_logo.png +[ButlerImage]: https://jenkins.io/sites/default/files/jenkins_logo.png [MIT License]: https://github.com/jenkinsci/jenkins/raw/master/LICENSE.txt [Mirrors]: http://mirrors.jenkins-ci.org [GitHub]: https://github.com/jenkinsci/jenkins -[website]: http://jenkins-ci.org -[@jenkinsci]: http://twitter.com/jenkinsci +[website]: https://jenkins.io/ +[@jenkinsci]: https://twitter.com/jenkinsci [Contributing]: https://wiki.jenkins-ci.org/display/JENKINS/contributing [Extend Jenkins]: https://wiki.jenkins-ci.org/display/JENKINS/Extend+Jenkins [wiki]: https://wiki.jenkins-ci.org diff --git a/changelog.html b/changelog.html index aa9b438a98..4b8502c6fd 100644 --- a/changelog.html +++ b/changelog.html @@ -20,30 +20,31 @@ Some tips: Changelog - + - +
Legend: - major RFEmajor enhancement RFEenhancement - major bugmajor bug fix bugbug fix + major RFEmajor enhancement RFEenhancement + major bugmajor bug fix bugbug fix xxxxx
+ @@ -54,12 +55,1692 @@ Upcoming changes +

What's new in 2.36 (2016/12/11)

+ +

What's new in 2.35 (2016/12/04)

+ +

What's new in 2.34 (2016/11/27)

+ +

What's new in 2.33 (2016/11/20)

+ +

What's new in 2.32 (2016/11/16)

+ +

What's new in 2.31 (2016/11/13)

+ +

What's new in 2.30 (2016/11/07)

+ +

What's new in 2.29 (2016/11/06)

+

+ Warning! This release is not recommended for use due to + issue 39555 + and issue 39414. + We are working on the out-of-order release (discussion). +

+ +

What's new in 2.28 (2016/10/30)

+ +

What's new in 2.27 (2016/10/23)

+ +

What's new in 2.26 (2016/10/17)

+ +

What's new in 2.25 (2016/10/09)

+ +

What's new in 2.24 (2016/10/02)

+ +

What's new in 2.23 (2016/09/18)

+ +

What's new in 2.22 (2016/09/11)

+ +

What's new in 2.21 (2016/09/04)

+ +

What's new in 2.20 (2016/08/28)

+ +

What's new in 2.19 (2016/08/21)

+ +

What's new in 2.18 (2016/08/15)

+ +

What's new in 2.17 (2016/08/05)

+ +

What's new in 2.16 (2016/07/31)

+ +

What's new in 2.15 (2016/07/24)

+ +

What's new in 2.14 (2016/07/17)

+ +

What's new in 2.13 (2016/07/10)

+ +

What's new in 2.12 (2016/07/05)

+ +

What's new in 2.11 (2016/06/26)

+ +

What's new in 2.10 (2016/06/19)

+ +

What's new in 2.9 (2016/06/13)

+ +

What's new in 2.8 (2016/06/05)

+ +

What's new in 2.7 (2016/05/29)

+ +

What's new in 2.6 (2016/05/22)

+ +

What's new in 2.5 (2016/05/16)

+ +

What's new in 2.4 (2016/05/15)

+ +

What's new in 2.3 (2016/05/11)

+ +

What's new in 2.2 (2016/05/08)

+ +

What's new in 2.1 (2016/05/01)

+ + + +

What's new in 2.0 (2016/04/20)

+
+ More detailed information about the new features in Jenkins 2.0 on the overview page. +
+ + +

What's new in 1.656 (2016/04/03)

+ +

What's new in 1.655 (2016/03/27)

+ +

What's new in 1.654 (2016/03/21)

+ +

What's new in 1.653 (2016/03/13)

+ +

What's new in 1.652 (2016/03/06)

+ +

What's new in 1.651 (2016/02/28)

+ +

What's new in 1.650 (2016/02/24)

+ +

What's new in 1.649 (2016/02/21)

+ +

What's new in 1.648 (2016/02/17)

+ +

What's new in 1.647 (2016/02/04)

+ +

What's new in 1.646 (2016/01/25)

+ +

What's new in 1.645 (2016/01/18)

+ +

What's new in 1.644 (2016/01/10)

+ +

What's new in 1.643 (2015/12/20)

+ +

What's new in 1.642 (2015/12/13)

+ +

What's new in 1.641 (2015/12/09)

+ +

What's new in 1.640 (2015/12/07)

+ +

What's new in 1.639 (2015/11/29)

+ +

What's new in 1.638 (2015/11/11)

+ +

What's new in 1.637 (2015/11/08)

+ +

What's new in 1.636 (2015/11/01)

+ +

What's new in 1.635 (2015/10/25)

+ +

What's new in 1.634 (2015/10/18)

+ +

What's new in 1.633 (2015/10/11)

+ +

What's new in 1.632 (2015/10/05)

+ +

What's new in 1.631 (2015/09/27)

+ +

What's new in 1.630 (2015/09/20)

+ +

What's new in 1.629 (2015/09/15)

+ +

What's new in 1.628 (2015/09/06)

+ +

What's new in 1.627 (2015/08/30)

+ +

What's new in 1.626 (2015/08/23)

+ +

What's new in 1.625 (2015/08/17)

+ +

What's new in 1.624 (2015/08/09)

+ +

What's new in 1.623 (2015/08/02)

+

No notable changes in this release.

+

What's new in 1.622 (2015/07/27)

+ +

What's new in 1.621 (2015/07/19)

+ +

What's new in 1.620 (2015/07/12)

+ +

What's new in 1.619 (2015/07/05)

+ +

What's new in 1.618 (2015/06/29)

+ +

What's new in 1.617 (2015/06/07)

+ +

What's new in 1.616 (2015/05/31)

-

What's new in 1.615 (2015/05/25)