asp.net core结合Gitlab-CI实现自动化部署
0、目录
整体架构目录:ASP.NET Core分布式项目实战-目录
一、前言
在之前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,这次讲解一下gitlab-ci的CI/CD,说实话,自动化部署是在是非常的舒服,而且gitlab-ci很适合中小项目的部署,大项目推荐使用k8s。
阅读目录:
1、gitlab-ci及gitlab-runner说明
2、部署环境介绍
3、安装gitlab和gitlab-runner
4、asp.net core项目配置
二、Gitlab-CI及Gitlab-Runner说明
1、GitLab-CI
即GitLab上的CI功能,持续集成功能
可以实现代码提交后自动测试、编译、发布、部署等自动化工作
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。
2、GitLab-Runner
GitLab在接收到代码提交事件时,通过.gitlab-ci.yml的配置信息与对应节点上的runner进行交互。
Runner需要在CI上进行注册后方可使用。
Runner相当于代替人工在安装了Runner的服务器上运行yml文件上的配置。通常由GitLab上的项目更新触发。

三、环境介绍
| IP(CentOS7) | 组件 |
| 192.168.161.140 | gitlab、Docker |
| 192.168.161.142 | gitlab-runner、Docker、git、dotnet sdk |
四、安装gitlab和gitalb-runner
0、Docker安装的命令请看我之前写的文章
传送门:Docker系列之CentOS7安装Docker(一)
1、在140这台服务器上在Docker上运行gitalb
此gitlab由于是测试,因此没有进行数据的挂载,在生产环境中需要用到数据的挂载。
命令如下:这边要注意一下 gitlab需要用到22端口,而CentOS服务器ssh连接也是用22端口,因此需要让gitalb使用。具体操作可以看:CentOS服务器安装Telnet来远程连接服务器
docker run --detach --hostname localhost --publish : --publish : --publish : --name gitlab --restart always gitlab/gitlab-ce:latest
这样即可运行成功

2、在142服务器上安装git
在gitalb-ci.yml 文件中我有用到git 来进行拉取代码到本地服务器上的。
命令:
yum install -y git
3、在服务器上安装dotnet SDK
gitlab-ci.yml文件中git拉取完代码后需要把代码进行编译、发布出来,因此需要用到dotnet sdk。
在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。这只需要每台机器完成一次。打开命令提示符并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
安装.NET SDK,更新可用于安装的产品,然后安装.NET SDK。在命令提示符中,运行以下命令:
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.0.
4、现在可以在服务器上安装gitlab-runner了
安装gitlab-runner的方式很多,有使用gitlab存储库的,以及手动安装,具体的可以参考官方给出的方案,这边我采用手动安装gitlab-runner
下载二进制文件
# Linux x86-
sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
赋予权限:
sudo chmod +x /usr/local/bin/gitlab-runner
创建gitlabCI用户:
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
安装并作为运行服务:
sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo /usr/local/bin/gitlab-runner start
5、现在就开始注册我们的gitlab-runner啦
注册runner需要配合我们的gitlab来操作。
第一步:我们先打开一下我们的gitlab,切换到我们的Runners栏目
在这里我们可以看到一个是 url和token,这两个内容是我们必须的。

第二步:切换回我们的服务器上
执行命令 注册:
gitlab-runner register
接下来要填写的信息比较多,具体请看下面的内容。
注:第一个和第二个不要写错了,直接复制即可。

注册完成后即可在gitlab Runners 中可以看到

第三步:点击修改一下 runner
把此栏目的勾选一下,否则在自动化部署时项目无法监测到runner的存在,除非项目上传的时候带上tag标签。

然后我们选择一下 此runner 挂钩的 项目。我们选择项目,点击后面的 “Enable”即可。

到目前为止gitlab配置完成,现在配置一下asp.net core项目吧
五、asp.net core项目配置
注:我已经把项目代码上传到github上,可供下载:gitlabci
1、创建一个asp.net core webapi项目
在项目中添加 .gitlab-ci.yml 文件,该文件是用来配置Runner对当前项目进行的操作。
variables:
GIT_STRATEGY: none
stages:
- test
test_job:
stage: test
only:
- master
script:
- cd /home/gitproject
- rm -rf /home/gitproject/gitrunner
- git clone http://root:12345678@192.168.161.140/Team/gitrunner.git
- cd ./gitrunner
- dotnet build --configuration Release
- rm -rf /home/project/gitrunner
- docker stop gitci
- docker rm gitci
- docker rmi gitciimages
- dotnet publish -c Release --output /home/project/gitrunner
- cd /home/project/gitrunner
- docker build -t gitciimages .
- docker run -d -v /home/project/gitrunner:/code -p : --name gitci --restart always gitciimages
具体的参数说明可以参考 gitlab官网给出的。gitlab-ci.yml 配置
2、当然在项目里面也需要 Dockerfile文件
Dockerfile,并且把Dockerfile文件设置为 始终复制,不然在发布的过程中会丢失文件。
FROM microsoft/aspnetcore
COPY . /code
WORKDIR /code
EXPOSE
CMD ["dotnet","gitlabcicd.dll"]
3、现在我们就可以使用 git上传代码啦
上传后我们就可以在 gitlab Commits里面查看啦

