jenkinsjenkins入门


备注

Jenkins是一个用Java编写的开源持续集成工具。在与甲骨文发生争执后,该项目是从哈德森分出来的

Jenkins为软件开发提供持续集成服务。它是在诸如Apache Tomcat之类的servlet容器中运行的基于服务器的系统。它支持SCM工具,包括AccuRev,CVS,Subversion,Git,Mercurial,Perforce,Clearcase和RTC,并且可以执行基于Apache Ant和Apache Maven的项目以及任意shell脚本和Windows批处理命令。 Jenkins的主要开发人员是Kohsuke Kawaguchi 。根据MIT许可证发布,Jenkins是免费软件。

构建可以通过各种方式启动,包括通过版本控制系统中的提交,通过类似cron的机制进行调度,通过在其他构建完成时构建,以及通过请求特定的构建URL来触发。

版本

詹金斯

发布日期
1.656 2016年4月3日
2.0 2016年4月20日

Jenkins 1.x vs Jenkins 2.x

Jenkins是(现在仍然是)一个持续集成(CI)系统,它允许软件开发过程的自动化,例如在SCM提交触发器上构建代码。然而,对持续交付(CD)不断增长的需求要求Jenkins发展为纯粹的CI系统,将CI和CD混合在一起。此外,Jenkins工作的非工业化需求一直在增长,经典的Jenkins 1.x Freestyle/Maven jobs开始对某些需求的限制太多。

在Jenkins 1.xa下,名为workflow-plugin似乎允许开发人员编写代码来描述作业。 Jenkins 2进一步增加了对Pipeline as Code内置支持。主要的好处是,作为Groovy脚本文件的管道可能比UI配置的自由式作业更复杂,并且可以进行版本控制。 Jenkins 2还添加了一个新界面,可以轻松地显示管道中定义的不同“阶段”,并跟踪整个管道的进度,如下所示:

在此处输入图像描述

有关Jenkins 2添加到Jenkins的完整概述,请参阅Jenkins 2概述

此外,Jenkins网站提供完整的更改日志

在Jenkins中配置项目

在这里,我们将检查项目代码的最新副本,运行测试并使应用程序生效。为此,请按照以下步骤操作:

  1. 在浏览器中打开Jenkins。
  2. 单击“ 新建作业”链接。
  3. 输入项目名称,然后选择“ 构建自由式软件项目”链接。
  4. 单击“ 确定”按钮。
  5. 在“ 源代码管理”部分下 ,选择源代码管理工具旁边的单选框。在我的情况下,我选择了Git

提供git repo的url,如git://github.com/example/example.git

  1. Build触发器下 ,选择Poll SCM旁边的单选框。
  2. Schedule框中提供***** 。此框负责定期触发构建。 ***** 指定,作业将每分钟触发git repo的更改。
  3. 在“ 构建”部分下,单击“ 添加构建步骤”按钮,然后选择要用于构建项目的选项。我选择了Execute Shell 。在命令框中编写命令以构建,运行测试并将其部署到prod。
  4. 向下滚动并保存

因此,我们在Jenkins中配置了一个基本项目,它将在每分钟触发构建,以便在git存储库中进行更改。注意:要设置复杂项目,您可能必须在Jenkins中安装一些插件。

使用Jenkins 2管道脚本配置一个简单的构建项目

这里我们将在Jenkins 2中创建一个Groovy管道来执行以下步骤:

  • 如果新代码已提交到我们的项目,则每5分钟验证一次
  • 来自SCM repo的结账代码
  • Maven编译我们的Java代码
  • 运行我们的集成测试并发布结果

以下是我们将采取的步骤:

  1. 确保我们至少有一个2.0 Jenkins版本(您可以在页面的右下角查看),例如:

    Jenkins版本捕获示例

  2. 在Jenkins主页上,单击New Item

  3. 输入项目名称并选择管道

  4. Build Triggers部分中,选择Poll SCM选项并添加以下5分钟CRON计划: */5 * * * *

  5. 在“ 管道”部分中, 从SCM中选择“ 管道脚本”或“ 管道脚本”

  6. 如果您在上一步中从SCM选择了管道脚本 ,则现在需要在存储库URL中指定SCM存储库(Git,Mercurial,Subversion)URL,例如http://github.com/example/example.git 。您还需要在example.git存储库中指定Groovy脚本文件的脚本路径 ,例如pipelines/example.groovy

  7. 如果您之前单击过Pipeline Script ,则直接在Groovy脚本窗口中复制以下Groovy代码;如果您从SCM中选择了Pipeline Script,则在您的example.groovy 复制

