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.