文档: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 | # brew cask install homebrew/cask-versions/adoptopenjdk8 |
运行
- Open up a terminal in the download directory.
- Run java -jar jenkins.war –httpPort=8080.
- Browse to http://localhost:8080.
- 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;配置docker1
2
3vim /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
- 新建maven任务
- 构建任务配置
- 源码管理配置
- 构建触发器配置
- Maven构建设置
四、Jenkins邮件通知设置
五、Sonar
官方文档:http://docs.sonarqube.org/display/SONARQUBE45/Documentation
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。
与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
- 与jenkins集成
可以通过maven集成,也可以直接与jenkins集成。我这里选择直接与jenkins集成。
安装sonar jenkins plugin,该插件可以使项目每次构建都调用sonar进行代码度量。
六、Jenkins与Docker结合
我这里没有使用Docker Pipeline,直接在构建完成后,执行shell脚本,这样更灵活。
部署流程
研发push到svn代码库
Jenkins 构建,pull svn代码 使用maven进行编译打包
打包生成的代码,生成一个新版本的镜像,push到本地docker仓库harbor
发布,测试机器 pull 新版本的镜像,并删除原来的容器,重新运行新版本镜像。$_end: #2–>
创建-编译-打包-上传docker镜像任务-执行远端脚本从私有仓库获取镜像发布新版本-发布完成发送邮件推送
建立任务