Jenkins 实践

文档:https://www.jenkins.io/doc/pipeline/tour/getting-started/

2020.10.15 星期四 18:25

Build a Node.js and React app with npm

教程

安装和运行

mac

1
2
3
4
5
6
7
8
# brew cask install homebrew/cask-versions/adoptopenjdk8
## 安装。需要jdk
brew cask install adoptopenjdk8
brew install jenkins-lts

## 运行
cd /usr/local/Cellar/jenkins-lts/2.222.1/libexec
java -jar jenkins.war --httpPort=8080

运行

  1. Open up a terminal in the download directory.
  2. Run java -jar jenkins.war –httpPort=8080.
  3. Browse to http://localhost:8080.
  4. Follow the instructions to complete the installation.

配置

初始化jenkins及安装插件

安装docker构建插件,在可选插件中查找docker build step plugin
安装角色管理插件,在可选插件中查找Role-based Authorization Strategy
安装SSH插件,用于构建成功后执行远端服务器脚本从docker本地仓库获取镜像后发布新版本
安装 Email Extension Plugin 插件,配置自动发送邮件

配置jenkins属性

点击系统管理->Global Tool Configuration->找到jdk点击新增按钮(自动安装请先到Oracle注册账号)
点击系统管理->Global Tool Configuration->找到maven点击新增按钮
点击系统管理->系统设置 配置SSH
配置docker;配置docker

1
2
3
vim /usr/lib/systemd/system/docker.service
# 在ExecStart=/usr/bin/docker daemon 后追加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

配置邮件

配置jenkins相关权限

1) 选择系统管理->Configuration Global Security->进入选择启用安全:
TCP port for JNLP agents ->禁用,
访问控制-安全域->jenkins专有用户数据库,
访问控制-授权策略->Role-Based Strategy

2) 选择系统管理->Manage and Assign Roles->Manage Roles:
添加Global Roles(admin、member、ops、others),
设置全局角色(全局角色可以对jenkins系统进行设置与项目的操作)
admin:对整个jenkins都可以进行操作
ops:可以对所有的job进行管理
other/member:只有读的权限

3) 添加project Roles(dmp-manager、dmp-view、tsc-manager、tsc-view)并且给添加的角色分配如下权限
注意:在添加project Roles时,如果想让不同的用户看到不同的job,必须设置Pattern,如上dmp_manager角色就只能查看以dmp开头的job,Pattern规则必须是“dmp.”,注意是以“.”结尾的匹配规则,tsc亦是如此。

选择系统管理->管理用户:新建几个管理员用户如:dmpadmin、tscadmin

4) 选择系统管理->Manage and Assign Roles->Assign Relos:把第三步的用户加到user/group中并授于对应的角色权限 如:

4. Jenkins授权和访问控制

点击系统管理—> Configure Global Security,点击”启用安全”

我们在”安全域”选择”Jenkins专有用户数据库”,”允许用户注册”;
并先在“授权策略”点击“任何用户可以做任何事情(没有任何限制)”, 防止注册之后无法再管理jenkins。
此时就可以刷新一下jenkins的页面看到右上角有登录、注册的按钮。
<!–

5. Jenkins系统配置

(1)JDK配置
(2)git/svn版本控制添加
(3)Jenkins添加maven配置 (没有需先安装)

三、Jenkins构建maven风格的job

  1. 新建maven任务
  2. 构建任务配置
  3. 源码管理配置
  4. 构建触发器配置
  5. Maven构建设置

四、Jenkins邮件通知设置
五、Sonar
官方文档:http://docs.sonarqube.org/display/SONARQUBE45/Documentation
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。

与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

  1. 与jenkins集成
    可以通过maven集成,也可以直接与jenkins集成。我这里选择直接与jenkins集成。
    安装sonar jenkins plugin,该插件可以使项目每次构建都调用sonar进行代码度量。

六、Jenkins与Docker结合
我这里没有使用Docker Pipeline,直接在构建完成后,执行shell脚本,这样更灵活。

  1. 部署流程
    研发push到svn代码库
    Jenkins 构建,pull svn代码 使用maven进行编译打包
    打包生成的代码,生成一个新版本的镜像,push到本地docker仓库harbor
    发布,测试机器 pull 新版本的镜像,并删除原来的容器,重新运行新版本镜像。

    $_end: #2–>

创建-编译-打包-上传docker镜像任务-执行远端脚本从私有仓库获取镜像发布新版本-发布完成发送邮件推送

建立任务

knowledge is no pay,reward is kindness
0%