Jenkins 讲师:郭宏泽
目录 1. 持续集成 2. 基础配置 3.发布PHP项目 4. 发布Maven项目 5.远程管理
持续集成
什么是持续集成 Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作 ,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次 集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试) 来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大 减少集成的问题,让团队能够更快的开发内聚的软件。
项目做模块集成的时候,发现很多接口都不通。 没有持续集成 项目做模块集成的时候,发现很多接口都不通。 浪费大量时间 需要人手动去编译打包最新的代码。 构建过程不透明 发布代码,上线,基本靠手。 脚本乱飞
持续集成最佳实践 维护一个单一的代码库 使构建自动化 执行测试是构建的一部分 集成日志及历史记录 使用统一的依赖包管理库 每天至少集成一次
持续集成概览
基础配置
什么是Jenkins Jenkins is an automation engine with an unparalleled plugin ecosystem to support all of your favorite tools in your delivery pipelines, whether your goal is continuous integration, automated testing, or continuous delivery. 持续集成、自动测试、持续部署的超级引擎,支持自定义工具集、 多种交付通道。
YUM安装 安装依赖 安装yum源 安装Jenkins yum –y install jenkins yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel 安装yum源 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key or rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key 安装Jenkins yum –y install jenkins service jenkins start ckconfig Jenkins on
RPM安装 下载地址 https://pkg.jenkins.io/redhat-stable/ RPM安装 rpm –ivh jenkins-2.32.3-1.1.noarch.rpm service jenkins start ckconfig Jenkins on
访问Jenkins 访问Jenkins http://192.168.47.174:8080 查找admin默认密码 cat /var/lib/jenkins/secrets/initialAdminPassword 输入密码
安装默认插件
默认Plugin Folders Plugin OWASP Markup Formatter Plugin build timeout plugin Credentials Binding Plugin Timestamper Workspace Cleanup Plugin Ant Plugin Gradle Plugin Pipeline GitHub Organization Folder Plugin Pipeline: Stage View Plugin Git plugin Subversion Plug-in SSH Slaves plugin Matrix Authorization Strategy Plugin PAM Authentication plugin LDAP Plugin Email Extension Plugin Mailer Plugin
常用Plugin SSH plugin GitLab Plugin Pipeline Git plugin Git Parameter Plug-In Deploy Plugin Maven Integration plugin Role-based Authorization Strategy Html reports performance plugin jmeter-maven Cobertura SonarQube Blue Ocean
插件管理 系统设置>插件管理 更新插件、下载安装、代理设置、可用插件 手工安装 下载地址 http://updates.jenkins-ci.org/
覆盖插件目录 解压备份plugin.tar.gz mv plugins /var/lib/jenkins/ chown -R jenkins.jenkins plugins/ service jenkins restart
镜像管理 全部镜像 http://mirrors.jenkins-ci.org/status.html 更换镜像 http://updates.jenkins-ci.org/update-center.json https://mirrors.tuna.tsinghua.edu.cn/ http://mirror.esuni.jp/jenkins/updates/update-center.json https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
Jenkins目录 /var/lib/jenkins 主目录 /etc/init.d/jenkins 启动文件 /var/cache/Jenkins 程序文件 /var/log/Jenkins 日志文件
用户权限 修改/etc/init.d/Jenkins 将用户修改为root,可以调用root工具 106行,113行 修改启动端口85行,$JENKINS_PORT systemctl daemon-reload service jenkins restart
卡启动问题 Jenkins在第一次安装启动时会向官网回传信息 如果网络离线可以正常安装 当网络在线,但是https://jenkins-ci.io 无法打开时,卡住。
备份 tar zxvf jenknis.tar.gz /var/lib/jenkins/ 作业:写一个每天定时备份的脚本,保留15天的备份
系统设置 工作目录设置 Maven项目配置 设置系统JDK ANT MAVEN Jenkins Location 邮件通知 Configure Global Security
构建状态 Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。 它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。 分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
发布PHP项目
发布PHP代码 构建自由风格项目 Throttle builds,构建时限 丢弃旧的构建 填写源码信息
SVN 确保subversion plugin已经安装 在系统设置里选择SVN版本 获取程序的SVN路径 填写SVN用户权限 指定其它配置 构建周期 构建环境 Execute shell
查看构建结果 状态集 查看代码变更记录 Console Output 构建过程中的输出结果,主要用于查看构建过程 编辑编译信息 定制信息编译信息 Tag this build 对这次构建进行tag(svn),SVN必须已经建立tags目录
发布Maven项目
什么是maven Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个 完整的生命周期框架。 Apache的开源项目 主要服务于JAVA平台的构建、依赖管理、项目管理。
安装MAVEN Wget http://mirrors.cnnic.cn/apache/maven/maven- 3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz tar zxvf apache-maven-3.3.9-bin.tar.gz 配置环境变量 vim /etc/profile export PATH=$PATH:/root/apache-maven-3.3.9/bin 测试 mvn -v
POM Project Object Model,项目对象模型。 通过xml格式保存的pom.xml文件。 作用类似ant的build.xml文件,功能更强大。 该文件用于管理:源代码、配置文件、开发者的信息和角色、问题 追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等
MAVEN命令 1. 创建Maven的普通java项目: mvn archetype:create 2. 创建Maven的Web项目: -DgroupId=packageName -DartifactId=projectName 2. 创建Maven的Web项目: -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp 3. 清除后再编译 mvn clean install
配置系统MAVEN 系统管理> Global Tool Configuration 新增maven 取消自动安装 填写maven实际安装路径 /data/server/apache-maven-3.3.9/
新建maven项目 新建maven项目 指定源码位置(git或svn) 指定build选项 clean install clean install -Dmaven.test.skip=true 指定execute shell java -jar target/testweb-0.0.1-SNAPSHOT.jar
配置maven settings.xml 是maven的主要配置文件 位置 $home/.m2 用户 meven安装目录/conf 全局
按版本发布 安装git parameter plugin插件 任务配置中勾选<参数化构建过程> 选择 git parameter 创建变量名release 选择发布类型: tag 按标签发布 branch按分支分布 Revision 按修订发布
远程管理
远程管理 SSH plugin Shell ssh ansible
SSH plugin 安装ssh plugin插件 系统管理>SSH remote hosts 增加主机信息 在项目中选择execute shell scripts on remote host using ssh
Shell SSH 制作jenkins主机免密登录 直接在 execute shell界面执行ssh命令 或在脚本中接调用ssh语句 ssh root@192.168.47.175 “ifconfig” scp xxx root@192.168.47.175/xxx/
ansible 安装ansible 配置ansible hosts 配置ansible对其它机器的免密权限 执行ansible 命令
War文件部署设置 安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml文件, 在<tomcat-users>节点里添加如下内容: <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="username" password="password" roles="manager-gui,manager- script,manager-jmx,manager-status"/> 引号里的username和password可以随便替换,用于部署时认证。
操作界面 选择Add post-build action,然后选择Deploy war/ear to a container, 如下图:
部署说明 WAR/EAR files:war文件的存放位置,如:target/test.war 注意:相 对路径,target前是没有/的。 Context path:访问时需要输入的内容,如ofCard访问时如下: http://192.168.x.x:8080/ofCard/如果为空,默认是war包的名字。 Container:选择你的web容器,如tomca 6.x Manager user name:填入tomcat-users.xml配置的username内容 Manager password:填入tomcat-users.xml配置的password内容 Tomcat URL:填入http://192.168.x.x:8080/ Deploy on failure:构建失败依然部署,一般不选择
任务 构建一个定时清理目标机器日志的任务 构建一个定时重启目标机器tomcat进程的任务 执行一次全量备份或增量备份 执行一次版本升级 在完成全部课程之后构建一个PIPLINE。
交流时间