雅菊 發表於 2023-7-6 20:36:00

基于Jenkins+Gitee实现SpringBoot项目自动化部署(Docker版)

<h1>前言:</h1>
<p>  上一篇笔记:基于Jenkins+Gitee实现SpringBoot项目自动化部署(非Docker版)。</p>
<p>  本篇笔记介绍一下Docker版本的Jenkins如何实现项目自动化部署。</p>
<p>  本案例基于Linux&nbsp;CentOS 7服务器,防火墙开放8080端口(Jenkins使用),80端口(项目使用),云服务器直接在控制台配置安全规则即可。</p>
<h1>1. 创建一个简单的SpringBoot项目,并提交到Gitee远程仓库</h1>
<p style="margin-left: 30px">这里我直接使用上篇笔记的demo,名称为hello-jenkins</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706173207369-925731959.png" alt="" height="382" width="442"></p>
<p>  GitHub使用类似,这里使用Gitee作为代码托管平台</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706173332025-1136856740.png" alt="" height="363" width="914"></p>
<h1>2. 服务器安装Docker(社区版docker-ce)</h1>
<p>  yum 包更新到最新</p>
<pre class="language-bash highlighter-hljs"><code>yum update</code></pre>
<p>  卸载旧版本(如果安装过旧版本的话)</p>
<pre class="language-bash highlighter-hljs"><code>yum remove dockerdocker-common docker-selinux docker-engine</code></pre>
<p>  安装需要的软件包</p>
<pre class="language-bash highlighter-hljs"><code>yum install -y yum-utils device-mapper-persistent-data lvm2</code></pre>
<p>  设置yum源</p>
<pre class="language-bash highlighter-hljs"><code>yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</code></pre>
<p>  安装docker</p>
<pre class="language-bash highlighter-hljs"><code>yum install docker-ce</code></pre>
<p>  启动并设置开机自启</p>
<pre class="language-bash highlighter-hljs"><code>systemctl start docker
systemctl enable docker</code></pre>
<p>  验证安装是否成功</p>
<pre class="language-bash highlighter-hljs"><code>docker version</code></pre>
<p>  配置阿里云镜像仓库</p>
<p><span style="font-family: 宋体, &quot;Songti SC&quot;">  <code>在阿里云官网注册登录,搜索容器镜像服务,进入控制台,复制如下命令执行,注意替换xxxx为自己的镜像源</code></span></p>
<pre class="language-bash highlighter-hljs"><code>sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json &lt;&lt;-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker</code></pre>
<p>  至此Docker安装完成。</p>
<h1>3. docker 安装 Jenkins</h1>
<p>  拉取2.346.1版本Jenkins镜像</p>
<pre class="language-bash highlighter-hljs"><code>docker pull jenkins/jenkins:2.346.1</code></pre>
<p>  启动容器</p>
<pre class="language-bash highlighter-hljs"><code>docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker jenkins/jenkins:2.346.1</code></pre>
<p><span style="color: rgba(22, 145, 121, 1)">-v /var/jenkins_home:挂载Jenkins主工作目录</span></p>
<p><span style="color: rgba(22, 145, 121, 1)">-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:挂载docker运行变量到容器,否则无法在容器内使用docker命令</span></p>
<p>  启动成功后通过ip:8080访问,根据页面提示查看默认密码。</p>
<p>  下一步,选择推荐安装的插件</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705174048742-377485655.png" alt="" height="560" width="1259"></p>
<p>  最后,自定义一个管理员账号,即可开始使用Jenkins</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705174528957-1852532993.png" alt="" height="561" width="1261"></p>
<h1>4. Jenkins配置</h1>
<h2>下载可选插件</h2>
<p>  首先在插件管理-&gt;高级 配置插件升级站点URL为阿里镜像源:https://mirrors.aliyun.com/jenkins/updates/update-center.json</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705175155854-530031177.png" alt=""></p>
<p>  在可选插件安装 Maven Integration</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705180308903-1717892685.png" alt="" height="519" width="1271"></p>
<p>  安装 Gitee</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705180338621-1543393237.png" alt="" height="517" width="1269"></p>
<p>  如果需要远程推送,需要安装 Publish Over SSH,这里服务部署和Jenkins在同一台服务器,故不用安装。</p>
<h2>全局工具配置</h2>
<p>  Docker运行的Jenkins自带JDK11和Git,可以通过命令查看版本及安装目录,如果希望使用其他版本JDK或Git,可以在全局配置里勾选自动安装,但是安装JDK需要填写Oracle账号,且下载速度慢,我们可以自己上传到宿主机挂载的jenkins_home目录,在全局配置里配置HOME即可。</p>
<p>  示例这里我们使用自定义的JDK8和Maven3.6.3。</p>
<p>  先上传两个安装包到宿主机挂载的jenkins_home/app目录、解压</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706150947264-600078254.png" alt=""></p>
<p>  不需要配置环境变量,但需要给Maven配置阿里云镜像仓库</p>
<pre class="language-bash highlighter-hljs"><code>&lt;mirror&gt;
  &lt;id&gt;alimaven&lt;/id&gt;
  &lt;name&gt;aliyun maven&lt;/name&gt;
  &lt;url&gt;http://maven.aliyun.com/nexus/content/groups/public/&lt;/url&gt;
  &lt;mirrorOf&gt;central&lt;/mirrorOf&gt;
