不说从前不谈过往 發表於 2021-2-8 23:19:00

Jenkins+Maven+Gitee自动化部署Springboot项目

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>CICD介绍<ul><li>持续集成(CI)</li><li>持续交付、持续部署(CD)</li></ul></li><li>Git安装</li><li>JDK安装</li><li>Maven安装</li><li>Jenkins安装</li><li>启动Jenkins</li><li>常用插件安装<ul><li>修改源</li><li>插件安装</li></ul></li><li>基础配置<ul><li>jdk配置</li><li>Git配置</li><li>Maven配置</li><li>凭据配置</li><li>对接码云Gitee</li></ul></li><li>Springboot小项目发布<ul><li>引用服务器规划</li><li>配置SSH免密登录</li><li>创建任务</li><li>自动启停项目</li></ul></li></ul></div><p></p>
<h4 id="cicd介绍">CICD介绍</h4>
<p>CICD可以理解为管道,一个自动化流程,用于实现应用开发中的高度持续自动化和持续监控</p>
<h5 id="持续集成ci">持续集成(CI)</h5>
<p>CI指持续集成,它属于开发人员的自动化流程,成功的CI说明新的代码会定期或手动构建、测试并合并到共享存储库中,可以有效解决由于分支过多而导致相互冲突的问题</p>
<h5 id="持续交付持续部署cd">持续交付、持续部署(CD)</h5>
<p>CD指持续交付、持续部署,持续交付指开发人员将代码变更后会自动进行测试然后上传到共享存储库,然后由运维部署到生产环境中;持续部署指自动将变更的代码从共享存储库发布到生产环境。二者通常交叉使用,也可以单独使用,主要取决于自动化程度</p>
<p>工厂里的生产线以快速、可重复、自动化的方式将原材料生产为消费品,软件交付也是同样的道理,而如何完成这项工作的总体设计就是<em><strong>持续交付(CD)</strong></em>,启动生产线的过程就是<em><strong>持续集成(CI)</strong></em>,将最终产品提供给客户的过程就是<em><strong>持续部署(CD)</strong></em></p>
<h4 id="git安装">Git安装</h4>
<p>执行安装命令</p>
<pre><code class="language-shell">yum install git -y
</code></pre>
<p>验证Git,查看版本</p>
<pre><code class="language-shell">git --version
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEILBVRKM6BLQhX1Dv9D.ufLeQURtxU5WcNkmlu5VLrjXJdFVmk5HZn.tWVPTAqxlD5bGWReymUwv2P6bfRaqyWo!/r"></p>
<h4 id="jdk安装">JDK安装</h4>
<p>执行命令<code>java -version</code>,查看系统是否已安装并配置jdk,若未安装请点击此处查看文章JDK安装步骤</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEH.RSoz40tTu5Sf3Zl.pxE.vZbkz0x8EaSEZzwD56wJeXI1iTqUs*Rr7v40IYOlvFToFVUUHt4dF5npZqsRw5.M!/r"></p>
<h4 id="maven安装">Maven安装</h4>
<p>在线安装:通过华为源下载</p>
<pre><code class="language-shell">wget https://repo.huaweicloud.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEC.M1Yr7t5Lc6c3YepwYmmn2vqRvczXDKzBNtRm2*yzdhzVYQqxAG0*qVLbrdJW4uGX3*icxBLUvL7Az2VjOL2E!/r"></p>
<p>离线安装:点击此处进入官方下载页面,或者在国内源下载</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECQdGmDD59O3Kge8tQo7q.HGX7dWDRDGiFq3nv7aUMNlSxWV8ZFHhHuF5ef1G1b3QnILu34bfRTKAgnBTjdLryY!/r"></p>
<p>将下载包上传到系统中,然后进行配置</p>
<p>解压下载包</p>
<pre><code class="language-shell">tar -zxvf apache-maven-3.6.3-bin.tar.gz
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEO27h2yxI4s41wEgcaV19DgwMspH1ZVckMqUPnvTAZrr*kswNmNzEMxFYAai.YKzFONaDzfROYuLBSoWjiEz4FI!/r"></p>
<p>编辑<code>vim /etc/profile</code>文件,添加Maven环境变量</p>
<pre><code class="language-shell">export MAVEN_HOME=maven路径
export PATH=$MAVEN_HOME/bin:$PATH
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEIMuXd6m0YoLkYaJ3uaE76.Bu267s9w2nDtEWKv4KiZA*UztgwYYiZhbxn.wkr6JGE3vJhrFEJOH1ssAl49Efh4!/r"></p>
<p>重新加载配置,执行命令<code>. /etc/profile</code></p>
<p>验证Maven配置,执行命令<code>mvn -version</code></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEG7d8IGRx6N2e0Qtc7X3sl6O8KeyWXcpyVLBPmrIRyfs1SZXVUwEuLJ6EkMvV1JpJC6LxDFI8Tmemf4JwDvokmI!/r"></p>
<p>创建一个目录,做为Maven仓库,并修改为华为源</p>
<pre><code class="language-shell">mkdir apache-maven-3.6.3/repository
vim apache-maven-3.6.3/conf/settings.xml
</code></pre>
<p>修改以下信息</p>
<pre><code class="language-shell">&lt;!--本地仓库--&gt;         
&lt;localRepository&gt;apache-maven-3.6.3/repository&lt;/localRepository&gt;

