asp.net core结合Gitlab-CI实现自动化部署

一、前言


在之前的文章中写过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上的项目更新触发。

 

640?wx_fmt=png

三、环境介绍

 

IP(CentOS7)组件
192.168.161.140gitlab、Docker
192.168.161.142gitlab-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 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always gitlab/gitlab-ce:latest

 这样即可运行成功

640?wx_fmt=png

 

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.0

 

4、现在可以在服务器上安装gitlab-runner了

安装gitlab-runner的方式很多,有使用gitlab存储库的,以及手动安装,具体的可以参考官方给出的方案,这边我采用手动安装gitlab-runner

下载二进制文件

# Linux x86-64sudo 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,这两个内容是我们必须的。

640?wx_fmt=png

 

第二步:切换回我们的服务器上

执行命令 注册:

gitlab-runner register

 

接下来要填写的信息比较多,具体请看下面的内容。

注:第一个和第二个不要写错了,直接复制即可。

640?wx_fmt=png

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

640?wx_fmt=png

第三步:点击修改一下 runner

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

640?wx_fmt=png

 

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

640?wx_fmt=png

 

 到目前为止gitlab配置完成,现在配置一下asp.net core项目吧

 

五、asp.net core项目配置


  注:我已经把项目代码上传到github上,可供下载:gitlabci

 1、创建一个asp.net core webapi项目

在项目中添加  .gitlab-ci.yml 文件,该文件是用来配置Runner对当前项目进行的操作。

640?wx_fmt=png

具体的参数说明可以参考 gitlab官网给出的。gitlab-ci.yml 配置

 

2、当然在项目里面也需要 Dockerfile文件

Dockerfile,并且把Dockerfile文件设置为 始终复制,不然在发布的过程中会丢失文件。

FROM microsoft/aspnetcore
COPY . /code
WORKDIR /code    
EXPOSE 5001CMD ["dotnet","gitlabcicd.dll"]

 

3、现在我们就可以使用 git上传代码啦

上传后我们就可以在 gitlab Commits里面查看啦

640?wx_fmt=png

 

进入执行查看

640?wx_fmt=png

 

 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

原文地址: https://www.cnblogs.com/guolianyu/p/9709166.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[译]ABP vNext介绍

译者注ASP.NET Boilerplate是.Net平台非常优秀的一个开源Web应用程序框架,在国内也有大量的粉丝.近日, 本人在github上闲逛, 发现ASP.NET Boilerplate团队又悄悄的建立了一个新项目: ABP vNext从名称可以看出来, 这是ASP.NET Boilerplate的下一代框架. 那么, 为什么要开发这个新…

【KMP】重复子串(ybtoj KMP-2)

正题 ybtoj KMP-2 题目大意 问你一个字符串最多由多少个相同的字符串组合而成 解题思路 如下图,先用KMP求出nx数组,那么有1∼nxn1\sim nx_n1∼nxn​和(n−nxn)∼n(n-nx_n)\sim n(n−nxn​)∼n相匹配 不难推出1∼(n−nxn)1\sim (n-nx_n)1∼(n−nxn​)…

C# 8小特性

对于C# 8,有吸引了大多数注意力的重大特性,如默认接口方法和可空引用,也有许多小特性被考虑在内。本文将介绍几例可能加入C#未来版本的小特性。新的赋值运算符:&&和||从第一个版本开始,C#就支持把等号和另外一…

【KMP】周期长度和(luogu 3435/ybtoj KMP-3)

正题 luogu 3435 ybtoj KMP-3 题目大意 定义S的proper前缀为S中非空且len<|S|的前缀&#xff0c;若Q是A的proper前缀&#xff0c;且A是QQ的前缀 现在问你字符串S所有前缀的最大周期之和 解题思路 如上图&#xff0c;对于一个字符串S&#xff0c;如果有周期Q&#xff0c;那…

dotnet core 开发无缝兼容Http和Websocket协议的接口服务

在应用接口开发中往往要针对不同协义开发相应的代理服务&#xff0c;但对于Websocket和http这两种协议来说就有些不同&#xff0c;从实现上来看Websocket可以说是Http的升级子协议&#xff0c; 两者在协议处理上基本一致&#xff0c;具体可以在解释Body上有所不同。FastHttpApi…

centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用。当然&#xff0c;在真实的产线环境中需要分析的数据和难度远远高于demo所示&#xff0c;所以demo的作用也仅仅只能起到介绍工具的作用。通常正常情况下&#xff0c;分析个几天才能得出一个结论的的结果都还是比较…

.NET微服务方案调查

.NET Core就是专门针对模块化的微服务架构而设计&#xff0c;调查下大家选择.NET微服务情况&#xff0c;如果你有微服务方面的需求可以找我哦&#xff0c;可加我微信geffzhang&#xff1a;相关文章&#xff1a;Service Fabric 与Ocelot 的集成Ocelot简易教程&#xff08;二&…

中国开源年会 COSCon 2018 今起接受报名!

