进入 Jenkins 首页-->系统管理-->插件管理-->可选插件页面,在右上角的过滤框中输入插件部分或全部名称并回车,在搜索出的内容中查找待安装的插件。
按照以下步骤在 filter 中输入想要安装的插件部分命名,比如我们想安装 GitHub Branch Source,输入 github 后回车,在筛选后的页面中找到想要的插件,勾选左侧的方框后,选择 install without restart 或者 Download now and install after restart。
(若已经安装过该插件,则显示不出来 github 的插件)如下提示表示安装成功:
进入 Jenkins 首页-->系统管理-->插件管理-->高级,将页面拉到最后,按如下操作:
如下提示表示安装成功:
Jenkins 访问 tomcat 或者 github 是有可能会需要这些工具能够识别的凭证才能访问,Jenkins 也提供了设置 Credentials 的功能,有 2 种方法添加凭据:
进入 Jenkins 首页-->单击凭据:
如果之前添加过的话会显示所有添加的凭据,类似于以下内容:
直接单击 Add 添加凭据即可,出现如下的对话框,和方法一的一致:
以上工具都有自动安装的选项,不过建议手动安装。
以上配置完成后,将页面拉到最后,单击 Save 保存即可。
默认的主目录如下,可以点开右上角的问号,按照提示信息修改,一般不用改。
可以点开右侧的问号,看到系统消息的作用就是显示在首页顶部的一些公告信息,比如输入内容如下:
单击保存后,回到 Jenkins 首页,可以看到如下内容:
该内容默认是纯文本形式的,如果想要更高级的可以使用 HTML 格式控制显示内容的格式,但是需要切换到设置-->Configure Global Security 中,标记格式器,选择 Safe HTML,如下:
再进入到系统管理-->系统设置,输入 HTML 格式的文本,保存。
在 Jenkins 首页显示的内容如下:
默认值为 2,表示最多可以同时跑 2 个 job(有的版本叫 item)。
有两个选项:
当 Jenkins 有多个执行节点情况下的使用规则:
默认值是 5 秒,表示创建一个 job 或 item 中的构建在开始之前需要等待的秒数,一般不做修改。
默认为 0,表示 Jenkins 从 git 或者其他源代码管理工具中拉取代码失败时的尝试次数,也可以在具体的项目中进行设置。
如果勾选了此项,并且选择的是 Pattern,那么创建 job(或者 item)时要满足此规则才能创建成功。如下:
创建项目时不满足以上规则会提示以下信息:
配置完成后,单击页面最下方的保存按钮:
Jenkins 默认的邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如邮件通知无法提供详细的邮件内容、无法定义发送邮件的格式、无法定义灵活的邮件接收配置等等。而 Jenkins Email Extension Plugin 能允许你自定义邮件通知的方方面面,比如在发送邮件时你可以自定义发送给谁,发送具体什么内容等等。
这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致。
注意事项:
在任务的配置中,“构建后操作”中选择“Editable Email Notification”选项即可使用 Extended E-mail Notification 插件。
参数说明(这里只列出常用的参数):
单击 Advanced Settings…,可以用来进行更细化的设置,比如:执行成功和执行失败分别发送给不同的邮箱。
注意:默认情况下是没有配置触发器的,任务构建成功后会提示:No emails were triggered.。
参数说明:
在每个 Trigger 中都有高级配置项目,可以配置的内容和 Extended E-mail Notification 配置项目类似,这里修改的话会覆盖之前的默认设置,具体不再赘述,配置项如下:
注意:触发器都只能配置一次。
进入系统管理- 系统设置 - Extended E-mail Notification
SMTP server:邮件协议服务器。如 qq 邮箱则为 smtp.qq.com。
Default user E-mail suffix:邮箱的后缀名。如 qq 邮箱则为 @qq.com。
Default Content Type:默认的发送的邮件内容类型,默认是 text,我们选择 HTML(test/html)。
Default Recipients:默认的收件人列表,多个的话用逗号隔开。如果没有被项目中的配置覆盖的话,该插件会使用这个列表。可以在项目配置使用$ DEFAULT_RECIPIENTS,其参数包括此默认列表,也可以根据实际需要添加新的地址。
Reply To List:回复列表。
Emergency reroute:如果不为空的话,所有的邮件将只发送到指定的邮箱列表。
Allowed Domains:允许发送的域名。比如:@domain1.com,domain2.com,那么任何匹配*@domain1.com 和*@*.domain2.com 都可以发送。
Excluded Recipients:禁止发送邮件的邮箱地址Default Subject:默认的邮件主题。可以使用 Jenkins 自带的一些全局变量。
Maximum Attachment Size:最大的附件大小。
Default Content:默认的邮件内容。
Default Pre-send Script:默认发送前执行的脚本。
Default Post-send Script:默认发送后执行的脚本。
Default Triggers:当任务构建完成后选择 Editable Email Notification 的话,满足以下触发的条件就会发送邮件。
Content Token Reference:邮件中可以使用的变量。点击右侧的问号可以查看:
设置好以上内容后,点击保存。即全局设置完成。
以下是网上找的 Default Content,供参考:
构建结果 - ${BUILD\_STATUS} |
构建信息 |
失败用例$FAILED\_TESTS 最近提交(#$SVN\_REVISION)
|
效果如下:
这种方式能够将生成的 war 包自动发布到指定 IP 的 Tomcat 中,前提是需要 Tomcat 已经启动。
Tomcat Manager 是 Tomcat 自带的、用于对 Tomcat 自身以及部署在 Tomcat 上的应用进行管理的 web 应用。Tomcat Manager 需要以用户角色进行登录并授权才能使用相应的功能,由于 Tomcat Manager 在默认的情况下是禁用的,因此需要我们进行相应的用户配置之后才能使用 Tomcat Manager。用户角色如下:
新安装的 tomcat,访问 tomcat 的 Server Status、Manager App、Host Manager 三个页面均显示 403,需要在 conf/tomcat-users.xml 里添加配置。
如果想要访问 manager 页面,需要添加配置项:
如果需要使用到远程部署等功能,需要添加配置项:
(Tomat7 不需要修改下面这两个文件,只有 Tomcat7 以上才需要修改)
在 webapps 下的 host-manager 和 manager,都有名为 META-INF 的文件夹,里面都有 context.xml 文件,部分内容为:
如果 tomcat 在 linux 下的话,需要做如下配置,然后重启 tomcat 即可。
在 tomcat/conf/tomcat-users.xml 追加以下内容:
tomcat/webapps/manager/META-INF/context.xml 如下图所示,注释掉
如果发布过程中提示:Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
则检查以上 2 个文件是否正确配置。
进入 Jenkins 主页,系统管理 --> 全局工具配置,下拉到最后。
登录 linux 系统,生成 SSH-key,SSH-key 是一对密钥,一个公钥,一个私钥,用来在不同的电脑之间通过安全的连接进行数据交换。命令如下:
cd /root
ls -al ~/.ssh //查看 id_rsa.pub 或 id_dsa.pub 是否存在
ssh-keygen //连续三次回车,即在本地生成了公钥和私钥,在生成过程中可以根据需要设置一个 passphrase,也可以不设置,生成的公钥私钥在~/.ssh 目录下,id_rsa 是私钥,d_rsa.pub 是公钥
cat id_rsa.pub //可以看到生成的公钥
重启服务不再通过 service 操作,而是通过 systemctl 操作:
构建后操作→增加构建后操作步骤→Send build artifacts over SSH
#替换 tomcat 中的旧文件
cp -r /tmp/myapp/interface_proj.war /usr/local/apache-tomcat-8.5.38/webapps
sh /usr/local/apache-tomcat-8.5.38/bin/shutdown.sh
sleep 15s
#启动 tomcat
sh /usr/local/apache-tomcat-8.5.38/bin/startup.sh
#验证 tomcat 启动
ps -ef|grep tomcat|grep start|grep -v 'grep'|awk '{print $2}'
Remote directory
Directories created
'qa-approved/'yyyyMMddHHmmss
qa-approved/20101107154555
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}'
builds/2010/11/07/build-456 (if the build was number 456)
yyyy_MM/'build'-EEE-d-HHmmss
2010_11/build-Sun-7-154555
yyyy-MM-dd_HH-mm-ss
2010-11-07_15-45-55
Jenkins 第一次启动时会有推荐安装的插件,以下插件不包含在推荐安装列表中。
序号
插件名称
作用
1
Maven Integration
用来创建 Maven 项目,不安装的话不能创建 Maven 项目
2
Deploy to container
用来将 war 包部署到 tomcat 服务器上
3
Generic Webhook Trigger
用来创建 webhook,获取源码仓库改动信息,自动触发部署
4
Email Extension
邮件的扩展插件,可以定义不同构建结果情况下收件人,邮件
内容等
5
Publish Over SSH
用来实现远程的自动部署
6
Role-based Authorization
Strategy
实现基于角色的安全机制
7
Performance
将 jtl 文件展示为图表
8
HTML Publisher
用来将 HTML 的测试结果展示到项目首页
9
Startup Trigger
用来在 Jenkins 节点(master/slave)启动时触发构建,做一些
初始化工作
10
Groovy
用来在项目构建步骤中直接执行 Groovy 代码
11
Pipeline Utility Steps
pipeline 中类似于的 jdk 的插件,提供一些常用的方法
12
Docker-build-step
用来集成 Docker 相关操作
13
Docker
用来将 Docker 配置为云
环境变量这个词我们并不陌生,安装完 java 或者 python 之后,为了在任意位置使用都需要将其安装路径加入到系统的环境变量中。类似的,Jenkins 也有环境变量,而且还可以分为内置的和自定义的环境变量。
Jenkins 通过一个名为 env 的全局变量可以访问内置的环境变量。在构建配置项下方,有项目可以使用的环境变量超链接,如下:
点击之后,可以看到如下页面内容(注意,不同的项目类型可以使用的环境变量会有些差异):
环境变量使用格式:
如果内置的环境变量不能满足项目的需要,也可以自定义全局的环境变量。进入 Manage Jenkins-->Configure System 页,下拉查找全局属性,选中“Environment variables”,单击 Add 按钮可以在出现的框中添加变量名和变量值。如下所示:
自定义的全局变量也会被加入到 env 属性列表中,像使用内置的环境变量一样去使用。
一个项目涉及到的人员有多个,比如开发、测试和运维,测试又有测试经理和普通测试工程师,他们的权限一般都是不一样的,而且如果 Jenkins 集成的项目很多很复杂的时候,可能需要使用更细粒度的方式进行授权,不同的角色拥有不同的权限,如全局角色拥有所有项目的增删改查权限;项目角色只是针对参与的项目有特定的权限。
Jenkins 默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,我们采用的是 Role-based Authorization Strategy 插件(https://github.com/Jenkinsci/role-strategy-plugin/blob/master/README.md)。
Jenkins 首页-->系统管理-->插件管理-->可选插件页面,搜索 Role-based Authorization Strategy:
安装成功后再已安装的标签页就可以看到此插件:
需要先添加用户,才能给用户分别权限。
1)进入 Jenkins 首页-->系统管理-->Manage Users:
2)创建新用户:
进入 Jenkins 首页,单击系统管理-->Configure Global Security,勾选 Role-Based Strategy:
开启授权策略后,可以在系统管理页面看到 Manage and Assign Roles 选项:
使用 admin 登录,进入 Jenkins 首页,单击系统管理-->Manage and Assign Roles,可以看到以下界面:
需要进行 Global roles、Project roles 两个配置:
可以看到 admin 是超级用户,拥有所有的权限。点击 Add 按钮添加用户,然后对该用户的权限进行配置。注意:一般用户要有 Overall 的 read 权限,不添加的话使用该用户登录,则 Jenkins 会提示:用户没有 Overall/read 权限。
单击 Add 添加完成后,再分配权限:
将定义好的规则分配给具体的用户。在 Manage Roles 只是对不同的角色分配了不同的权限,这一步是将这个权限和具体的用户匹配起来。
单击 Assign Roles,进入之后可以看到有两个和 Manage Roles 对应的配置项:Global roles 和 Item roles。
以 test 用户登录:
以 kongsh 用户登录:
默认情况下创建的项目都是在 Jenkins 首页一个名为 ALL 的视图中,当项目很多或者所有团队共用一个 Jenkins 的话,想找到目标项目就会很吃力,要么使用浏览器自带的搜索功能,要么使用 Jenkins 的搜索功能。这时我们就可以使用视图来对项目进行分类管理。未使用视图分类时的项目组织情况:
单击左侧的 New View 或者 All 后面的 + 号都可以用来创建视图:
单击后的配置页面如下:
单击确定后进入视图配置页面,如下:
勾选“使用正则表达式在视图中显示任务”,然后输入正则表达式:test.*,表示所有以 test 开头的项目,和正则表达式匹配的项目就会出现在此视图中,如下:
如果不想使用正则表达式的话,也可以手动选择指定的项目到此视图中。
如果有多个视图的话,可以把某一个设置为默认视图,方法如下:
进入 Manage Jenkins-->Configure System 页,下拉找到默认视图配置项:
可以根据需要选择默认的值。
这个是指将每次构建之后会在当前的工作空间中产生 war 包、jar 包、apk 或者一些日志文件等二进制文件展示到项目的构建首页中,方便需要时下载或者查看。Jenkins 提供了 Archive the Artifacts 的插件以满足以上要求。
在项目中构建后操作配置中选择 Archive the Artifacts:
Archive the artifacts 配置中,输入归档产物的目录。
构建后在项目首页看到的结果:
点击右侧的蓝色问号,这是 Jenkins 的上下文帮助按钮,可以查看详细的帮助信息。
内置环境变量可以在配置 Jenkins Job 的时候用得到,也可以用在 Execute shell、Execute Windows batch command、文本框等加上编辑好的 shell 脚本。
自己定义的参数化(Parameter)在调用时可以直接用 $参数名,比如调用这个时直接 $endPoint。
在 Maven 中使用(参考 Jenkins 内置环境变量的使用):
在 Jenkins 节点机器的运行目录为:C:\Users\G\.Jenkins\workspace\项目名,如果 Jenkins 的任务上没有用 github 方式拉取代码,而是直接构建运行代码的话,所有运行 job 不会自动在 Jenkins 机器上创建当前这个 Jenkins job 名称的文件夹路径。
Jenkins 为了避免受到恶意 HTML/JS 文件的攻击,默认的配置下只允许加载 Jenkins 服务器上托管的 CSS 文件和图片文件 。 默认的安全策略 CSP 设置为 :sandbox; default-src 'none'; img-src 'self'; style-src 'self';
也有一种解决方法是在 Jenkins 的脚本命令行执行一条关闭默认的设置。但是这种方法的缺点就是 Jenkins 关闭之后就会失效,必须重新执行一次该命令。本节介绍一种永久性的解决方法,即使 Jenkins 重启也不用担心。
需要提前安装好以下 2 个插件:
新建一个自由风格的项目,在构建触发器选项中选中 Build when job nodes start:
在构建步骤中选择 Execute Groovy script,输入以下命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","script-src 'unsafe-inline'")
保存即可。相当于把脚本的执行集成在项目中,这样就不用担心 Jenkins 重启了。
如果不小心忘记了管理员密码,我们该怎么办呢?过程如下:
进入到 C:\Users\kongsh\.Jenkins\users\admin 目录下,打开 config.xml 文件,找到
将其替换为一个已知密码的值,比如:
Manage Jenkins → Manage Users → admin 右侧设置齿轮图标,设置新的管理员密码,应用、保存即可。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章