&lt;!--华为源--&gt;
&lt;mirror&gt;
    &lt;id&gt;huaweicloud&lt;/id&gt;
    &lt;mirrorOf&gt;*&lt;/mirrorOf&gt;
    &lt;url&gt;https://repo.huaweicloud.com/repository/maven/&lt;/url&gt;
&lt;/mirror&gt;
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEGfC8Y3sRkQeQ0zwMLcVmLjnrtv.hjvcgjOvHMjtqjBgeogjdIV6qsHWeAsNOFvkjNslxzj1RPGFpt*gBH5Ii10!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEKOsCgnVlZSL0Kohs8pHBxZjK9pKKg9PfD22pOr2veUNFeAzvwXqHtgWHA8BSnIrbxNcNKT9wo4sP.d7crLE510!/r"></p>
<h4 id="jenkins安装">Jenkins安装</h4>
<p>在线安装:由于网络限制,建议使用国内镜像站下载</p>
<pre><code class="language-shell">wget https://repo.huaweicloud.com/jenkins/war/版本/jenkins.war
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEB6NiiZHu3iy5NvuTB0RJz7.q9ZQiW*i10uMPVQbTCIpWaEOTDGbSGPcNsk.3wG.ar8CBCEQ1XcEpBlfbq5lN6U!/r"></p>
<p>离线安装:点击此处进入官方下载页面,建议下载LTS长期支持版,复制链接地址使用迅雷等工具进行下载</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEBR1ctXFVi4GyXzt86tQuO*sIOLw*Ma5F49sbHu.J3*bWiSbfhh.1rmzbLlFxRRNO6bXgQlyfA43ypVsBugl8Xg!/r"></p>
<p>将下载的war包上传到系统中</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAOEvfLFQ6XDDQDhhOFXDfaxyt5ToXNjLWuaG9.GKaRMQ.km273SmPT7qYIDr40Ma9tr49ZlHhCfX6ADxuTh5OM!/r"></p>
<h4 id="启动jenkins">启动Jenkins</h4>
<pre><code class="language-shell">nohup java -jar jenkins.war --httpPort=8888 &gt; jenkins.log 2&gt;&amp;1 &amp;
</code></pre>
<p>使用<code>tail -f jenkins.log</code>命令查看输出日志,获取Jenkins密码并记录Jenkins密钥</p>
<pre><code class="language-shell">*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

