打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
『互联网架构』软件架构

   上次基本把环境都搭建好了,下一步就是开始完成整个流程的自动化部署。源码:https://github.com/limingios/netFuture/tree/master/jenkins/

环境回顾

应用IP地址服务端口安装应用安装方式
gitlab192.168.66.100gitlab10080gitlabdocker
jenkins192.168.66.101jenkins8888jdk8 maven3.2 git2.8shell
nexus192.168.66.102nexus8081nexusdocker
tomcat192.168.66.103tomcat8080tomcatdocker

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 initgit add .git commit -m "注释语句"git remote add origin ssh://git@192.168.66.100:10022/root/idig8.gitgit 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 .m2pwdvi 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>````![](https://upload-images.jianshu.io/upload_images/11223715-a4303c195e338290.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)>安装sshpass,ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。``` bash yum -y install sshpass

测试gitlab和jenkins

正式编写

  • pipeline

#!groovypipeline {    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点,下班就搞不容易啊。那就拜了个拜~来不及握手!

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)
上一篇: 『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)下一篇: 『互联网架构』软件架构-Intellij IDEA技巧篇(七)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
搭建jenkins实现自动化部署
持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码
三十二张图告诉你,Jenkins构建SpringBoot有多简单~
Gitlab Jenkins执行脚本方式自动化构建实例
持续集成:Jmeter+Maven+Jenkins自动化框架搭建(四):GitLab代码更新触发Jenkins自动构建
CI 系统搭建:五. GitLab、Gerrit、Jenkins 三者整合 ? Geek Blog | Python Linux 云计算 | OpenStack 虚拟技术 HPC | 性能调优 自动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服