大会官网二维码名片&#xff1a;点击文末左下角阅读原文&#xff0c;直达报名链接写在大会前开源 20 年&#xff0c;我们遇到了什么问题&#xff1f;‍围绕开源的方式来开发软件项目&#xff0c;正在走向业界的主流。随着开源的崛起&#xff0c;相应的问题也来了&#xff1a;Re…

.Net Core应用框架Util介绍(四)

上篇介绍了Util Angular Demo的目录结构和运行机制&#xff0c;本文介绍Util封装Angular的基本手法及背后的动机。Angular应用由Ts和Html两部分构成&#xff0c;本文介绍第一部分。Angular Ts的封装Ts是Angular的代码部分&#xff0c;用于编写页面逻辑。依赖注入( Dependency I…

2020牛客暑期多校训练营(第四场)

2020牛客暑期多校训练营&#xff08;第四场&#xff09; 这场属实有点难受 文章目录A Ancient DistanceB Basic Gcd Problem题目代码&#xff1a;C Count New StringD Dividing StringsE EliminateF Finding the Order题意&#xff1a;题解&#xff1a;代码&#xff1a;G Geome…

《C# 程序员的自我修养》送书活动结果公布

截止到9月28日24&#xff1a;00 &#xff0c;本次送书活动《C# 程序员的自我修养》共收到150多位同学参与回复。以下5位同学将获赠书籍一本&#xff1a;夏树、Damon、水墨清华、天天、kang以上同学请加小二微信领取赠书小二微信&#xff1a;geffzhang.NET社区新闻&#xff0c;深…

使用 dotTrace 分析 .NET Core 代码问题

0.背景在项目开发之中&#xff0c;前期可能主要以保证任务完成为主&#xff0c;对于性能优化主要在于开发完成之后再来进行。可能在测试的时候发现部分接口的代码执行时间过长&#xff0c;但是又毫无头绪&#xff0c;这个时候你就需要性能分析工具来协助你排查问题了。常规性能…

【每日一题】7月17日题目精讲—BOWL 碗的叠放

【每日一题】7月17日题目精讲—BOWL 碗的叠放 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 小H有n个碗需要放进橱柜&#xff0c;她希望将他们叠起来放置。你知道每个碗都…

基于Ocelot的gRpcHttp网关

什么是gRpcHttp网关通俗的讲就是将gRpc提供的服务以rest api的形式提供出去&#xff0c;不需要再单独的写一个webapi去做这件事。gRpcHttp网关好处减少不必要代码&#xff0c;减少中间层提高通讯效率。以前可能是这样用了gRpc网关后是这样gRpcHttp网关提供哪些功能可以直接加载…

CF917D-Stranger Trees【矩阵树定理,高斯消元】

正题 题目链接:https://www.luogu.com.cn/problem/CF917D 题目大意 给出nnn个点的一棵树&#xff0c;对于每个kkk求有多少个nnn个点的树满足与给出的树恰好有kkk条边重合。 解题思路 矩阵树有一个统计所有树边权和的和用法&#xff0c;就是把变量变成一个形如wx1wx1wx1的多项…

COSCon'18 面向全宇宙招募志愿者啦!

2018 中国开源年会&#xff08;COSCon18-China Open Source Conference 2018) 志愿者招募工作今日正式启动&#xff01;我们诚挚地欢迎开源社区的朋友们及高校的同学们加入志愿工作者团队&#xff0c;与国内外众多开源项目基金会、公司、大神等齐聚一堂&#xff0c;共襄盛举。招…

讲重点,看趋势——Microsoft Ignite 2018的回顾和展望

一年一度的微软技术大会——Microsoft Ignite 2018上周在奥兰多召开&#xff0c;目前已经落下帷幕。我没有去现场&#xff0c;但据说这次的盛况空前&#xff0c;创下微软之最。确实&#xff0c;这些年来&#xff0c;微软内部非常重视 Iginte&#xff0c;上至最高管理层&#xf…

算法工程师的危机

本文为沙漠之鹰第68篇原创文章9月20号讯飞AI同传语音造假的新闻刷爆科技圈&#xff0c;科大讯飞股价应声下跌3.89%&#xff08;不是65.3%&#xff0c;标题党文章害死人&#xff09;。 吃瓜群众纷纷感慨&#xff0c;有多少人工&#xff0c;就有多少智能。小编偷换概念玩的溜AI概…

Cover the Tree(2020多校第二场C)

Cover the Tree 文章目录题意&#xff1a;题解&#xff1a;代码题意&#xff1a; 一个无向树&#xff0c;选择最少数量的链子&#xff0c;能将树上所有边覆盖&#xff0c;答案不唯一 (1≤n≤2105&#xff09; 链子就是两点之间的边 看看样例 输入 5 1 2 1 3 2 4 2 5输出 2 2…

[模板]多项式全家桶小记(求逆,开根,ln,exp)

前言 这里的全家桶目前只包括了ln,exp,sqrtln,exp,sqrtln,exp,sqrt。还有一些类似于带余数模&#xff0c;快速幂之类用的比较少的有时间再更&#xff0c;NTTNTTNTT这种前置知识这里不多说。 还有一些基本的导数和微积分内容要了解&#xff0c;建议不懂的可以先去翻翻高二数学…