架构说明:
由浅入深,我们暂时不考虑分布式,安装Jenkins到用户服务器进行CICD
需要两台服务器
Gitlab:192.168.232.128:12080
源代码仓库,可以参考《安装gitlab》
用户服务器:192.168.232.130,
通过Jenkins自动构建服务:1、git clone源码
2、Dockerfile编译发布生成镜像
3、shell控制更新服务
1、前期准备
1.1用户服务器:CentOS系统
安装Docker、Git环境
yum install -y docker-ce-18.06.0.ce-3.el7 #docker安装高版本,不然AS base这些命令无法使用,详细安装步骤参考《安装docker & 配置dotnet core 项目》 yum install -y git
1.2创建测试项目,长传给gitlab
我的项目如下:
需要做几步操作
1)定义站点端口,比如2202
Program
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://*:2202"); webBuilder.UseStartup<Startup>(); });
2)添加Dockerfile
记住一点,用VS生成的Dockerfile支持文件,一定要和.sln同目录
(我就是VS生成在了MyApi/MyApi/Dockerfile,导致Docker build的时候找不到目录,然后进入无止境的修改Dockerfile内部命令的目录,最后发现只要保持和.sln同一级,就不会出错)
2、使用Jenkins之前,先进行一个简单的尝试
将源文件打包成images,并生成容器服务,只有手动执行能成功,才能为后面Jenkins执行提供保障
cd /mysoft #自己建个目录存一下 git clone http://192.168.232.128:12080/gitlab-instance-9d489b45/myapi.git cd myapi docker build -t myapi:V1.0 . docker run --name myapi-server -p 2202:2202 -d --restart=always myapi:V1.0
build的时候可能会发生不成功的情况,自己根据情况进行修正
(其实无非就是docker版本和目录的问题,严格按照上面说的做,基本没问题)
[root@localhost mysoft]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a443b859a696 myapi:V1.0 "dotnet MyApi.dll" 18 minutes ago Up 18 minutes 80/tcp, 443/tcp, 0.0.0.0:2202->2202/tcp myapi-server
正常运行,尝试访问一下:
成功!!!
3、安装Jenkins
yum安装,官网步骤
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install fontconfig java-11-openjdk yum install jenkins
默认的是8080端口,打开页面会进行初始化,
初始化完成后,先不着急安装插件,做一些配置修改吧
1)修改网络协议
Jenkins的默认插件下载源地址为:https://updates.jenkins.io/update-center.json,有可能因为https的限制,导致一些插件下载失败,
将https改成http即可
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
或者替换为国内的插件下载源地址
2)修改网络判定地址
Jenkins在下载插件之前会先检查网络,通过访问https://www.google.com来判断,防止外网访问延时,可用将其改为http://www.baidu.com
vim /var/lib/jenkins/updates/default.json
好了,回到界面,使用默认密码:登录->安装默认插件->创建用户...(最后截个图,前面的步骤忘记截图了)
4、构建我们的第一个任务吧
选择【新建Item】->
【描述】随便写
【编码管理】选择git,输入地址,添加登录账号,指定分支要保持和gitlab上的名称一致
【构建触发器】,先不填,手动触发就行
【构建环境】,勾选build之前删除工作目录
【Build Steps】
选择Execute shell
shell如下,这个很简单,主要是先简单跑起来,后面再改
echo "====开始构建====" cd /var/lib/jenkins/workspace/myapi #clone会存在workspace下面 docker build -t myapi:V1.0 . docker run --name myapi-server -p 2202:2202 -d --restart=always myapi:V1.0 echo "====构建结束===="
(先把2创建容器和镜像删除掉,不然构建会冲突)
构建产生的问题:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post
原因:jenkins调用docker需要授权
[root@localhost myapi]# sudo usermod -a -G docker jenkins [root@localhost myapi]# systemctl restart jenkins
成功!!!
5、完善shell
标签:2202,CICD,Gitlab,插件,myapi,Jenkins,Core3.1,jenkins,docker From: https://www.cnblogs.com/wskxy/p/17125028.html