学习和使用 jenkins 过程中遇到的问题和解决办法
常用插件
- 中文汉化:Chinese
- 权限管理:Role-based Authorization Strategy
- 凭证管理:Credentials Binding
- 自定义备份 Jenkins Home 目录:Backup
- git:Git
- git 分支构建支持:Git Parameter
- gitlab 的 webhook 功能支持:Generic-Webhook-Trigger
- sonarqube 代码扫描:SonarQube Scanner
- 远程部署到 Tomcat:Deploy to container
- Maven 项目支持:Maven Integration
- 流水线项目支持:Pipeline
- 邮件发送:Email Extension
- NodeJS:NodeJS
- 钉钉:DingTalk
- 使 job 具备版本管理:Job Configuration History
- 构建日志上色:AnsiColor
- 自定义 Jenkins 主题:Simple Theme
- 添加侧边栏按钮链接:Sidebar Link
- 控制台输出显示构建时间:Timestamper
配置反向代理
# Jenkins 启动使用自定义访问前缀
nohup java -jar jenkins.war --httpPort=7777 --prefix=/jenkins &
location /jenkins {
proxy_pass http://192.168.216.131:7777;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
批量删除构建历史
在Manage Jenkins -> Script Console下运行以下命令
// 项目名称
def jobName = "web_demo_pipeline"
// 删除至 maxNumber 的构建历史
def maxNumber = 30
Jenkins.instance.getItemByFullName(jobName).builds.findAll {
it.number < maxNumber
}.each {
it.delete()
}
工作目录迁移
在 Manage Jenkins -> System可以看到当前的工作目录,jenkins 将其所有数据存储在文件系统上的此目录中

按官方说明通过环境变量方式进行更改
# 先停止 Jenkins,将默认工作目录移动到指定目录下
mv ~/.jenkins /data/
# 添加环境变量,配置 Jenkins工作目录
echo "export JENKINS_HOME=/data/.jenkins" >> ~/.bash_profile
source ~/.bash_profile
# 启动Jenkins
nohup java -jar jenkins.war --httpPort=7777 --prefix=/jenkins/ &
版本匹配的插件
如何选择合适的插件版本进行安装,如权限插件:https://plugins.jenkins.io/role-strategy/,右侧可以看到所有版本的使用情况,按自己 jenkins 的版本搜索即可


离线安装插件
插件下载地址:https://updates.jenkins-ci.org/download/plugins,下载离线包,点击上传进行安装

使用 access token 拉取代码
password 填写 gitlab 的 access token

查看总项目数
// 查看总项目数
def jobs = Jenkins.instance.getAllItems()
println "Total number of jobs: ${jobs.size()}"
项目权限管理
安装插件Role-based Authorization Strategy:https://plugins.jenkins.io/role-strategy/releases后重启 Jenkins,在Manage Jenkins->Configure Global Security下启用Role-Based Strategy

先在Manage Jenkins->Manage and Assign Roles->Manage Roles下创建角色
Global roles 全局角色,主要用于配置用户的功能权限;
Item roles: 项目角色,主要管理项目的权限。
全局角色作用域大于项目角色,因此对控制用户仅访问特定项目时,应将 Global roles 的角色权限控制在最小,通过 Item roles 来控制项目访问
以下图为例:新加的运维角色仅勾选了 Overall->read,此为最基本的 Jenkins 访问权限,Item roles 控制仅可以对特定项目进行查看、构建操作,点击输入的 Pattern 可以查看表达式匹配到的文件夹和 job

然后在Manage Jenkins->Manage and Assign Roles->Assign Roles下给对应用户分配角色
该用户登录后仅可以访问 shell 脚本文件夹下的项目


控制台日志输出时间
在 Manage Jenkins->Configure System 下的 Timestamper 勾选

- 本文作者:Nine
- 本文链接:https://blog.nine.gt.tc/wiki/tools-cicd-jenkins/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)