JENKINS
什么是持续集成
- Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
持续集成最佳实践
- 维护一个单一的代码库
- 使构建自动化
- 执行测试是构建的一部分
- 集成日志及历史记录
- 使用统一的依赖包管理库
- 每天至少集成一次
什么是jenkins
- 持续集成、自动测试、持续部署的超级引擎,支持自定义工具集、多种交付通道
- https://www.jenkins.io/zh/doc/ 中文文档
jenkins安装
- 安装依赖 yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
- 清华源站下载最新包 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.294-1.1.noarch.rpm
- 安装Jenkins yum localinstall jenkins-2.294-1.1.noarch.rpm -y
- systemctl start jenkins
- systemctl enable jenkins,会报不是本机服务,重定向到chkconfig管理, sbin/chkconfig jenkins on
- systemctl list-unit-files|grep jenkins 、chkconfig --list
启动用户
- /etc/sysconfig/jenkins 默认是jenkins用户,改成JENKINS_USER="root",重新启动
jenkins目录
- /var/lib/jenkins 主目录
- /etc/init.d/jenkins 启动文件
- /var/cache/jenkins 程序文件
- /var/log/Jenkins 日志文件
- /var/lib/jenkins/workspace/ 项目空间
- /etc/sysconfig/jenkins 配置文件
访问jenkins
- 访问Jenkins http://192.168.1.110:8080
- 查找admin默认密码 cat /var/lib/jenkins/secrets/initialAdminPassword
安装默认插件
- 可以点击默认安装,也可以跳过安装,进到后台后手动安装
进入后台
- 修改admin密码,右上角admin设置(config)
安全警告
- 全局安全配置,隐藏的安全警告
插件管理
- 系统设置>插件管理
- 更新插件、下载安装、代理设置、可用插件
- 手工安装
- 升级站点 http://updates.jenkins-ci.org/ 改成 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
覆盖插件目录(如果有下载好的本地插件)
- mv plugins /var/lib/jenkins/
- chown -R jenkins.jenkins plugins/
常用插件
- Chinese (Simplified) 中文插件
- Pipeline 工作流
- SonarQube 代码质检
- SSH plugin
- Git plugin
- Git Parameter Plug-In 照标签去发布
- Deploy Plugin
- Maven Integration plugin
- Role-based Authorization Strategy
备份
- tar zcf jenknis.tar.gz /var/lib/jenkins/
用到的插件有
Localization: Chinese (Simplified)
Git Parameter Plug-In
jenkins主机的私钥
gitlab的delopy是jenkins主机的公钥
构建的话,就会自动去gitlab上拉取项目到/var/lib/jenkins/workspace里面
Git Parameter(git参数构建插件)根据标签去发布
gitlab上需要打tag标签
Maven Integration plugin
- jenkins宿主机安装maven yum install maven -y
- mvn -version
- Maven home: /usr/share/maven
- Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64/jre
- 后台配置 全局工具配置
构建maven项目,创建一个maven项目(代码在git@gitee.com:jokerbj/hello-maven.git)
构建maven的项目会用到国外代码,可以修改为国内,或者使用私服nexus
/usr/share/maven/conf/settings.xml 安装目录
159行
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>ali maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
构建后的产物如何测试
- tomcat https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz
- /usr/local/apache-tomcat-9.0.41/conf/server.xml 直接修改8080
- apache-tomcat-9.0.41/bin/startup.sh
- cp /var/lib/jenkins/workspace/hello/target/hello-world-war-1.0.0.war /usr/local/apache-tomcat-9.0.41/webapps/ROOT.war
- 或者将war包放在/usr/local/apache-tomcat-9.0.41/webapps/ROOT/里面解压出来也行
SonarQube Scanner for Jenkins(功能与Scanner效果一样)
服务端安装介绍(至少2C4G)
手动分析代码
https://www.cnblogs.com/jokerbj/p/10322129.html
全局工具配置
系统配置
项目配置
DingTalk
系统管理--系统配置,配置一下钉钉,在项目中就可以调用这个配置,从而发送构建消息。
Parameterized Trigger plugin(触发器插件)
用于一个项目构建完成后触发另一个项目
Build Pipeline Plugin(流水线插件)以前的不安全,现在Blue Ocean
创建一个流水线项目,脚本形式
pipeline { agent any stages { stage('拉取代码'){ steps { echo "pull code is ok" } } stage('代码质检'){ steps { echo "check code is ok" } } stage('代码构建'){ steps { echo "build code is ok" } } stage('代码部署'){ steps { echo "deploy code is ok" } } } }
scm形式,这个需要你在仓库的下创建一个Jenkinsfile文件,而文件内容就是上面内容
Gitlab Hook Plugin(gitlab勾子插件) 以前的不安全,现在是gitlab
上图没有截全,下面还有一个高级,高级里面就是可以生成token
SSH(ssh插件)
jenkins集群
节点管理,新建节点
会自动在设置的目录下载jenkins的slave的jar包
分配到节点
按角色授权
Role-based Authorization Strategy(插件)
全局安全配置
管理用户
添加2个用户,java,php
系统配置里面 Manage and Assign Roles 管理分配角色
管理角色这里有2种角色,一种是全局的,一种是项目的
分配角色,这个就是针对用户的了
Gradle Plugin(插件)
https://gradle.org/releases/,下载仅二进制文件
全局工具配置
关于安卓打包sdk问题,先要下载commandlinetools
https://developer.android.com/studio 页面上,Command line tools only,这个https://developer.android.com/studio/command-line/sdkmanager,介绍tools里面sdkmanager安装sdk
sdkmanager "platforms;android-28"
完整构建安卓参考
https://www.cnblogs.com/jokerbj/p/11066846.html