User:Asingh2626/sandbox

From Wikipedia, the free encyclopedia
Initial release2 February 2011 (2011-02-02)[1]
Stable release
2.21 / 4 September 2016; 7 years ago (2016-09-04)
Written inJava
Operating systemCross-platform
TypeContinuous integration
LicenseMIT license
Websitejenkins.io

Jenkins is an open source continuous integration tool written in Java. The project was forked from Hudson after a dispute with Oracle.

Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat. It supports SCM tools including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven based projects as well as arbitrary shell scripts and Windows batch commands. The primary developer of Jenkins is Kohsuke Kawaguchi. Released under the MIT License, Jenkins is free software.[2]

Builds can be started by various means, including being triggered by commit in a version control system, by scheduling via a cron-like mechanism, by building when other builds have completed, and by requesting a specific build URL.

History[edit]

Jenkins was developed by Hudson project. Hudson's creation started in summer of 2004 at Sun Microsystems. It was first released in java.net in Feb. 2005.[4]

Around 2007 Hudson became known as a better alternative to CruiseControl and other open-source build-servers.[2][5] At the JavaOne conference in May 2008 the software won the Duke's Choice Award in the Developer Solutions category.[6]

During November 2010, an issue arose in the Hudson community with respect to the infrastructure used, which grew to encompass questions over the stewardship and control by Oracle.[7] Negotiations between the principal project contributors and Oracle took place, and although there were many areas of agreement a key sticking point was the trademarked name "Hudson",[8] after Oracle claimed the right to the name and applied for a trademark in December 2010.[9] As a result, on January 11, 2011, a call for votes was made to change the project name from "Hudson" to "Jenkins".[10] The proposal was overwhelmingly approved by community vote on January 29, 2011, creating the Jenkins project.[11][12]

On February 1, 2011, Oracle said that they intended to continue development of Hudson, and considered Jenkins a fork rather than a rename.[13] Jenkins and Hudson therefore continue as two independent projects, each claiming the other is the fork. As of December 2013, the Jenkins organisation on GitHub had 567 project members and around 1,100 public repositories,[14] compared with Hudson's 32 project members and 17 public repositories.[15][[[Wikipedia:No original research|original research?]]]

In 2011, creator Kohsuke Kawaguchi received a Google-O'Reilly Open Source Award for his work on the Hudson/Jenkins project. In 2014, Kawaguchi became the Chief Technology Officer for CloudBees.[16]

On April 20, 2016 version 2 was released with the Pipeline plugin enabled by default. The plugin allows for writing build instructions in Apache Groovy.

How it works[edit]

Located at a server where the project’s main build is created, Jenkins triggers a new build every time a user checks in some changes into the source code, thus supporting the process of continuous integration for testing or development phases. The builds created are reflected on the Jenkins dashboard, with details logged in such as time and date created, build status such as success or failure, error messages in case of build failure, reports and other helpful details which helps the user keep track of the builds generated. Jenkins can be configured to be more user friendly by customizing it to send notifications when the build is generated. As it supports more than one projects, while a build is already in progress, a build queue is created according to the time-stamp with which each build is triggered.

Distributed builds are supported to reduce the load off of the central server, mostly used in case of large builds coupled with heavy trigger frequency.

Installation and Configuration[edit]

Jenkins can be run as services by installing them directly on the operating systems or alternatively by deploying Jenkins war file in any container (such as Apache Tomcat) that supports Servlet version 3.1 and JSP 2.0., which in turn will run as a service. Originally Jenkins was created to work on Unix/Linux based systems only, because of which it supports native integration with the operating systems such as Ubuntu, RedHat and Docker. Windows support was added later.

Jenkins demands sufficient storage capacity wherever it is hosted as all the builds generated are accommodated with Jenkins.

Jenkins UI portal provides various configuration options under Manage Jenkins option where users can add/download plugins, security settings, credentials, reload configurations from disk, notifications etc.

Plugins[edit]

Plugins have been released for Jenkins that extend its use to projects written in languages other than Java.[17]  Plugins are available for integrating Jenkins with most version control systems and big databases. Many build tools are supported via their respective plugins. Plugins can also change the way Jenkins looks or add new functionality. There are a set of plugins dedicated for the purpose of unit testing that generate test reports in various formats (for example JUnit bundled with Jenkins, MSTest, NUnit etc[3]) and automated testing which supports automated tests. Builds can generate test reports in various formats supported by plugins (JUnit support is currently bundled) and Jenkins can display the reports and generate trends and render them in the GUI.

Security[edit]

Jenkins' security depends on two factors, access control and protection from external threats. Access control can be customized via two ways, user authentication and authorization. Protection from external threats such as CSRF attacks and malicious builds is supported as well.[4]

Other frameworks[edit]

There are similar tools for other programming frameworks such as:

·       Buildbot — a Python system to automate the compile/test cycle to validate code changes.

·       tox — an automation tool providing packaging, testing and deployment of Python software.

·       Travis-CI — a distributed CI server which builds tests for open source projects for free.

·       Appveyor — is a hosted, distributed continuous integration service used to build and test projects hosted at GitHub on a Microsoft Windows virtual machine.

·       Django-Jenkins — Django (Python) Web Framework integration with Jenkins, heavily contributed to by Montana Mendy.[18]

See continuous integration for more.

Awards and Recognition[edit]

  • InfoWorld Bossie Award (Best of Open Source Software Award) in 2011.[5]
  • Received Geek Choice Award in 2014.[5]

See also[edit]

References[edit]

  1. ^ Jenkins 1.396 released, The first release of Jenkins is posted, Kohsuke Kawaguchi
  2. ^ Kawaguchi, Kohsuke; et al. "Use Hudson: License". Retrieved January 30, 2011.
  3. ^ "Plugins - Jenkins - Jenkins Wiki".
  4. ^ "Securing Jenkins". jenkins.io. Retrieved 2016-09-13.
  5. ^ a b "Awards - Jenkins - Jenkins Wiki". wiki.jenkins-ci.org. Retrieved 2016-09-13.

External links[edit]


Category:Compiling tools Category:Build automation Category:Continuous integration Category:Free software programmed in Java (programming language) Category:Java development tools Category:Software using the MIT license