『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)
2020/8/13 8:03:35
本文主要是介绍『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
上次基本把环境都搭建好了,下一步就是开始完成整个流程的自动化部署。源码:https://github.com/limingios/netFuture/tree/master/jenkins/
环境回顾
应用 | IP地址 | 服务 | 端口 | 安装应用 | 安装方式 |
---|---|---|---|---|---|
gitlab | 192.168.66.100 | gitlab | 10080 | gitlab | docker |
jenkins | 192.168.66.101 | jenkins | 8888 | jdk8 maven3.2 git2.8 | shell |
nexus | 192.168.66.102 | nexus | 8081 | nexus | docker |
tomcat | 192.168.66.103 | tomcat | 8080 | tomcat | docker |
IP地址 | 端口 | 用户名 | 密码 |
---|---|---|---|
192.168.66.100 | 10080 | root | 123456789qwe |
192.168.66.101 | 8888 | root | 8d31833e277c4b579a3be35fe2bdc7d4 |
192.168.66.102 | 8081 | admin | admin123 |
192.168.66.103 | 8080 |
本地项目部署到100上gitlab
- 本地代码
代码比较简单为的是流程
- 本地提交到gitlab上
修改配置,可以非本地化提交代码
可以新建用户建立仓库,或者用root建立仓库。
提示没有上传ssh 秘钥
查看本地的ssh秘钥,window环境直接使用git bash
ssh-keygen -t rsa -C "394498036@qq.com" cat /c/Users/Administrator/.ssh/id_rsa.pub
查看jenkins的ssh秘钥,101环境直接使
ssh-keygen -t rsa -C "394498036@qq.com" cat /root/.ssh/id_rsa.pub
本地windows 和 101的jenkins添加完毕
本地windows 代码提交
git init git add . git commit -m "注释语句" git remote add origin ssh://git@192.168.66.100:10022/root/idig8.git git push -u origin master
本地项目部署到101上 jenkins
-
全局安全性配置
-
创建任务
口令随意写,等下要在gitlab做触发设置
Use the following URL to trigger build remotely: JENKINS_URL/job/idig8/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
100 gitlab触发器的设置
http://192.168.66.101:8888/job/idig8/build?token=123456
token的值就是jenkins上设置的。
等下有专门的对pipeline的编写
保存
101的配置私服nexus
cd .m2 pwd vi settings.xml
settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups></pluginGroups> <proxies></proxies> <servers> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> <mirrors> <mirror> <id>nexus-releases</id> <mirrorOf>*</mirrorOf> <url>http://192.168.66.102:8081/nexus/content/groups/public</url> </mirror> <mirror> <id>nexus-snapshots</id> <mirrorOf>*</mirrorOf> <url>http://192.168.66.102:8081/nexus/content/repositories/snapshots</url> </mirror> </mirrors> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus-releases</id> <url>http://nexus-releases</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>nexus-snapshots</id> <url>http://nexus-snapshots</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus-releases</id> <url>http://nexus-releases</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> <pluginRepository> <id>nexus-snapshots</id> <url>http://nexus-snapshots</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
安装sshpass,ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。
yum -y install sshpass
测试gitlab和jenkins
正式编写
- pipeline
#!groovy pipeline { agent any //环境变量, environment { REPOSITORY="ssh://git@192.168.66.100:10022/root/idig8.git" MODULE="idig8" SCRIPT_PATH="/root/" remoteHost_tomcat= '192.168.66.103' } //流水线是如何提前,都是通过很多个stages下面的stage stages { stage('获取代码'){ steps{ echo " start fetch code from git ssh://git@192.168.66.100:10022/root/idig8.git" deleteDir() git "${REPOSITORY}" } } stage('代码静态检查') { steps{ echo " start code check" } } stage('编译+单元测试') { steps{ echo " start compile" sh""" cd $workspace/idig8/common-parent/ mvn -U clean install -Dmvn.test.skip=true -Ptest """ } } stage('jar包上传到nexus上') { steps{ echo " start maven update jar" sh""" cd $workspace/idig8/common-parent/common-utils mvn clean deploy cd $workspace/idig8/common-parent/common-dao mvn clean deploy cd $workspace/idig8/common-parent/common-service mvn clean deploy """ } } stage('移动目录到用户目录下') { steps{ echo "mv idig8.war" sh""" mv -f $workspace/idig8/common-parent/common-web/target/common-web.war ${SCRIPT_PATH}${MODULE}.war """ } } stage('拷贝文件到tomcat指定目录下') { steps{ echo "scp 目标文件" sh""" sshpass -p 'vagrant' ssh -p 22 -o stricthostkeychecking=no root@${remoteHost_tomcat} 'rm -rf /root/tomcat/tomcat-persistence/tomcat/data/${MODULE}*'; sshpass -p 'vagrant' scp -P 22 -o stricthostkeychecking=no ${SCRIPT_PATH}${MODULE}.war root@${remoteHost_tomcat}:/root/tomcat/tomcat-persistence/tomcat/data/${MODULE}.war; """ echo "打包完毕美滋滋 刷新tomcat查看吧" } } } }
只要push代码流水线自动开启工作,真是美滋滋啊
结果20轮的pipeline的编写终于成功了
删除docker挂载的idig所有的目录,然后替换新的jar包放进去
PS:完成自动化部署,终于完成了 ,在自己的虚拟机环境下搞了3天,感觉好有成就感,首选shell脚本部署学习,pipeline并不是那么麻烦。里面多半是用shell的方式搞定了,多亏自己搞了2年shell的开发。没忘记,必须前2年了解的东西确定对自己的以后的路起关键作用。ssh的公钥也在里面起到了很重要的作用,希望老铁按照我的思路可以轻松的完成部署。感谢老铁的支持,本来想2篇写在一起的,后来又拆开了,因为内容太充实了。为了搞这个每天怼到晚上2点,下班就搞不容易啊。那就拜了个拜~来不及握手!
这篇关于『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南