d9ad78c6be5345b4837194ea91d934b0

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************
</code></pre>
<p>开放端口供外网访问,或者直接关闭防火墙</p>
<pre><code class="language-shell"># 开启防火墙8888端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
# 关闭防火墙并禁止开机自启
systemctl stop firewalld &amp;&amp; systemctl disable firewalld
</code></pre>
<p>浏览器访问地址<code>http://192.168.107.132:8888/</code>,耐心等待进入以下页面,然后输入日志中复制的密码</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEGwhE3Id6oYVEwk1mJvi20Z0.O94cxA*ppGq.zd2VoGo1mytpToHYlJ4L2fkYnLcdTOm*3WxFruPNFyh6jNAy9E!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEANSNpf0O1K1mvbjKz0B1CEUM*aVlvkplYP2eCPJr0cgB4RkRKQIteglT*x6yr*w9sk0WoM7Pxa3slUlCNRSzgs!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDn.niBoVQs*xw.Iuvh9Ld3kAj3BVj4a1OPFJGCzMr8TnEn1fikkHOEbnbQJ0qgBMlFB3tbR1P5Odnrs8E094V0!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEFeUoqyj483kktZvDCLpsBJEsWlP7jliKRW9H8oqBePRdP.DzEPJV5i9VWndjOgn7w6hyGVW0kmg10JKPuwaXXc!/r"></p>
<p>然后点击【保存并完成】→【开始使用Jenkins】,进入Jenkins欢迎页面</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEBRMWwAT7PhPk6AjQlsV7qz8ZyDUVZNdKwgYhGjGD918EzeC6J2SsngMHbWvAnxqe.PjahxbpdFn.ENlM.QQjUM!/r"></p>
<h4 id="常用插件安装">常用插件安装</h4>
<h5 id="修改源">修改源</h5>
<p>由于是国外网址,插件下载太慢,所以先更换一下安装源</p>
<p>依次点击【Maanage Jenkins】→【Manage Plugins】→【Advanced】,划到最下面修改升级站点URL</p>
<pre><code class="language-http">https://repo.huaweicloud.com/jenkins/updates/update-center.json
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEOdxuOD7YOd7TlozG0uq5bsFgNtmy5of0uA93cECCL5alno77uQf74EAoFdYqWKg*k0apUKHKY*Ov9fILaBA69A!/r"></p>
<p>修改服务器配置,先找到Jenkins的安装目录,因其是隐藏目录,可以通过查找命令<code>find / -name ".jenkins"</code>找到安装路径,编辑updates目录下default.json文件</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEIbJh4AWW2TnX39dswO79z4lw7GHfy3ImIxS0Dckz7zphcZ7*4P2rc5wycj2SNafNTzrQpiP7cBhWGj.*C4EmVQ!/r"></p>
<p>先切换到updates目录下,然后执行修改文件的命令</p>
<pre><code class="language-shell">cd /root/.jenkins/updates/
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/repo.huaweicloud.com\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAxRwUqDcL4sFdhznS69jPTr95Z5sk7ZzvRqAGQ2onnjkBjL*UTyBr8pAcXHi0Q.M95OtKeHc9AAxvSB.dLyMW0!/r"></p>
<p>重启Jenkins,直接通过浏览器访问地址重启</p>
<pre><code class="language-http">http://192.168.107.132:8888/restart
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPM8stJGYq0d8YTVWKnYXfQFtK7Q0GWbTr999GSM2evvkUeTVBFhr8NaCrlfPvbNpMrG8MXSo3WbRgKJgImQLyE!/r"></p>
<h5 id="插件安装">插件安装</h5>
<p>在安装时选择推荐插件,已经把常用的插件安装成功,可以在已安装列表中查看</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPO06MliautxDaLhERyL5xdDLuCYm4P0kqxLOmqD8y61lgYjUUQORr5SbtR7gzQE70CVLplh2ANipP4zUqAtzIw!/r"></p>
<p>未安装的插件在【可选插件】中搜索,然后勾选要安装的插件,点击【直接安装】</p>
<p>例如:SonarQube Scanner插件,安装后可以执行 <code>sonar scanner</code> 指令,跑 CI 时检查代码质量</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAkegC6sQxqbVEK6JQipKXp3W0PU24cnhpyy*9zc4h6JDb0frV31ofsDbFvmhHDNNygQ6fvjZv9oFBkcKe*ZsDE!/r"></p>
<p>点击【直接安装】后会进入安装页面,在此页面勾选“安装完成后重启Jenkins(空闲时)”,如果页面长时间等待,可能已成功安装,请手动刷新页面</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPbtuzKGxBvBjbKdzMOHzCbFdOlsdeSBQYcKQFwoJVXIqnRkaLodueP*CiyK87Ggcz5cJDOpb5KJ7ki3QsTJN9k!/r"></p>
<h4 id="基础配置">基础配置</h4>
<h5 id="jdk配置">jdk配置</h5>
<p>依次点击【Manage Jenkins】→【Global Tool Configuration】,找到JDK,点击【新增JDK】</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEGGieRS4X09WinF9uvWkbTFcgxdjY1igQhwiPAvQ5AARGpIdJQZp85MtqPu3cmun41V*Hfwl6XlmEeL0UF3XY3U!/r"></p>
<p>出现黄色提示说明配置有问题,路径有误,Jenkins未找到</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEGpymlW.hsNd3MvN.iAKwK6GLvlm0NdOXSG0SfdNHP0ePjrG6GZKdwD5JNFYyCTcvQ05XPmdiwzOpXYkhXyJGM4!/r"></p>
<h5 id="git配置">Git配置</h5>
<p>在【Global Tool Configuration】页面找到Git,默认已经填写,可以重命名操作</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEIqx3v2x66Em7Jb5P1qXU*EpqP.cn7ZAR4u82.lxlRakaUntR*KR0r9RLIo08U5t9oghpbVL1KVRSae6lcieYno!/r"></p>
<p>出现下图提示说明配置有误</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELOaEKJZ8rliDRJiCmEPw1VBXi6fc6JwqDNDXJzZW4FBM9SL41uZZmLUjVZJvTrAFQZ*VGctDpWbRbm22xacRhI!/r"></p>
<h5 id="maven配置">Maven配置</h5>
<p>在【Global Tool Configuration】页面找到Maven</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEO8JmVHSmo9e.ED3Vr6OUnlEE7*Lt8jCQLphTSlss1Tzzz9DKVD9zTU4zLiHYFFfayvODD9zAuaWUVw0XW3TJp4!/r"></p>
<p>同样下图提示说明路径有误</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEN9781y6ouDnEcDHYC7WnxsF.xoktQnpTHFL9eeh37DIHykM3nnD4m58UMvlIHSDPi0bJn0FJeFshAm5oXvZTmo!/r"></p>
<p>最后点击【保存】</p>
<h5 id="凭据配置">凭据配置</h5>
<p>依次点击【Manage Jenkins】→【Manage Credentials】,点击【全局】→【添加凭据】,或者进入全局详情页添加凭据</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJO8YxwtrrRLws4wvrc*Xu9uyRuMB47pUdHKpB0qv7XMqMXliwI8hoFs8o1ve4sf91AoixUj*unCE1lDLgMeeCE!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEO2C3.jOcPgZJfl9xTknDCJME1JocaY8G8M2287F.aNwW2GDq8HDugv7BVbDsdh9OLm9nKiLfsLqGgv5B.a85pU!/r"></p>
<ul>
<li>
<p>常用凭据类型</p>
<p>Username with password:用户名和密码</p>
<p>SSH Username with private key:使用SSH用户和密钥</p>
</li>
</ul>
<p>下面以使用Git工具到码云拉取项目源码为例,演示Jenkins的如何管理码云的凭证</p>
<h5 id="对接码云gitee">对接码云Gitee</h5>
<p>添加码云Gitee凭据</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEI0Vgq7hOQmbN1Eiz7TsPvzXuEM71dVRoFzilJBiC1Wx9GwfaOKIxx6g0W5zCS2ZxWjhh.uv3s8suKg8zSNxxo8!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJ7Yd81wYUKsqvBEXLc2gLSQUBqu5dzlGXND.MmJ94DnMTftbHC.IwvZiXwYhKCAkEjS1LeIs1lDe*3cdJa.nTc!/r"></p>
<p>新建一个码云仓库</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECgWnr4dsVO6q85N5yQdbkH3WTQGbYOy.YyAVRHAbuhA4lOizC3LshoEYLlt6xgAiRIuq65lKb8cEWaMRNuGmYE!/r"></p>
<p>此仓库内有两个README文件,复制仓库地址</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAmLiAPW*y5tFKAjLD5yvpUULV7Oeprp4ziaeC8fMyGIih59pJ5iHJqnStVKL80ldpJJAaDf35LFo*9wsGu.XIA!/r"></p>
<p>然后测试凭据是否能正常使用</p>
<p>【新建Item】→【Freestyle project】,输入任务名称,点击【确定】</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEEy5qME4pJTQQicNbJh1IKqEM0VOsvYAkQeQ6d5OXtbhl0hWeOvUaqED5UZPgzoiTdUPRa*rHVwLzpkol3Q2V6Q!/r"></p>
<p>找到源码管理,点击Git,URL中输入复制的仓库地址,Credentials选择已添加的码云凭据</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDDkdbJ0YMgmmIidj7ZSralMZWlFAYCXGh4MGgRSqCgp935CNl3q*rDYXCW180*jQIreQqreZoDmcHzvbOo1lW8!/r"></p>
<p>因为仓库是私有的,所以必须要有凭据,否则无法连接到仓库,就会报错</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEIzeQbzwZkftOrG4NKic*BVQp1WdNq*9UG8fFyqN.GDEg5EkS8QyEzY*iapVqjWCWNCyxbGHh905Mtd95w27w5Y!/r"></p>
<p>保存任务,点击【Build Now】,立即构建,查看构建日志</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECC14jjx*8epNlRjxyozJfYZYk7UWZc1oeZnePNW.zxFENG.DCrcxXDq8EpUwH8Rbv6LlxKmjdVQRXCHO46GSvc!/r"></p>
<p>通过日志输出结果可以看出构建成功</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEB3HmhsQKp4BVO00juC*nsopKWgdlv1GD9JLHHTPdITGa*GoIIEK.y181mgWhjeWAU8GxIAz.n3zMG6P7d4gYlA!/r"></p>
<p>查看Jenkins的工作空间目录可以看到已成功将文件拉取下来</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEIazzXOOUnigl*t*jJ5BLQmOc3lytwnGCMejMwjYxCMhdgia56raWp03EaxgOJXCkIZG6APO3dblAMZh8xV*irY!/r"></p>
<p>至此说明用户名和密码类型的凭证已经生效</p>
<h4 id="springboot小项目发布">Springboot小项目发布</h4>
<h5 id="引用服务器规划">引用服务器规划</h5>
<p>由于Jenkins构建消耗内存很大,此处再创建一个虚拟机,有条件可以直接开通阿里云的ECS,就更像公司的部署情况啦!哈哈</p>
<p>应用服务器信息</p>
<ul>
<li>IP:192.168.107.133</li>
<li>JDK:1.8 (安装步骤请查看此文章)</li>
<li>部署路径:/project/backup/dyd-jenkins-test/</li>
<li>端口:8088</li>
</ul>
<h5 id="配置ssh免密登录">配置SSH免密登录</h5>
<p>在Jenkins服务器上生成密钥</p>
<pre><code class="language-shell">ssh-keygen -t rsa
# 然后直接回车三次
</code></pre>
<p>执行后会生成.ssh目录,生成两个文件</p>
<ul>
<li>id_rsa : 生成的私钥文件</li>
<li>id_rsa.pub : 生成的公钥文件</li>
</ul>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEO5uEr6S*aDT2RwW*Rld1uQTEVhyMkmShZ.TzpvJQuqcYp.fLo3e5tA3t*Ww4dJNDei*oG4ScQoNpaMpOJBZD*I!/r"></p>
<p>接下来需要将公钥导入到认证文件中</p>
<pre><code class="language-shell">cat /root/.ssh/id_rsa.pub &gt;&gt; /root/.ssh/authorized_keys
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEM*P3gyC9HN9IBMsId6u8dzxErX0i4790eNh1T.oKexSKSIs1flNyhwA*3v0.bJXMl9AMFPHnftPRY*qe2T9uLo!/r"></p>
<p>ssh公钥生效需满足至少下面两个条件:</p>
<ul>
<li>.ssh目录的权限必须是700</li>
<li>.ssh/authorized_keys文件权限必须是600</li>
</ul>
<p>给文件授权</p>
<pre><code class="language-shell">chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJynmp.r0EkALLTGB6ox55f2vxY7KFrycICGjU5ki5elQVNy2kpR*1h0X.bBXktQcF3RnXfn6oNZ8sO2DRx**.8!/r"></p>
<p>将authorized_keys文件拷贝到应用服务器192.168.107.133的.ssh目录下</p>
<pre><code class="language-shell"># 先在应用服务器(192.168.107.133)上创建/.ssh目录
mkdir /root/.ssh
</code></pre>
<pre><code class="language-shell"># 在jenkins服务器(192.168.107.132)上将pub公钥文件拷贝到应用服务器的.ssh目录下,并命名为authorized_keys
scp -p /root/.ssh/id_rsa.pub root@192.168.107.133:/root/.ssh/authorized_keys
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEFxeEEeDUr0Ib6g2bcQe8TVP5ttKF3i4EACUnkzW5Ms1belwBdY.VOYGOBPdD19buPn631I0IZWIdrUiNwvphF8!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEBZrMHeD4UxnM3PStu3fqKUQGfBzbORrArPun*5B1RJIUbQ2yj8LD8BfzVwtk.oORuuarLI3KlHXk2PUf5ECBIE!/r"></p>
<p>然后再给应用服务器192.168.107.133上的.ssh和.ssh/authorized_keys授权</p>
<pre><code class="language-shell">chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPyWGJCnphBbgn6VLEDfiMR3k4Nqnhn7wZ4TF.i.*U3FF88LFKFlRRaksjJXjTfzSAhd5x5PgG.rUsX6ZvuGROw!/r"></p>
<p>在Jenkins服务器192.168.107.132上进行免密连接测试</p>
<pre><code class="language-shell"># 在jenkins服务器的任意目录下创建test文件,并拷贝到应用服务器
touch /root/test
scp -p test root@192.168.107.133:/root/test
</code></pre>
<pre><code class="language-shell"># 进入到应用服务器(192.168.107.133),检查目录下是否出现test
</code></pre>
<pre><code class="language-shell"># 在Jenkins服务器上使用ssh进行免密连接测试,成功连接如下图所示,如果还需要输入密码,说明配置失败,请检查
ssh root@192.168.107.133
# 验证后使用exit退出远程连接
exit
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEFmhiUG7j7FbfifMJy.2mqJ6GxTfqDWvKfKEwoHTKvPP30C4IoxgLX544dqKqyuZJ1YxRN6lFO47j*EUl8hD*SI!/r"></p>
<p>至此免密登录和实现免密拷贝成功</p>
<h5 id="创建任务">创建任务</h5>
<p>先使用脚手架写一个超简单的小项目,或者网上找个项目</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELDikgzxGpZ2TAEA8*x13v*v6MjArqC.pU1gw4pkYZLh6U53eLtfUmcLvJ7KrfeA0dhWOTna*5BbPYa8etY8Eok!/r"></p>
<p>先确保本地能够成功访问</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEBmAAiHk.L9bkQkOmYkqekmNDchPL6aq*A6k9aYSKsrAxpnnM1b24dgV.eUpeNEuzlnfgf*2wOXaSE.gSQNKkE8!/r"></p>
<p>然后通过Git将小项目上传到码云</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAJQwRrlnJmP.8JgMPyHfit0QzldNg4NsHDGLfFHHt3xicr*VoJyUz35XxgdOSmcUE..ipt73OP7Wli6PykONxE!/r"></p>
<p>创建一个Maven项目,若不存在此选项,请在插件中搜索maven,然后安装Maven</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrENpevEozNufC45gEMJOOTAzQ8YkihEYTBMqBmIx4iYWO4*H1kdViq*JWjewbKCvNFi6X.YzVYOPMsglM.5UeuyA!/r"></p>
<p>配置Git,填写码云上复制的项目地址和码云凭据</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEGKwKTzuAKDB3fxA6h*WPFxPRRFqdjTxQoIRMnpVLKpoQEwyMd9vS80N65TSk.mvONIvGosZbTfiKUldKp.YKD4!/r"></p>
<p>配置Pro Steps,POM默认已存在,无需更改,操作填写<code>clean package -U -Dmaven.test.skip=true</code></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEF0C2psZlVRmWvbHu6MWviof4F8v7Z*bKv3T08ZJZroaxB*fDN50EKdtK*2KxuXrC4w2u9l1W.*uN1o1TqtNW88!/r"></p>
<p>配置Post Stops,选择执行Shell</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPbf1fEysNUiWQVTadHcmECLRsJMw7o*3t*C.6Ll10Ld5hPhXBBBKbBm5ZzK5Gjjo8hGaijJJbuooMKZt0oJhec!/r"></p>
<p>编写Jenkins发布脚本</p>
<pre><code class="language-shell">#!/bin/bash