进入执行查看

4、自此即可在我们的142服务器上的docker 查看到我们所运行的容器啦。
六、总结
上面的runner安装之前讲解了一种,其实还有很多种,具体可以看一下官方给出的案例。
到目前为止发现自动化部署是在是太方便了。有gitlab- CI/CD、以及k8s CI/CD,当然还有gitlab结合jenkins CI/CD,有兴趣的同学可以看看我之前的文章。欢迎给我留言
注:我已经把项目代码上传到github上,可供下载:gitlabci
参考文档
官方文档:https://docs.gitlab.com/runner/install/linux-repository.html
注册runner:https://docs.gitlab.com/runner/register/index.html
gitlab-ci.yml 配置:https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified
DotnetSDK:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-2.0.0
asp.net Core 交流群:787464275 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!
微信公众号:欢迎关注 QQ技术交流群: 欢迎加群

asp.net core结合Gitlab-CI实现自动化部署的更多相关文章
- GitLab CI/CD 自动化部署入门
前言:因为找了B站内推,测试开发,正好知道内部使用GitLab做自动化测试,所以简单学了一下,有错误的地方请指正. 入门 初始化 cp: 无法获取'/root/node-v12.9.0-linux-x ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
- ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...
- 【Hexo】使用Hexo+github pages+travis ci 实现自动化部署
目录 一.说明 二.成品展示 三.前期准备 本地安装 node.js 本地安装 git github 账号 创建仓库 travis ci 账号 四.安装 Hexo 五.使用 hexo 搭建博客 六.部 ...
- .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker
之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...
- K8S+GitLab-自动化分布式部署ASP.NET Core(三) 更新镜像版本并部署到K8S上
一.介绍 前一篇,介绍了ASP.NET Core部署到K8S上,下面介绍我们在发布新一版本中怎么通过Gitlab CI自动给镜像打版本并部署到K8S上. 二.我们通过GitLab CI/CD 变量 不 ...
- Asp.net Core Jenkins Docker 实现一键化部署
写在前面 在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署.大概的流程是Jenkins从git上获取代码 最开始Jenkins是放在Ubuntu的Docker ...
- (视频)asp.net core系列之k8s集群部署视频
0.前言 应许多网友的要求,特此录制一下k8s集群部署的视频.在录制完成后发现视频的声音存在一点瑕疵,不过不影响大家的观感. 一.视频说明 1.视频地址: 如果有不懂,或者有疑问的欢迎留言.视频分为两 ...
- Gitlab Runner实现CI/CD自动化部署asp.net core应用
环境说明 一台git服务器(192.168.169.7),安装gitlab,docker. 一台web服务器(192.168.169.6),安装git,gitlab runner,docker,dot ...
- ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具
在现代化开发工具链里面就包含了自动化的通讯工具,而日志写代码我是推到 Gitlab 平台上,我今天听了郭锐大佬的分享之后,感觉我现在的团队的自动化做的远远不够.我在他的课程上学到的最重要一句话就是做工 ...
随机推荐
- UVA 1647 Computer Transformation
https://vjudge.net/problem/UVA-1647 题意: 开始有一个1,接下来每一步1变成01,0变成10 问n不之后00的个数 打表找规律 第3步之后: 如果第i步之后有x个字 ...
- 分块+二分 BZOJ 3343
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1312 Solved: 585[Submit][Status][Discus ...
- Angular测试遇到的小坑
Angular测试遇到的小坑 Error: Expected to be running in 'ProxyZone', but it was not found 检查doneFn的写法是否正确,位置 ...
- 【BZOJ】3998: [TJOI2015]弦论
[题意]给定长度为n的小写字母字符串S,求第k小子串.n<=5*10^5. 给定T,T=0时不同位置的相同子串算一个,T=1时算多个. [算法]后缀自动机 [题解]对S建立SAM,T=0则每个节 ...
- bootstrap-select,selectpicker 用法详细:通过官方文档翻译
用过selectpicker的都说好~但是网上中文的教程又找不到比较完整的用法,于是去官网看了下 顺便弄过来翻译一下: 选项可以通过数据属性或JavaScript传递.对于数据属性,附加选项名称dat ...
- Vue 脱坑记
问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...
- javac -cp java -cp
///////////////////////////////////////////////////////////////////////////////////// 编译java文件的命令都知道 ...
- yii2-widget-fileinput英文文档翻译
源地址:http://plugins.krajee.com/file-input 该插件是为bootstrap开发的增强版h5文件上传插件,具有多文件预览,多文件选择等功能.该插件提供了基于boots ...
- thinkphp搜索排序
- 基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL
为了学习机器学习深度学习和文本挖掘方面的知识,需要获取一定的数据,新浪微博的大量数据可以作为此次研究历程的对象 一.环境准备 python 2.7 scrapy框架的部署(可以查看上一篇博客的简 ...