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 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

asp.net core结合Gitlab-CI实现自动化部署的更多相关文章

  1. GitLab CI/CD 自动化部署入门

    前言:因为找了B站内推,测试开发,正好知道内部使用GitLab做自动化测试,所以简单学了一下,有错误的地方请指正. 入门 初始化 cp: 无法获取'/root/node-v12.9.0-linux-x ...

  2. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  3. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

    想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试. 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的 ...

  4. 【Hexo】使用Hexo+github pages+travis ci 实现自动化部署

    目录 一.说明 二.成品展示 三.前期准备 本地安装 node.js 本地安装 git github 账号 创建仓库 travis ci 账号 四.安装 Hexo 五.使用 hexo 搭建博客 六.部 ...

  5. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  6. K8S+GitLab-自动化分布式部署ASP.NET Core(三) 更新镜像版本并部署到K8S上

    一.介绍 前一篇,介绍了ASP.NET Core部署到K8S上,下面介绍我们在发布新一版本中怎么通过Gitlab CI自动给镜像打版本并部署到K8S上. 二.我们通过GitLab CI/CD 变量 不 ...

  7. Asp.net Core Jenkins Docker 实现一键化部署

    写在前面 在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署.大概的流程是Jenkins从git上获取代码 最开始Jenkins是放在Ubuntu的Docker ...

  8. (视频)asp.net core系列之k8s集群部署视频

    0.前言 应许多网友的要求,特此录制一下k8s集群部署的视频.在录制完成后发现视频的声音存在一点瑕疵,不过不影响大家的观感. 一.视频说明 1.视频地址: 如果有不懂,或者有疑问的欢迎留言.视频分为两 ...

  9. Gitlab Runner实现CI/CD自动化部署asp.net core应用

    环境说明 一台git服务器(192.168.169.7),安装gitlab,docker. 一台web服务器(192.168.169.6),安装git,gitlab runner,docker,dot ...

  10. ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具

    在现代化开发工具链里面就包含了自动化的通讯工具,而日志写代码我是推到 Gitlab 平台上,我今天听了郭锐大佬的分享之后,感觉我现在的团队的自动化做的远远不够.我在他的课程上学到的最重要一句话就是做工 ...

随机推荐

  1. 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

    自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模 ...

  2. ClassNotFoundException:com.sun.xml.bind.v2.ContextFactory

    项目中引入hive-jdbc-1.2.1-standalone.jar包之后,报错如下: Caused by: javax.xml.bind.JAXBException: Provider com.s ...

  3. How to reset XiaoMi bluetooth headphone Youth edition.

    To reset the speaker 1. Long press the phone call button to shut off the speaker 2. Connect the char ...

  4. kali2.0安装虚拟机工具

    kali2.0无法安装虚拟机工具,显示VMware Tools无法用于该虚拟机,或者安装之后无法进行复制.粘贴等操作. 解决办法: step1: 更换源 root@starnight:~# vim / ...

  5. 知乎大神对IAAS,SAAS,PAAS区别的理解

    你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS.PaaS和SaaS,这几个术语并不好理解.不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!好吧,其实你 ...

  6. 残差网络(Residual Network)

    一.背景 1)梯度消失问题 我们发现很深的网络层,由于参数初始化一般更靠近0,这样在训练的过程中更新浅层网络的参数时,很容易随着网络的深入而导致梯度消失,浅层的参数无法更新. 可以看到,假设现在需要更 ...

  7. Mysql储存过程7: case

    #用在储存过程中: create procedure k() begin declare number int; )); case number then select '>0'; else s ...

  8. CentOS中搭建Redis伪分布式集群【转】

    解压redis 先到官网https://redis.io/下载redis安装包,然后在CentOS操作系统中解压该安装包: tar -zxvf redis-3.2.9.tar.gz 编译redis c ...

  9. linux系统性能排查命令

    [top] 命令可以动态查看当前系统的资源情况,以及占用资源的命令列表 用法: - ctrl + c / q : 停止此命令运行 - c : 展示完整的命令 - [top -bn1]:可以不动态的展示 ...

  10. 系统日志查看logrotate 工具

    logrotate是作为linux系统日志的管理工具存在.他可以轮换,压缩,邮件系统日志文件. 默认的logrotate被加入cron的/etc/cron.daily中作为每日任务执行./etc/lo ...