node('remote') {
    // Note : this step is only needed if you're using direct Groovy scripting
    stage 'Checkout Git project'
    git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
    def appVersion = version()
    if (appVersion) {
        echo "Building version ${appVersion}"
    }

    stage 'Build Maven project'
    def mvnHome = tool 'M3'
    sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify"
    step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
}
def version() {
    def matcher = readFile('pom.xml') =~ '<version>(.+)</version>'
    matcher ? matcher[0][1] : null
}
 

在这里,您现在应该能够使用Jenkins 2 Groovy管道编译和测试您的第一个Jenkins项目。

安装

对于基于apt-get的系统,如Ubuntu

添加Jenkins存储库:

wget -q -O - https://jenkins-ci.org/debian/ Jenkins-ci.org.key | sudo apt-key

sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
 

更新源并安装Jenkins:

sudo apt-get update

sudo apt-get install jenkins

现在创建了一个jenkins用户,默认情况下Jenkins将在端口8080上运行。

对于基于RPM的发行版,例如Red Hat Enterprise Linux(RHEL),CentOS,Fedora或Scientific Linux

要下载稳定版本的存储库文件:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo

或者,如果您想要最新的每周版本:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

导入公钥:

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

使用yum安装Jenkins:

sudo yum install jenkins

Jenkins需要java才能运行,安装它:

sudo yum install java

要启动/停止/重启jenkins使用:

sudo service jenkins start/stop/restart