&lt;/mirror&gt;</code></pre>
<p>  在全局工具配置中,配置我们自定义的JDK和Maven。</p>
<p>  Maven的setting.xml路径</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706195300040-32884663.png"></p>
<p>  JDK安装,配置JAVA_HOME,取消勾选自动安装</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706195407587-1592706244.png"></p>
<p>  Maven安装,配置MAVEN_HOME,取消勾选自动安装</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706195603497-1794300011.png"></p>
<p>  Git安装保持默认即可,点击保存。</p>
<h2>系统配置</h2>
<p style="margin-left: 30px">在系统配置中配置Gitee链接,根据提示获取access_tokens,该令牌只展示一次,注意保存。</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706195747115-1218611960.png"></p>
<p style="margin-left: 30px">&nbsp;添加完成后可以点击 测试链接,出现成功则说明配置成功。</p>
<h2>新建一个自由风格任务</h2>
<p>  任务名称为hello-jenkins</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705202439772-895530962.png" alt=""></p>
<p>&nbsp;  选择源码管理-&gt;Git,填写Gitee仓库地址,分支默认master</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705202809031-1517559253.png" alt=""></p>
<p>  点击添加凭证,填写Gitee用户名密码</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705203023212-416837967.png" alt=""></p>
<p>&nbsp;  Credentials选择添加的Gitee凭证,报错消失</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230705203051709-33672904.png" alt=""></p>
<p>  点击构建选项,配置Maven执行以及Shell命令</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706200325959-303195732.png"></p>
<p>  Shell如下,注意根据个人需求修改路径和端口</p>
<pre class="language-bash highlighter-hljs"><code>cd /var/jenkins_home/workspace/hello-jenkins
docker stop hello-jenkins || true
docker rm hello-jenkins || true
docker rmi hello-jenkins || true
docker build -t hello-jenkins .
docker run -d -p 80:80 --name hello-jenkins hello-jenkins:latest</code></pre>
<p>  点击保存,Jenkins任务配置完成。</p>
<p>  打开本地项目,在根目录新建Dockerfile文件,写入以下内容,提交到远程仓库</p>
<pre class="language-bash highlighter-hljs"><code># 基础镜像
FROM openjdk:8
# 维护人
MAINTAINER zxin&lt;zxin@jenkins.com&gt;
# 创建目录
RUN mkdir -p /home/app
# 拷贝项目jar
COPY target/hello-jenkins.jar /home/app/hello-jenkins.jar
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/home/app/hello-jenkins.jar"]
# 暴露端口
EXPOSE 80</code></pre>
<h1>5. 运行</h1>
<p>  点击立即构建,可以看到,依赖从我们配置的自定义版本Maven仓库下载</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706151708609-1849385114.png" alt=""></p>
<p>  等待构建完成,我们的hello-jenkins项目镜像创建成功,容器成功运行</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706200923133-1255620079.png"></p>
<p>  使用docker ps查看运行的容器</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706201123822-1996000241.png"></p>
<p>  访问ip(默认端口80)访问项目,应输出Hello, Docker!</p>
<p><img src="https://img2023.cnblogs.com/blog/1772325/202307/1772325-20230706201232880-1287923801.png"></p>
<p>  至此,基于Jenkins+Gitee实现SpringBoot项目自动化部署的目标顺利完成。</p><br><br>
来源:https://www.cnblogs.com/coderxin/p/17526662.html
頁: [1]
查看完整版本: 基于Jenkins+Gitee实现SpringBoot项目自动化部署(Docker版)