一、安装与配置
最简单的安装,前往官网下载通用的 war 包部署到本地的 Tomcat 中。
插件安装
系统配置
全局工具配置
Nginx转发的配置
如果前端服务的 Nginx 部署了 SSL 证书时,许多操作会引发web错误,可讲下面的配置添加到nginx配置中。
server {
location /jenkins {
# 常规转发
proxy_pass http://server_local_8080/jenkins;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
# 特殊配置
proxy_redirect http:// https://;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
add_header 'X-SSH-Endpoint' 'domain:8080/jenkins' always;
}
}
二、Jenkins 使用
任务管理
1.基本命名约定
命名规则最好只包含英文、数字、下划线或者中杠,不要使用中文或者空格!
2.创建文件夹
文件夹用于管理任务,可以多层嵌套,管理分组项目。显示名称,可以使用中文,并且会显示在列表中。
3.创建任务
创建项目的第一页,是输入任务名称,选择任务类型。任务类型目前实测下来,不算 文件夹 类型,最常用的就是:构建一个自由风格的软件项目 和 构建一个maven项目 。前者基本可适合绝大多数类型的项目,例如:php、python这种解释型的,以及node这种编译型的。当然,也可以从当前的某个现有项目复制一份,进行修改。
创建好任务之后,接下来是配置任务,配置任务分为:General(一般配置)、源码管理、构建触发器、构建环境、构建和构建后操作这6大类(对于maven项目,构建又拆分为:Pre Steps、Build、Post Steps和构建设置这四个分类),除了一般配置,其他基本都需要配合相应的插件或者环境变量来实现,因此后面分步描述。
4.一般配置
在一般配置中,只需要配置的项目并不多,
- 限制项目的运行节点 : 这是最重要的配置,如果留空,任务构建时会在 所有 节点构建此项目,对于负载分布式部署的项目,即同一个项目部署在多台服务器中,并完全配置一致是非常有用的。否则,这只会带来麻烦。其中 master 表示运行 jenkins 的当前节点;
- 显示名称 : 不是必要,但是基本都会设置的友好显示名称;
- 丢弃旧的构建 :随着时间推进,构建的记录会非常多,可以在这里配置根据天数或者次数,将构建的记录进行清理。2个配置是并存的,如果同时进行了配置,满足其中之一,即会清理;
- 使用自定义的工作空间 :Jenkins 会为每个项目分配一个独立的 工作目录 ,用于拉取代码并执行构建,绝大多数情况下是没必要去变更的,目前实测下来发现,如果是 SVN+Python/Php 这种组合方式最好将其直接指定到项目目录中去;
5.构建
构建 通常用于在 Jenkins 根据 构建环境 的配置执行完基础构建之后的一些自定义操作。比如,复制配置文件,重启应用等操作。点击 增加构建步骤 ,后选择 执行 Shell。在文本框中,添加响应的shell操作并保存,例如:
#!/bin/bash +x
/bin/cp -R -f templates /data/web/service/statics/
chmod +x bin/run.sh
在这一步操作时,经常会遇到一些自定义命令或脚本查找不到的错误,这通常是由环境变量读取不到引起,后面会有专门的内容来描述。
管理凭据
凭据,即访问子节点、SCM、SMTP等的身份认证信息。进入 : 系统配置 --> Manage Credentials ,注意不是 凭据配置 。而且,这里并不会管理登录 Jenkins 的账户信息。
然后,点击域一列下的全局链接,进入全局凭据管理。
点击左侧菜单 添加凭据 打开添加凭据页面,如下图:
凭据的类型选择,一般常见的有:
- Username with password : 带有密码的用户名凭据,适用性最强,基本SSH登录、SCM等都可以用这种凭据;
- SSH Username with private key : 使用私钥的SSH登录令牌,注意要在下方输入私钥文本内容和私钥密码;一般访问节点,都是使用此类凭据。
凭据的使用范围,主要包含全局和系统两类:
- 全局 : 该凭据适用于全局,即可适用于任何需要的地方;
- 系统 : 该凭据仅用于系统使用,例如登录节点。
这里要注意的是,凭据的使用范围这一选项并不影响凭据的使用。仅仅是在选择凭据的时候,可以简单的过滤,减少干扰而已。
其他任务配置
1.源码管理
任务的源码管理依赖于组件及系统工具。这表示,需要在 Jenkins 中安装相应的组件,并在对应的节点(包含本机)中安装对应的管理工具,例如:git 和 subversion 。
勾选合适的版本管理工具,在 Repository URL 中输入仓库地址,在 Credentials 下选择正确的凭据,当然也可以点击 添加 按钮进行添加。
对于 git 和 svn ,有两个不同的选项要输入:
- 对于 git 来说,需要指定分支,即表示该任务只和对应的分支相关联,当然也可以留空;
- 对于 svn 来说,需要在 Local module directory 选项中输入 . ,该值对应任务基本配置中的 使用自定义的工作空间 选项。
2.构建触发器
构建触发器意为在何种情况下触发构建,根据不同公司的管理规定,可以用也可以不用。根据我们的管理流程,对于非生产环境,均配置了自动触发,即在 gitee 上提交了代码之后,会自动触发任务构建。为了实现目标,仅需做如下配置即可(前提是安装了gitee插件):
- 勾选 Gitee webhook 触发构建 ,复制后面的 url备用;
- 在 允许触发构建的分支 选项中,选择 根据分支名过滤 , 根据具体情况输入分支名;
- 在 Gitee WebHook 密码 选项中, 点击右下方的 生成按钮, 生成密码并复制备用。
访问 gitee 上对应的项目,进入管理中的 WebHooks ,在 URL 和 WebHook 密码/签名密钥 中输入上面复制出来的两段值,选择事件中保持默认的勾选 Push 即可。这里的配置,表示在代码 Push 时会自动推送到 Jenkins 中触发响应的构建。
注意,构建触发器 和前面的 源码管理 有一定的关联,注意前后的匹配!!!
3.构建环境
构建环境中的工具,默认会继承自 Jenkins 系统配置中的 全局工具配置 ,当然也可以在此处指定该节点自定义的配置。对于 nodejs 编译项目,只需要勾选下 Provide Node & npm bin/ folder to PATH 选项并选择合适的版本即可。
对于需要编译的 nodejs ,在 构建 环节的 执行 Shell 中方可执行构建操作。
npm config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"
npm install
npm run build
4.Maven项目的构建
Maven 项目构建的重点,主要是在 Build 环节中,选择项目的 pom 文件路径以及构建目标。例如:
节点管理
所谓节点,是可以由 Jenkins 管理的服务器,可以任务绑定在任意节点中进行构建。节点的配置,可大致分为:一般配置、启动方式(或者叫连接方式)和节点属性这三大部分。
- 一般配置中,远程工作目录为客户端机器的构建项目根目录,用法一般选择为 只允许运行绑定到这台机器的Job
- 启动方式中,连接 Linux 主机使用 Launch agents via SSH,连接 Windows 主机使用 通过Java Web启动代理 ,在高级选项中可以指定 SSH 的连接端口;
- 节点属性中,工具位置可以指定不同于系统配置中全局工具配置的自定义值,环境变量可以指定该节点自定义的一些变量。
注意:
Jenkins 管理Linux和Windows的方式略有不同,Windows可以理解为被动式的。需要开启 系统管理-->全局安全配置 中的代理并指定端口,用于Windows节点的反向链接。
在添加完 Windows 节点之后,初始会报错,表示无法连接,如下图,右键保存 Launch 按钮对应的 jnpl 文件。
在对应的节点服务器运行这个 jnlp 文件,当然前提是安装了 jdk ,如果提示权限问题,可以按照详细信息里的描述,将 Jenkins 服务器加入 java 的安全允许站点。运行成功则如下图所示,File 菜单,可以将其添加为系统服务。