echo "部署的目录和项目名称"
DIR="/project"
projectName="dyd-jenkins-test"

echo "待部署的应用服务器"
server_ips="192.168.107.133"
for server_ip in ${server_ips[@]}
do

echo "ssh连接并进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} &lt;&lt;EOF
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOF

echo "拷贝jar包到目标服务器的tmp目录下"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar

echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} &lt;&lt;EOF
mv /tmp/${projectName}.jar $DIR/backup/${projectName}/${projectName}.jar

EOF

done

echo "success"
</code></pre>
<p>将脚本代码粘贴到Execute shell框中,然后点击【应用】【保存】</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECZ2qrmZ.oIig8jvvXaJdVyZH8MNB7i0zXCwIT.AFkITjpUGbErWHqrUeMSzmQQEJWKXPAOnSMQDkTw3vy843FY!/r"></p>
<p>执行构建任务,</p>
<p>点击【Build Now】,立即构建,查看控制台输出,首次构建有下载任务,构建时间可能会很长,请耐心等待</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEG9OGGJ55aVSozepvBmJpv0GyRzbdPCrc433ZFaDbZG*ox4RJCwaRnTtoDYbyAL2fFjmyJNwY8FZJmil6Q7K4II!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDt*4ohFmcqNnMODuRgsISt.fpMTWt1U2kCSSMXy0ZbfVUhKBd4nD4R01YBJew179yK5K61VzSaleqVCKS8*pQQ!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAvkf12IpDG5NlhLIxrXIBYdcl6bCuie6bgUMEKqpwSEwakPPoh3mfXwWmUrFQwLSZbMherml7r*9yy.lwMT0L4!/r"></p>
<p>构建成功后启动项目</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJZ0mXOeN2OJ1qlzdRXb5GS0p93CMmGQ2TMOwZo3ct2YYkeduCoGHYxJObB2EAqYozpbUTQWl6n2F2Wdj5CpE84!/r"></p>
<p>通过浏览器访问验证项目,可以看到项目已成功启动</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELR6.9roQY5qIfDWeIVUzmfbUzwv9NJvF8SF79DL2UlmzsxMYCnbdPe4QGIq.33.KDB.i2S.vdMblzmtwEcMxhg!/r"></p>
<h5 id="自动启停项目">自动启停项目</h5>
<p>通过上面操作可以看到任务构建成功后,每次还需要手动启停,所以需要一些自动启停的shell脚本</p>
<p>编写应用启动脚本</p>
<p>在/project/backup/dyd-jenkins-test目录下创建启动脚本</p>
<pre><code class="language-shell">vim start.sh
</code></pre>
<p>将下面的代码粘贴到start.sh文件中</p>
<pre><code class="language-shell">#!/bin/bash
set -e #一旦报错立即停止
set -o pipefail