升级jenkins(RPM安装)

  1. 备份jenkins主目录
  2. 用新的WAR文件替换以下位置的jenkins.war。 / usr / lib中/詹金斯/ jenkins.war`
  3. 重启Jenkins
  4. 检查固定插头并在需要时取消固定
  5. 从磁盘重新加载配置

注意:对于捆绑的jetty app服务器的Jenkins 2升级,请在/etc/sysconfig/jenkins 禁用AJP端口(设置JENKINS_AJP_PORT="-1" )。

从外部源安装插件

java -jar [Path to client JAR] -s [Server address] install-plugin [Plugin ID]
 

客户端JAR必须是CLI JAR文件,而不是运行Jenkins本身的JAR / WAR。可以在Jenkins CLI wiki上的插件相应页面上找到唯一ID( https://wiki.jenkins-ci.org/display/JENKINS/Plugins)

詹金斯在一个地方完整介绍

詹金斯:

Jenkins是一个用Java编写的开源持续集成工具。在与甲骨文发生争执后,该项目是从哈德森分出来的。

简而言之,Jenkins是领先的开源自动化服务器。它采用Java构建,提供数百个插件,支持几乎任何项目的构建,测试,部署和自动化。

特点: Jenkins提供开箱即用的以下主要功能,还可以通过插件添加更多功能:

易于安装:只需运行java -jar jenkins.war,将其部署在servlet容器中。没有额外的安装,没有数据库。喜欢安装程序或本机包?我们也有这些。轻松配置:Jenkins可以完全从其友好的Web GUI进行配置,具有广泛的即时错误检查和内联帮助。丰富的插件生态系统:Jenkins几乎集成了每个SCM或构建工具。查看插件。可扩展性:Jenkins的大多数部分都可以扩展和修改,并且很容易创建新的Jenkins插件。这允许您根据需要自定义Jenkins。分布式构建:Jenkins可以将构建/测试负载分配给具有不同操作系统的多台计算机。为OS X,Linux和Windows构建软件?没问题。

安装:

$ wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins
to do more refer link :
 

参考: https//wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

参考: http//www.vogella.com/tutorials/Jenkins/article.html

参考: https//wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

JENKINS_HOME目录Jenkins需要一些磁盘空间来执行构建并保存存档。您可以从Jenkins的配置屏幕中查看此位置。默认情况下,它设置为〜/ .jenkins,但您可以通过以下方式之一更改此设置:在启动servlet容器之前,将“JENKINS_HOME”环境变量设置为新的主目录。将“JENKINS_HOME”系统属性设置为servlet容器。将JNDI环境条目“JENKINS_HOME”设置为新目录。有关如何为容器执行此操作的详细信息,请参阅容器特定文档集合。您也可以在使用Jenkins一段时间后更改此位置。为此,请完全停止Jenkins,将内容从旧的JENKINS_HOME移动到新的主页,设置新的JENKINS_HOME,然后重新启动Jenkins。 JENKINS_HOME有一个相当明显的目录结构,如下所示:

JENKINS_HOME

+- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)
 

詹金斯建立工作:

在Jenkins中创建新的构建作业很简单:只需单击Jenkins仪表板上的“新建作业”菜单项即可。 Jenkins支持几种不同类型的构建作业,当您选择创建新作业时,这些作业将呈现给您

自由式软件项目

Freestyle构建作业是通用构建作业,可提供最大的灵活性。

Maven项目 “maven2 / 3项目”是一个专门适用于Maven项目的构建工作。 Jenkins了解Maven pom文件和项目结构,并且可以使用从pom文件中收集的信息来减少设置项目所需的工作。

工作流程

协调可以跨越多个构建从属的长时间运行的活动。适用于建造管道和/或组织不易适应自由式工作类型的复杂活动。

监视外部作业“监视外部作业”构建作业使您可以密切关注非交互式进程,例如cron作业。

多配置作业“多配置项目”(也称为“矩阵项目”)允许您在许多不同的配置中运行相同的构建作业。这个强大的功能可用于在许多不同的环境中测试应用程序,使用不同的数据库,甚至在不同的构建机器上。

1.构建软件项目(自由风格)

Jenkins可用于执行典型的构建服务器工作,例如执行连续/官方/夜间构建,运行测试或执行一些重复的批处理任务。这在詹金斯被称为“自由式软件项目”。设置项目转到Jenkins首页,选择“New Job”,然后选择“Build a free-style software project”。此作业类型包含以下元素:可选SCM,例如源代码所在的CVS或Subversion。用于控制Jenkins何时执行构建的可选触发器。某种构建脚本执行构建(ant,maven,shell脚本,批处理文件等),其中实际工作发生可选步骤以从构建中收集信息,例如存档工件和/或记录javadoc和测试结果。通过发送结果通知其他人/系统的可选步骤,例如发送电子邮件,即时消息,更新问题跟踪器等。

非源控制项目的构建有时需要仅为演示目的构建项目,或者无法访问SVN / CVS存储库。通过选择在“源代码管理”下将项目配置为“无”,您必须:

  1. 至少构建一次项目,(它会失败),但Jenkins将创建结构jenkins / workspace / PROJECTNAME /
  2. 将项目文件复制到jenkins / workspace / PROJECTNAME /
  3. 再次构建并适当配置

詹金斯设置环境变量

当Jenkins作业执行时,它会设置一些您可以在shell脚本,批处理命令,Ant脚本或Maven POM中使用的环境变量。单击ENVIRONMENT_VARIABLE查看变量列表

配置自动构建

可以定期触发Jenkins中的构建(按计划,在配置中指定),或者在检测到项目中的源更改时触发,或者可以通过请求URL自动触发它们:

HTTP:// YOURHOST /詹金斯/工作/ PROJECTNAME /编译

这允许您将Jenkins构建挂钩到各种设置中。有关更多信息(特别是在启用安全性的情况下执行此操作),请参阅远程访问API。

根据源更改构建

您可以让Jenkins轮询您的修订控制系统以进行更改。您可以使用与Unix / Linux上的crontab相同的语法指定Jenkins轮询修订控制系统的频率。但是,如果您的轮询周期短于轮询修订控制系统所花费的时间,则每次更改最终可能会有多个版本。您应该将轮询周期调整为长于轮询修订控制系统所花费的时间,或者使用提交后触发器。您可以检查每个构建的轮询日志,以查看轮询系统所需的时间。

或者,您可以使用URL触发器(如上所述),但使用/ polling而不是URL末尾的/ build,而不是按固定间隔进行轮询。这使得Jenkins对SCM进行了轮询,而不是立即构建。这可以防止Jenkins运行构建,而不会对影响与作业无关的模块或分支的提交进行相关更改。使用/轮询时,必须配置作业以进行轮询,但计划可以为空。

通过电子邮件构建(sendmail)

如果您拥有系统的root帐户并且使用的是sendmail,我发现最容易调整/ etc / aliases并添加以下条目:jenkins-foo:“| / bin / wget -o / dev / null

http:// YOURHOST / jenkins / job / PROJECTNAME / build

然后运行“newaliases”命令让sendmail知道更改。每当有人向“jenkins-foo @ yoursystem”发送电子邮件时,都会触发新版本。有关配置sendmail的更多详细信息,请参阅此处。通过电子邮件构建(qmail)使用qmail,您可以按如下方式编写/var/qmail/alias/.qmail-jenkins:| / bin / wget -o / dev / null http:// YOURHOST / jenkins / job / PROJECTNAME / build

2.构建Maven项目

Jenkins提供专门用于Maven 2/3的工作类型。这种工作类型将Jenkins与Maven 2/3深度集成,与更通用的自由式软件项目相比,具有以下优势。

Jenkins解析Maven POM以获取完成其工作所需的大量信息。结果,配置量大大减少。

詹金斯听取了Maven的执行情况,并确定了自己应该做什么。例如,当Maven运行测试阶段时,它将自动记录JUnit报告。或者如果你运行javadoc目标,Jenkins将自动记录javadoc。

Jenkins自动在项目之间创建项目依赖项,这些项目之间声明了SNAPSHOT之间的依赖关系。见下文。因此,大多数情况下,您只需要配置SCM信息以及您希望运行的目标,Jenkins将会找出其他所有内容。

此项目类型可以自动提供以下功能:

归档由构建生成的工件

发布测试结果

触发作为下游依赖项的项目的作业

将工件部署到Maven存储库

按模块分组测试结果

(可选)仅重建已更改的模块,从而加快构建速度

从模块依赖项自动构建链接

Jenkins从您的POM读取项目的依赖项,如果它们也构建在Jenkins上,则触发器的设置方式使得其中一个依赖项中的新构建将自动启动项目的新构建。 Jenkins了解POM中的各种依赖关系。即父母POM

<dependencies> section of your project
<plugins> section of your project
<extensions> section of your project
<reporting> section of your project
 

此过程将版本考虑在内,因此您可以在同一个Jenkins上拥有项目的多个版本/分支,并且它将正确地确定依赖项。 请注意 ,不支持依赖版本范围,请参阅[ https://issues.jenkins-ci.org/browse/JENKINS-2787] [1 ]

可以按需禁用此功能 - 无论何时构建SNAPSHOT依赖关系,请参阅配置选项Build

安装:

1。进入Manage Jenkins >>配置系统

  1. 在maven标签中“点击maven安装......

您可以让Jenkins自动安装特定版本的Maven,或者提供本地Maven安装的路径(您可以根据需要为您的构建项目配置多个版本的Maven,并为不同的项目使用不同版本的Maven。如果勾选“自动安装”复选框,Jenkins将为您下载并安装所请求的Maven版本,并将其安装到Jenkins主目录中的tools目录中。

如何使用它

首先,您必须配置Maven安装(如果您使用DEV @ cloud,则可以跳过此步骤)。这可以通过进入系统配置屏幕(管理Jenkins->配置系统)来完成。在“Maven安装”部分中,1)单击“添加”按钮,2)为其命名,例如“Maven 3.0.3”,然后3)从下拉列表中选择版本。

现在,Jenkins将自动安装此版本(例如,在任何新的构建机器上),从Apache下载并解压缩。

创建一个新的Maven作业:

  1. 单击左侧的“新建作业/新项目”
  2. 给它起个名字
  3. 选择“构建Maven 2/3项目”
  4. 保存你的工作

现在您需要配置您的工作

  1. 选择要使用的SCM(例如使用git)

  2. 选择maven目标来打电话

  3. 添加存储库URL和凭据。

  4. 检查用户私有maven回购:

您还可以定义相同的客户路径。

5。建设项目

现在单击build来构建项目,然后单击左侧“Build Executor Status”中的进度条,观察jenkins安装Maven,签出项目,并使用maven构建它。

记录:

https://wiki.jenkins-ci.org/display/JENKINS/Logging

脚本控制台:

用于故障排除,诊断或批量更新作业Jenkins提供了一个脚本控制台,可让您访问所有Jenkins内部。这些脚本是用Groovy编写的,你可以在这个页面中找到它们的一些示例。

将Jenkins从一台PC转移到另一台PC

这对我有用,可以从Ubuntu 12.04(Jenkins ver.1.628)转到Ubuntu 16.04(Jenkins ver.1.651.2)。我首先从存储库安装了Jenkins

  1. 停止两个Jenkins服务器

  2. JENKINS_HOME (例如/ var / lib / jenkins)从旧服务器复制到新服务器。从新服务器的控制台:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. 启动新的Jenkins服务器

你可能不需要这个,但我必须这样做

  • Manage JenkinsReload Configuration from Disk
  • 断开并再次连接所有从站。
  • 检查在Configure System > Jenkins LocationJenkins URL 是否已正确分配给新的Jenkins服务器。

设置Nginx代理

本地,Jenkins在端口8080上运行。我们可以从端口80 - > 8080建立代理,因此可以通过以下方式访问Jenkins:

http://<url>.com
 

而不是默认值

http://<url>.com:8080
 

首先安装Nginx。

sudo aptitude -y install nginx

删除Nginx的默认设置

cd /etc/nginx/sites-available

sudo rm default ../sites-enabled/default

创建新配置文件

sudo touch jenkins

将以下代码复制到新创建的jenkins 文件中。

upstream app_server {
  server 127.0.0.1:8080 fail_timeout=0;
}

server {
  listen 80;
  listen [::]:80 default ipv6only=on;
  server_name ;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if (!-f $request_filename) {
        proxy_pass http://app_server;
        break;
    }
  }
}
 

在站点可用站点和站点启用之间创建符号链接:

sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/

重新启动Nginx代理服务

sudo service nginx restart

现在可以从80端口访问Jenkins。