微服务学习实战笔记 4.5-系统部署篇- 使用Jenkins 实践 CI/CD (2)自动化部署

一、配置 Jenkins  JDK


1、增加 JDK 设置,配置 JDK 信息

        这里主要查看 Java 的 JDK 是否安装好。登录Jenkins服务器,点击【Manage Jenkins】->点击【Global Tool Configuration】按钮,进入【Global Tool Configuration】配置页面。

 

配置好后,保存。

 

 

 

二、配置 Jenkins  Git源码


1、增加 Git,配置 Git 执行路径。

【1】查看操作系统是否安装git

1
git --version

 如果没有,安装git 

1
yum -y install git

【2】配置 Jenkins 的 Global Tool Configuration 的 Git 部分

【3】安装 Jenkins 的Git插件

点击【Manage Jenkins】->【Manage Plugins】,检查Git是否安装。

 【4】配置 Jenkins 从 GitHub上手动拉取源码

点击【Dashboard】菜单,【新建Item】,在右侧打开【Create a Job】页面。

 建立任务,

 

 配置Git ,

 添加凭据,

  【5】开始构建,从 GitHub 服务器上拉取源码。

正在构建中,

 

 可以从控制台查看执行情况,

 

 

 

 点击【Dashboard】->【项目名称】->【工作空间】可以查看到项目git到的源码。

    (演示的源码是用VS2019建立的 .net 5 asp.net mvc 项目,没做任何修改直接pull到github中)

 

三、配置 Jenkins  构建程序


1、安装.Net 5 SDK 。

在操作系统执行.net 5 SDK 安装,用于编译程序,我的系统是 Centos 8 ,

1
sudo dnf install dotnet-sdk-5.0

  

2、配置构建服务器访问镜像仓库 。

    (1)在192.168.2.174查看是否解析 my.hub.com

1
cat /etc/hosts

  如果没有,执行命令添加解析

1
echo "192.168.2.170 my.hub.com" >> /etc/hosts

   创建放证书的目录

1
mkdir -p /etc/docker/certs.d/my.hub.com

    (2)将镜像仓库的证书复制到构建服务器,登录   192.168.2.170服务器执行,

1
scp /data/cert/harbor.crt 192.168.2.174:/etc/docker/certs.d/my.hub.com

   (3)尝试登录镜像仓库 ,在192.168.2.174 执行

1
docker login -u admin -p Harbor12345 my.hub.com

  

 

3、拉取 .Net 5 镜像放入仓库

     拉取 aspnet

1
2
docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:5.0-buster-slim
docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:5.0-buster-slim mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim

  拉取sdk

1
2
docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:5.0-buster-slim
docker tag registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:5.0-buster-slim mcr.microsoft.com/dotnet/core/sdk:5.0-buster-slim

  push 到仓库

1
2
3
4
5
docker tag mcr.microsoft.com/dotnet/core/aspnet:5.0-buster-slim my.hub.com/dotnetcore/aspnet:5.0-buster-slim
docker tag mcr.microsoft.com/dotnet/core/sdk:5.0-buster-slim my.hub.com/dotnetcore/sdk:5.0-buster-slim
 
docker push my.hub.com/dotnetcore/aspnet:5.0-buster-slim
docker push my.hub.com/dotnetcore/sdk:5.0-buster-slim

 成功推送到仓库,

 

4、配置 Jenkins 构建 Docker 镜像 。

主要就是把 Jenkins 拉取的代码打包成 Docker 镜像,并推送到 Harbor 私服服务器,便于我们的发布服务器从私服服务器拉取镜像,并部署镜像。

 (1)编辑 Docker 配置文件:/usr/lib/systemd/system/docker.service 开启 2376 端口

1
vi /usr/lib/systemd/system/docker.service

  在 ExecStart 模块增加 -H tcp://0.0.0.0:2376

  (2)配置 docker 的 daemon.json 文件,增加我们的 Harbor 私服地址。

1
vi /etc/docker/daemon.json

  

(3)重新加载配置,并重启 Docker 服务

1
2
3
systemctl daemon-reload
 
systemctl restart docker 

       检查2376 端口,是否成功打开

1
netstat -anp |grep 2376

 

5、Jenkins 安装 Docker-plugin 插件

(1)【Dashboard】->【Manage Jenkins】->【Manage Plugins】

