本文共 3848 字,大约阅读时间需要 12 分钟。
任何安装完成及时测试,确保其可以正常工作。
项目开发
开发过程中进行单元测试能够通过,但是部署到服务器上运行出现问题。那怎么做会好一些呢? 仅仅单元测试还不够,各个模块都必须能够在服务器上运行。关注点
持续部署的关注点在于项目功能部署至服务器后可以运行,为下一步测试环节或最终用户正式使用做好准备。项目开发
各个小组分别负责各个具体模块开发,本模块独立测试虽然能够通过,但是上线前夕将所有模块整合到一起集成测试却发现很多问题,想要解决就需要把很多代码返工重写而且仍然有可能有问题,但现在时间很可能不够了。 那怎么做会好一些呢? 经常性、频繁的把所有模块集成在一起进行测试,有问题尽早发现,这就是持续集成。关注点
持续集成的关注点在于尽早发现项目整体运行问题,尽早解决。项目开发
项目的各个升级版本之间间隔时间太长,对用户反馈感知迟钝,无法精确改善用户体验,用户流失严重。 那怎么做会好一些呢? 用小版本不断进行快速迭代,不断收集用户反馈信息,用最快的速度改进优化。关注点
持续交付的关注点在于研发团队的最新代码能够尽快让最终用户体验到。好处1: 降低风险
一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。好处2: 减少重复过程
产生重复过程有两个方面的原因,一个是编译、测试、打包、部署等等固定操作都必须要做,无法省略任何一个环节;另一个是一个缺陷如果没有及时发现,有可能导致后续代码的开发方向是错误的,要修复问题需要重新编写受影响的所有代码。 而使用Jenkins等持续集成工具既可以把构建环节从手动完成转换为自动化完成,又可以通过增加集成频次尽早发现缺陷避免方向性错误。好处3: 任何时间、任何地点生成可部署的软件
持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝,但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。不采用持续集成的情况下,这些问题有可能到交付前的集成测试的时候才发现,有可能会导致延迟发布产品,而在急于修复这些缺陷的时候又有可能引入新的缺陷,最终可能导致项目失败。好处4: 增强项目的可见性
持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。通常,项目成员通过手工收集这些信息,增加了负担,也很耗时。持续集成可以带来两点积极效果: ⑴有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率。 (⑵)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、总体品质以及其它的项目信息。好处5:建立团队对开发产品的信心I
持续集成可以建立开发团队对开发产品的信心,因为他们清楚的知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。使用工具:docker+jdk8+git+tomcat
docker run -d -p 8091:8091 -p 9001:9001 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
docker ps
查看Jenkins
是否启动成功
注意:CONTAINER ID使用docker ps或docker ps -a查看
docker exec -it CONTAINER ID /bin/bash
进入容器内部
cat /var/jenkins_home/secrets/initialAdminPassword
查看Jenkins密码
例如:我的是:c1a097b290a3457e9784aae9ce59a5cbdocker
netstat -atu
查看端口是否开放
或
# 创建一个文件夹,在文件夹下创建docker-compose.yml文件touch docker-compose.yml# 编辑vi docker-compose.ymlversion: '3'services: jenkins: restart: always image: jenkins/jenkins:lts-alpine ports: #修改端口 - "8091:8080" - "14005:50000" volumes: - "/var/jenkins_homt" deploy: replicas: 1 restart_policy: condition: on-failure placement: constraints: [node.hostname == worker]#退出编辑esc#保存文件:wq
编排 docker-compose.yml
docker-compose up -d
#编排完后自动在docker中创建容器启动服务
注意记得开放端口:
docker logs --tail="200" CONTAINER ID
#查看日志 CONTAINER ID通过docker ps -a可以查看
红框内为登录Jenkins的初始密码
# yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repossudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo# 然后执行下面的命令sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key# 安装Jenkins sudo yum install jenkins# 修改端口vi /etc/sysconfig/jenkins# 修改jdk,必须修改为你当前的jdk,例如我的是:/usr/local/jdk1.8/bin/javavi /etc/init.d/jenkins# 启动/停止 Jenkinsservice jenkins start / service jenkins stop# 启动后通过ip地址加端口访问Jenkins默认端口8080
三种方式安装都是通过cat 初始页面的路径
查看初始密码
服务器地址:配置的端口号,例如114.2.120.35:8097
通过前面日志中获取的密码登录
首先需要下载的插件是Deploy to Container Plugin,这个插件的作用是支持将代码部署到Tomcat容器中
接下来配置ssh连接信息,安装ssh插件:publish over ssh
安装 Locale plugin 插件可以汉化Jenkins
安装gitlab 构建触发器
缺少Maven项目时安装Maven Integration Plugin 或者 Pipeline Maven Integration Plugin插件
这里先默认选择自动安装,jdk1.8 安装需要oracle的账号,没有可以去注册,
git 安装
maven安装
注意:这里是为了简便,不建议自动安装
**进入系统配置-> Publish over SSH **
注意:这里的tomcat位置是存放位置,如webapps
需要定时构建需要设置触发器,
Source files 项目构建后的目录
Remove prefix 去前缀
Remote directoty 发布的目录
Exec command 发布完执行的命令,这里写的是自动部署
shell脚本如下:
source /etc/profile //重启配置文件cd /你保存的jar的位置 //进入保存jar的地址ps -ef|grep unionproject.jar|grep -v grep|awk '{print $2}'|xargs kill -s 9 //搜索到当前正在执行的jar并停止他的执行BUILD_ID=dontKillMe //解决jar执行不了的bugnohup java -jar 项目名.jar > 项目名_log.file 2>&1 & //执行jar
作用是gitlab上代码更新,jenkins就会自动拉取最新的代码
转载地址:http://bhqzi.baihongyu.com/