jenkins AWS CodeDeploy不停机部署
环境准备
AWS 准备
创建 IAM 角色
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codedeploy:*",
"s3:*"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codedeploy:*",
"s3:*"
],
"Resource": "*"
}
]
}
Linux 准备
mvn 安装
cd /home/bsh/tools
wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --no-check-certificate
tar -zxvf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/local/maven
ln -s /usr/local/maven/bin/mvn /usr/bin/mvn
vim /etc/profile
#最后加入以下内容
...
###################mvn########################
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
...
source /etc/profile
vim /home/bsh/tools/maven/apache-maven/src/conf/settings.xml
#找到mirrors 修改为以下内容
...
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>aliyun maven</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
... mvn -version
jenkins、jdk安装
jenkins 插件准备
Jenkins设置
Bitbucket 设置
AWS S3 设置
创建一个新的CI JOB
新创建一个自由风格的JOB
源码管理
构建环境
构建
export PATH=/home/bsh/tools/jdk1.8.0_221/bin:$PATH
export PATH=/usr/local/maven/bin:$PATH
mvn clean package -DskipTests
构建后的操作
测试CI构建java工程
Started by user xuewenlong
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Backend-CI-test
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
The recommended git tool is: NONE
...
过程略
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19.375 s
[INFO] Finished at: 2020-09-01T09:03:27Z
[INFO] ------------------------------------------------------------------------
Archiving artifacts
Uploaded 1 artifact(s) to https://rgc-solution-server-validation.s3.cn-north-1.amazonaws.com.cn/JenkinsCodeDeployProject/Backend-CI-test/13/artifacts/
Recording fingerprints
Finished: SUCCESS
登录AWS S3 查看验证war包
创建一个新的CD JOB
Bitbucket中创建脚本配置文件等
以backend为例目录结构如下
# tree configuration-file-cicd/
configuration-file-cicd/ #Bitbucket文件夹
├── backend #以项目划分Bitbucket文件夹
│ ├── application-backend-pilot.properties #backend预生产配置文件
│ ├── application-backend-prod.properties #backend生产配置文件
│ ├── application-backend-qa.properties #backend测试配置文件
│ ├── appspec.yml #CodeDeploy 配置文件
│ └── scripts #CodeDeploy调用的脚本文件
│ ├── apparchive.sh
│ └── starttomcat.sh
具体内容展示
# cat appspec.yml
version: 0.0
os: linux
files:
- source: bshrecipes.war
destination: /home/bsh/tools/apache-tomcat-8.5.23/webapps
- source: application-backend.properties
destination: /home/bsh/tools/apache-tomcat-8.5.23/webapps
hooks:
BeforeInstall:
- location: scripts/apparchive.sh
ApplicationStart:
- location: scripts/starttomcat.sh
# cat apparchive.sh
#!/bin/bash
mv -f /home/bsh/tools/apache-tomcat-8.5.23/webapps/bshrecipes.war /home/bsh/backup/tomcatback/bshrecipes.war.old
mv -f /home/bsh/tools/apache-tomcat-8.5.23/webapps/application-backend.properties /home/bsh/backup/tomcatback/application-backend.properties.old
# cat starttomcat.sh
#!/bin/bash -x
sudo systemctl restart tomcat
AWS CodeDeploy 配置
创建自由风格的CD JOB
General
源码管理
构建环境
构建
#从S3桶中拿取war包
aws s3 cp s3://rgc-solution-server-validation/JenkinsCodeDeployProject/Backend-CI-Artifact/${BuildNumber}/artifacts/target/${PackageName} backend/ --region cn-north-1 --no-progress
#记录使用
echo "${JOB_NAME}-${BUILD_NUMBER}-Test" > backend/versionfile
#配置文件重命名
cp backend/application-backend-prod.properties backend/application-backend.properties
构建后操作
测试CD发布java工程
控制台输出
Started by user xuewenlong
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Backend-CD-Prod
[WS-CLEANUP] Deleting project workspace...
[WS-CLEANUP] Deferred wipeout is used...
...
过程略
...
Uploading zip to s3://rgc-solution-server-validation/JenkinsCodeDeployProject/Backend-CD-Prod/PROD/#5-Backend-CD-Prod-5-Test.zip
Registering revision for application 'BackendCICD'
Creating deployment with revision at {RevisionType: S3,S3Location: {Bucket: rgc-solution-server-validation,Key: JenkinsCodeDeployProject/Backend-CD-Prod/PROD/#5-Backend-CD-Prod-5-Test.zip,BundleType: zip,ETag: 5eb4e102812cc69f9c73084b06fdcfb1},}
Finished: SUCCESS
验证CD部署java工程
jenkins AWS CodeDeploy不停机部署的更多相关文章
- AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署
AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...
- jenkins+git+maven搭建自动化部署项目环境
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...
- Jenkins使用FTP进行一键部署及回滚(Windows)
前提条件: 1.必须有两台服务器,一个是生产环境,另一个是测试环境. 2.两台服务器上都必须安装了Jenkins. 3.其中,生产环境上的Jenkins已经开通的CLI的权限(Windows参考:ht ...
- 基于Jenkins,docker实现自动化部署(持续交互)
前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...
- .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统
.NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...
- 基于Jenkins,docker实现自动化部署(持续交互)【转】
前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...
- 解放双手 | Jenkins + gitlab + maven 自动打包部署项目
前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...
- DevOps之零停机部署
“零停机部署(ZDD)可在不中断现有服务的情况下部署新版系统.” 通过ZDD方式部署应用程序时,可在确保用户不会遭遇应用程序停机的前提下将新版应用引入生产环境.从用户和公司的角度来看,这应该是最佳部署 ...
- Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...
随机推荐
- (Opencv4)二值化图像
(Opencv4)二值化图像 ret, dst = cv2.threshold(src, thresh, maxval, type) threshold : 极限,临界值,阈值 ret: 一个数 s ...
- Spring Messaging 远程命令执行漏洞(CVE-2018-1270)
影响版本 Spring Framework 5.0 to 5.0.4 Spring Framework 4.3 to 4.3.14 参考 https://www.it610.com/article/1 ...
- 论文笔记:(CVPR2019)Relation-Shape Convolutional Neural Network for Point Cloud Analysis
目录 摘要 一.引言 二.相关工作 基于视图和体素的方法 点云上的深度学习 相关性学习 三.形状意识表示学习 3.1关系-形状卷积 建模 经典CNN的局限性 变换:从关系中学习 通道提升映射 3.2性 ...
- rabbitmq消息处理-转载
目录 1. 消息如何保障百分之百的投递成功? 1.1 方案一:消息落库,对消息状态进行打标 1.2 方案二:消息的延迟投递,做二次确认,回调检查 2. 幂等性 2.1 幂等性是什么? 2.2 消息端幂 ...
- Jquery遍历复选框选中项
var ret=''; $('name=chkIds').each(function(){ if($(this).is(':checked')){ ret+=$(this).val()+','; } ...
- 软件安装管理(RPM)
目录 一.linux应用程序 1.1 应用程序与系统命令关系 1.2 典型应用程序的目录结构 1.3 常见的软件包封装工具 二.RPM软件包管理工具 2.1RPM软件包管理器Red-Hat Packa ...
- 使用scrapy搭建大型爬虫系统
最近新项目准备启动,在开始前内容.词库这些都需要提前做好准备,所以就有了这篇文章.在开始动手,看了下行业核心词排在首页的站,发现内容都多得不要不要的,各种乱七八糟的频道.页面模板,心想,如果每个网站. ...
- Git点赞82K!字节跳动保姆级Android学习指南,干货满满
这是一份全面详细的<Android学习指南>,如果你是新手,那么下面的内容可以帮助你找到学习的线路:如果你是老手,这篇文章列出的内容也可以帮助你查漏补缺.如果各位有什么其他的建议,欢迎留言 ...
- 在游戏中播放cg视频遇到的问题
遇到问题 我们线上手游要给港澳台用户增加cg视频,在我之前文章中已经讲到了我们是怎么在unity中播放cg的--><使用AVPro Video在Unity中播放开场视频(CG)笔记> ...
- UNIX环境高级编程APUE练习4.6-实现类似cp(1)的程序,保留文件中的空洞
1 题面 编写类似cp(1)的程序,它复制包含空洞的文件,但是不将字节0写到输出文件中去. 2 基本思路 首先要搞清楚空洞的性质以判断一个文件是否有空洞,以及空洞的位置 知道了空洞的位置之后,读到源文 ...