# 添加JDK路径
JAVA_HOME=/usr/java/jdk1.8.0_281-amd64

APP_ID=dyd-jenkins-test
APP_DIR="/project"

nohup $JAVA_HOME/bin/java -jar ${APP_DIR}/backup/${APP_ID}/${APP_ID}.jar &gt; release_out.log 2&gt;&amp;1 &amp;
start_ok=false
if [[ $? = 0 ]];then
      sleep 5
      tail -n 100 release_out.log
fi
dyd=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${dyd}" ]];then
    echo "应用程序启动成功"
    exit 0
else
    echo "应用程序启动失败"
    exit 1
fi
</code></pre>
<p>运行脚本看是否能够成功启动应用</p>
<pre><code class="language-shell"># 切换到项目目录下
cd /project/backup/dyd-jenkins-test
# 执行shell命令
sh start.sh
# 或者执行命令时直接加上路径
sh /project/backup/dyd-jenkins-test/start.sh
# 然后查看日志
tail -f release_out.log
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEOumaj9tTVUhqcuZJmiRHPAFConrgvDsoh.YHfUewsNmx08bUuQHaIdfHYF7R8Aost*par2Aq8iPWo7jerT7jbM!/r"></p>
<p>通过浏览器访问成功</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELigjhKhPz6EYlxhnVa.*G9.VixJd8RuUpGwlFA3xSpgv*DsgHVnc3C7bxlQUPQe7DmyP6.s6whEgTBoFfpzUEQ!/r"></p>
<p>编写停止应用脚本</p>
<p>在/project/dyd-jenkins-test目录下创建停止脚本</p>
<pre><code class="language-shell">vim stop.sh
</code></pre>
<p>将下面的代码粘贴到stop.sh文件中</p>
<pre><code class="language-shell">#!/bin/bash

