目录
- 一、敏捷开发中持续集成痛点
- 二、Jenkins简介
- 三、jenkins安装与插件管理
- 四、通过free style构建项目
- 1 - 新建任务
- 2 - 拉取git代码配置
- 3 - 非常重要git安装与git账户邮箱
- 4 - 开始构建
- 5 - 配置构建shell执行
- 5 - 构建服务器上传文件到运行服务器
一、敏捷开发中持续集成痛点
- 开发经历
- 传统开发与敏捷开发分析:如何可视化、可管理化的方式实现自动发布与部署
二、Jenkins简介
- 什么是Jenkins
- Jenkins是一个开源软件项目,起源于Hudson(Hudson是商用的),是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
- 可在Tomcat等流行的servlet容器中运行,也可独立运行
- 提供友好操作界面的持续集成(CI)工具
- 它用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试
- 为什么要使用Jenkins
使用Jenkins之前 | 使用 Jenkins之后 |
一旦所有开发人员都完成了分配的编码任务,他们通常会同时提交所有代码。后来测试并部署了Build,构建了代码提交,并且测试周期非常少,并且几天后就完成了一次构建 | 一旦开发人员提交代码,便会构建并测试代码。 Jenkin将在一天中多次构建和测试代码,如果构建成功,则Jenkins将源代码部署到测试服务器中并通知部署团队;如果构建失败,则Jenkins将错误通知开发人员团队 |
由于代码是一次构建的,因此一些开发人员需要等到其他开发人员完成编码才能检查其构建 | 在任何开发人员提交之后,将立即构建代码 |
隔离,检测和修复多个提交的错误并非易事 | 由于代码是在单个开发人员的每次提交之后构建的,因此很容易检测出导致构建失败的代码 |
代码构建和测试过程完全是手动的,因此有很多失败的机会 | 自动化的构建和测试过程可节省时间并减少缺陷 |
修复并测试所有错误后,将部署代码 | 每次成功构建和测试后,都将部署代码 |
开发周期慢 | 开发周期很快。新功能更易于用户使用。增加利润 |
- jenkins构建服务器流程
三、jenkins安装与插件管理
- jenkins安装参考:
四、通过free style构建项目
1 - 新建任务
- 新建任务
2 - 拉取git代码配置
- github中创建一个测试仓库
3 - 非常重要git安装与git账户邮箱
- 在前面的git安装中,我们已经说明了需要在jenkins的服务器上安装git,以及设置git的用户和邮箱:否则是无法完成构建的;
4 - 开始构建
- 查看构建历史:控制台输出,这里有个很重要的信息
- 也就是说我们之后构建的项目目录都会在
/var/lib/jenkins/workspace
下 - 同时我们cd到上面的目录,查看构建后从git拉取的内容
5 - 配置构建shell执行
5 - 构建服务器上传文件到运行服务器
- 为SSH的远程服务器添加用户密码认证:系统管理 -> Manage Credentials -> 全局 -> 添加凭据
- 系统管理-系统配置-下拉找到SSH server:
- 点击高级-并勾选Use password authentication, or use a different key:输入密码,然后到最下面点击,我们可以看到提示是Success;然后保存
- 构建后操作 -> Send build artifacts over SSH:配置好后点击应用保存
- Name:SSH Server的Name属性就是我们希望连接的服务器
- Source files:这里输入的是你希望传到服务器的文件夹和文件;路径是相对jenkins的workspace的项目名称的;例如项目名称是Test_Project的go项目,编译打包后的路径为Test_Project文件夹下的target,则Source files填入target/*.go
- Remove prefix:如果Source files为target/*.go,但是不想把target目录创建到服务器端,这个时候就可以在Remove prefix里填入target
- Remote directory:这里指文件将被拷贝到服务器的路径;PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径(这个是上面配置的data路径)+Remote directory
- Exec command:这里就是连接服务器之后需要执行的命令
- 如图目录下新建2个文件用于测试:分别是 test.go 和 readme.txt
- 开始构建,然后查看控制台输出日志
- 我们来远程服务器查看传输的结果
- 修改Source files的规则为全部文件,重新构建,并查看结果
- 我们在target中添加一个目录,并添加一个文件,再构建查看结果:可以发现goods目录并没有传输过来
- 修改Source files的规则为:
target/**
,重新构建查看结果