Jenkins与Docker的自动化CI/CD流水线实战
Jenkins与Docker的自动化CI/CD流水线实战
标签(空格分隔): docker的部分
- 一:什么是CI/CD
- 二: 发布流程设计
- 三:部署Git仓库并上传测试代码
一:什么是CI/CD
持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。 持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。 持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
CI/CD 的 流水线特点: 高效的CI/CD环境可以获得: ? 及时发现问题 ? 大幅度减少故障率 ? 加快迭代速度 ? 减少时间成本
二:发布流程设计


三:部署gitlab 并上传代码
参照文档:https://blog.51cto.com/flyfish225/2145495 在node05.flyfish 上面部署gitlab


Git global setup git config --global user.name "flyfish" git config --global user.email "" Create a new repository git clone :flyfish/java-project.git cd java-project touch README.md git add README.md git commit -m "add README" git push -u origin master Push an existing folder cd existing_folder git init git remote add origin :flyfish/java-project.git git add . git commit -m "Initial commit" git push -u origin master Push an existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin :flyfish/java-project.git git push -u origin --all git push -u origin --tags

四: 部署jenkins
在node06.flyfish 上面配置jenkins tar -zxvf apache-tomcat-8.5.54.tar.gz mv apache-tomcat-8.5.54 /usr/local/tomcat cd /usr/local/tomcat/conf vim context.xml --- 在tomcat的/conf/context.xml中的<Context>中添加 <!--这里单位是 KB--> <Resources cachingAllowed="true" cacheMaxSize="100000" /> --- rm -rf /usr/local/tomcat/webapps/* mv jenkins.war /usr/local/tomcat/webapps/jenkins.war cd /usr/local/tomcat/bin/ ./startup.sh



http://192.168.100.16:8080/jenkins


jenkins 安装插件 更换下载安装源 https://updates.jenkins-zh.cn/update-center.json。


装一个Pipeline




创建 一个从节点




创建任务




安装maven
node01.flyfish
tar -zxvf apache-maven-3.5.0-bin.tar.gz
mv apache-maven-3.5.0 /usr/local/maven
vim /etc/profile
---
export MAVEN_HOME=/usr/local/maven
export CLASSPATH=.:$MAVEN_HOME/jre/lib:$MAVEN_HOME/lib:$MAVEN_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin:
---
配置maven 的 下载依赖包为阿里云的源
cd /usr/local/maven/conf
vim settings.xml
在<mirrors>.....<mirrors> 之间 加上 阿里云的源
-----
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
----
mvn -version
无密码登录下载 代码 cd .ssh/ ssh-copy-id

pipline 流水线语法:
node ("jenkins-slave-100-11") { // 指定Slave标签
// 拉取代码
stage(‘Git Checkout‘) {
git credentialsId: ‘71eb6de5-abea-4416-a3ef-753efcdcaa98‘, url: ‘http://node05.flyfish/flyfish/java-project.git‘ (这个地方需要用git 流水线生成用户名密码)
}
// 代码编译
stage(‘Maven Build‘) {
sh ‘‘‘
export JAVA_HOME=/usr/local/jdk
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
‘‘‘
}
// 项目打包到镜像并推送到镜像仓库
stage(‘Build and Push Image‘) {
sh ‘‘‘
REPOSITORY=192.168.100.16/project/java-project:${Branch}
cat > Dockerfile << EOF
FROM 192.168.100.16/library/tomcat:v1
RUN rm -rf /usr/local/tomcat/webapps/ROOT.war
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
docker login -u flyfish -p Flyfish225 192.168.100.16
docker push $REPOSITORY
‘‘‘
}
// 部署到Docker主机
stage(‘Deploy to Docker‘) {
sh ‘‘‘
REPOSITORY=192.168.100.16/project/java-project:${Branch}
docker rm -f java-project |true
docker image rm $REPOSITORY |true
docker login -u flyfish -p Flyfish225 192.168.100.16
docker container run -d --name java-project -p 89:8080 $REPOSITORY
‘‘‘
}
}








访问项目

相关推荐
ppppfly 2020-10-24
synshitou 2020-10-21
pursuemylife 2020-08-14
达观数据 2020-11-11
汪康 2020-10-30
programmeryu 2020-09-24
Topbeyond 2020-08-21
lrcoop 2020-08-18
young依然 2020-08-17
oden 2020-08-16
lrcoop 2020-08-15
yserver 2020-08-15
王永迪 2020-08-15
pandaphinex 2020-08-09
leonranri 2020-07-26
CloasGao 2020-07-21
zccheu 2020-07-18