升级站点:在右侧点击【高级】,拉到最后,看到【升级站点】 ,将镜像地址更换为清华。

默认:https://updates.jenkins.io/update-center.json
清华:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后点击【可更新】或者【可选插件】,有数据,说明站点升级成功。

 (2)在可选插件中选中要安装的docker 插件,

 (3)正在安装

 

 

6、配置 Jenkins  Docker   Cloud

(1) 登录 Jenkins,点击【Dashboard】->【Manage Jenkins】->【Configure System】,进入配置页面,在右侧,一直向下拉,找到【Cloud】菜单,点击进入。

(2)Configure Clouds

点击【Add a new cloud】菜单,然后选择【Docker】菜单,里面只有一个 Docker。(如果安装了 K8s,点击【Add Docker Templates...】按钮,就会生成一个列表,供你选择。但是我们没有安装 K8s,所以我们选择【Docker Cloud details...】)

 

 没有用到k8s 选Docker Cloud details...

 

配置,

 

 测试成功后,保存。

 

7、在 测试项目中增加 Dockerfile 文件,用于构建镜像

     在 测试项目中增加 Dockerfile 文件,这个文件必须放在解决方案的本目录,便于以后的配置,该文件中的地址换成我们的私服服务器地址(远程服务器下载太慢)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM my.hub.com/dotnetcore/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
 
FROM my.hub.com/dotnetcore/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["WebApplication3/WebApplication3.csproj", "WebApplication3/"]
RUN dotnet restore "WebApplication3/WebApplication3.csproj"
COPY . .
WORKDIR "/src/WebApplication3"
RUN dotnet build "WebApplication3.csproj" -c Release -o /app/build
 
FROM build AS publish
RUN dotnet publish "WebApplication3.csproj" -c Release -o /app/publish
 
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

8、在 Jenkins 系统中,配置构建项目镜像

  (1)点击【Dashboard】菜单,然后点击右侧【项目名称】,出现下拉菜单,选择【配置】,进入配置页面。

 

 

 

 (2)进入配置页面,选择【增加构建步骤】菜单,出现下拉菜单,然后选择【Build/Publish Docker image】菜单。 

 

 

 

 

 

添加仓储凭据

 

 (3)选择【Build Now】,开始构建镜像。   

镜像仓库出现刚构建的镜像,

 

 

四、在应用服务器运行镜像


1、检查环境

  应用服务器,地址:192.168.2.173。检查是否安装docker ;是否配置能连接镜像仓库my.hub.com ,包括解析及证书拷贝。(见   三、 2    及    三、 4 章节)

2、Jenkins 系统中,安装 Publish Over SSH 插件,用于连接发布服务器

(1)【Dashboard】->【Manage Jenkins】->【Manage Plugins】

(2)点击【Dashboard】->【Manage Jenkins】->【Configure System】,进入配置页面,在右侧,一直向下拉,找到 Publish over SSH ,编辑 连接远程服务器信息

(3)点击【Dashboard】菜单,然后点击右侧【项目名称】,出现下拉菜单,选择【配置】,进入配置页面。

         【构建后操作】-->【Send Build artifacts over SSH】,增加【Exec command】就可以。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
echo '=========================================================='
 
CONTAINER_NAME=cicdtest
 
docker pull my.hub.com/dotnetcore/$CONTAINER_NAME:v1
 
echo '====================Remote 自动容器 start =========================='
 
cid=$(docker ps -a | grep "$CONTAINER_NAME" | awk '{print $1}')
 
if [ "$cid" != "" ] ; then
        docker rm -f $cid
        sleep 3s
fi
 
docker run -d --name $CONTAINER_NAME -p 8888:80 my.hub.com/dotnetcore/$CONTAINER_NAME:v1
 
echo '============= Remote 自动容器 end ==========================='

  在配置页输入上面脚本,

 

  (4)选择【Build Now】,开始构建镜像。   

    访问,程序部署成功,显示 Welcome 1 ,

 

  我们将程序,改为 Welcome 2,上传 gethub , 选择【Build Now】,重新构建镜像 ,完成后再次访问,

 

 发现程序已经更新成功,好了今天先暂时到这里吧。

 

posted @   燕马越空  阅读(331)  评论(0编辑  收藏  举报
编辑推荐:
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
阅读排行:
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!
点击右上角即可分享
微信分享提示