jenkins ci 环境搭建
简介
jenkins是一个持续集成(CI)工具,使用java编写
CI continuous integration 持续集成
SCM source code management 源码管理
下载jenkins
有多种安装方式,我们选择war包部署,war包下载地址 https://jenkins.io/download/
下载的war包为jenkins.war
部署至tomcat
这里采用一台单独的tomcat部署jenkins
1 | 因为此tomcat只用来部署jenkins,所以先删除webapps下其他应用 |
配置jenkins
tomcat部署启动完jenkins后,访问对应端口可以看到如下jenkins的初始界面

查看/root/.jenkins/secrets/initialAdminPassword文件可以获得管理员密码,输入后可以解锁Jenkins,开始使用。
安装插件
初始化界面会提示我们安装插件,我们选择推荐插件

推荐的插件如下图所示

我们主要需要身份认证 源码管理 打包构建 管道命令 几个方面的插件
身份认证
ssh plugin SSH Slaves plugin Credentials Binding Plugin
源码管理
git plugin github plugin GitHub Branch Source Plugin gitlab plugin subversion Plug-in
打包构建
Gradle Plugin
管道命令
Pipeline Pipeline:State View Plugin
其它插件
Role-based Authorization Strategy基于角色的的用户权限控制
设置全局工具
系统设置->Global Tool Configuration->JDK、Git、Maven
系统设置->Shell->Shell executable->/bin/zsh
Jenkins内部shell UTF-8 编码设置

参数化构建

Pipeline构建
创建一个新任务,任务类型选择pipeline
拉取源码
勾选GitHub hook trigger for GITScm polling 参考Trigger Jenkins builds by pushing to Github
- 在jenkins所在服务器上生成ssh key
- 在gitlab的Deploy Key中添加public key
- 在jenkins创建项目,添加gitlab的项目地址,选择添加Credential,填入private key
编写构建打包部署的pipeline脚本
1 | node { |
基于角色的任务访问控制
- 系统管理->管理插件->安装Role-based Authorization Strategy插件
- 系统管理->
Configure Global Security->访问控制->授权策略->Role-Based Strategy->保存 - 系统管理->Manage and Assign Roles->Manage Roles->Global roles->在admin角色外创建其他角色分配Overall/Read权限
- 指定角色访问特定项目
系统管理->Manage and Assign Roles->Manage Roles->Project roles->添加一个角色,然后指定项目Pattern(注意:patter不是正则表达式,其中*要用.*代替)
FAQ
pipeline使用nohup命令启动后台进程无效
使用Boolean类型参数化构建时,参数逻辑判断总是true
jenkins传入groovy的boolean parameter是对象类型,非null总是true,所以判断总为true,进行一次类型转换就好
1 | def booleanParameter = Boolean.valueOf(jenkinsBooleanParameter); |
容器的编码问题
Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems. See Containers and Tomcat i18n for more details.