APP_ID=dyd-jenkins-test
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
</code></pre>
<p>运行脚本看是否能够成功停止应用运行</p>
<pre><code class="language-shell"># 切换到项目目录下
cd /project/backup/dyd-jenkins-test
# 执行shell命令
sh stop.sh
# 或者执行命令时直接加上路径
sh /project/backup/dyd-jenkins-test/stopt.sh
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPZ0ehnC*ohKx3RQZiogla.WRMDj.SXOLJliRol376Z*F49Ix0OvVCEe5Z0nZwNwDuKJK1DBfH8ogdDiwNLgAoE!/r"></p>
<p>通过浏览器访问失败</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELAqH0BCBI4qNB1GIp8VgdkAVy5PZqCo1R9YSAFFLlLA1P8JsnKTx**CNbIDDq9FuFexH5VufBX3Z*vXmPUIQC4!/r"></p>
<p>启停脚本验证通过后,将下述启停代码加到上面Jenkins的发布脚本中</p>
<pre><code class="language-shell">sh $DIR/backup/${projectName}/stop.sh
sh $DIR/backup/${projectName}/start.sh
</code></pre>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECQdgY9xtLe4mtEf8Rje2gTk6mxcHiOX20pCt*URYLk7*1VJk1ONu5Y8gBHymI.*M0ZkyAcEwe2FixdwYN.3Fi8!/r"></p>
<p>构建任务,查看控制台输出日志可以项目启动成功</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAQenW7UIS.cqPbwlzrwhmt0lgfbVTgQLPrhJRHnB*ofP7..nVt9QCaLlv*xguf54L.SQd4AWjp*FLwMbKJBY1E!/r"></p>
<p>项目变更后重新构建发布</p>
<p>先修改一下小项目,然后同步到码云</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECqklDmPrpkWj*rWwg6i4W8umaSadrLPHvDT1yqnmldcRFFCnrARnHn2F0RUezDH4OSxEqXNyH3FaFSZcOWpX8k!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJXy6Sz86p17r.w3yrJGyePdcr0QjAYCYaZkxzBcXXllnTaky8GNDvaiA9vesXszSXPZPh8HVHsPFUV3ot2ADxY!/r"></p>
<p>再次构建项目</p>
<p>日志中可以看到commit信息,并构建发布成功</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrED3FzT2GZ.ZnNu5ovZcUIC3MZCdXSMTYgoc*QpWSRw9KHXUaVeWxg4wVDXC1yxmnuorDEVwxhf6IiRcV4.FP0Mc!/r"></p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEFsOWX7AM2zroY5Nmd3VH8RO5MOVHC64dzZ57Es8WPNy5Yn.vO9m0huA3fvGpcS03RuzmooDLgwgPjV3VdXfRF0!/r"></p>
<p>通过浏览器访问可以看到最新的内容</p>
<p><img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEL.XeLlj9fPQiZlH799wMkVR6suN*UN.u6uBAFAuwx*mC476lr*cA6lZI6csFz4Rasr3FK0UtVJTajzrwyOVPWs!/r"></p>
<p>OK!先写这么多吧</p><br><br>
来源:https://www.cnblogs.com/dyd168/p/14391485.html
頁: [1]
查看完整版本: Jenkins+Maven+Gitee自动化部署Springboot项目