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

简介: 即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上的项目更新触发。
1.png

三、环境介绍

2.jpg

四、安装gitlab和gitalb-runner

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

这样即可运行成功
3.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-64

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

4.png

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

执行命令 注册:

gitlab-runner register

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

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

5.png

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

6.png

第三步:点击修改一下 runner

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

8.png

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

7.png

到目前为止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 5001:80 --name gitci --restart always gitciimages

复制代码

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

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

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

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

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

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

进入执行查看
10.png

4、自此即可在我们的142服务器上的docker 查看到我们所运行的容器啦。

六、总结
上面的runner安装之前讲解了一种,其实还有很多种,具体可以看一下官方给出的案例。

到目前为止发现自动化部署是在是太方便了。有gitlab- CI/CD、以及k8s CI/CD,当然还有gitlab结合jenkins CI/CD,有兴趣的同学可以看看我之前的文章。欢迎给我留言

目录
相关文章
|
1月前
|
Cloud Native API C#
C#的现代化:.NET Core引领的技术革命
【6月更文挑战第9天】`.NET Core引领C#现代化,实现跨平台革命,提升性能并支持云原生应用。异步编程模型优化体验,统一API简化开发流程。C#应用场景扩展,开发效率提高,技术创新加速,预示其未来在技术领域将持续发挥关键作用。`
38 10
|
18天前
|
开发框架 .NET API
.NET Core 和 .NET 标准类库项目类型有什么区别?
在 Visual Studio 中,可创建三种类库:.NET Framework、.NET Standard 和 .NET Core。.NET Standard 是规范,确保跨.NET实现的API一致性,适用于代码共享。.NET Framework 用于特定技术,如旧版支持。.NET Core 库允许访问更多API但限制兼容性。选择取决于兼容性和所需API:需要广泛兼容性时用.NET Standard,需要更多API时用.NET Core。.NET Standard 替代了 PCL,促进多平台共享代码。
|
25天前
|
开发框架 JSON .NET
|
28天前
|
开发框架 .NET Nacos
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
70 0
|
29天前
|
存储 JSON NoSQL
技术心得记录:在.NETCore中使用CSRedis
技术心得记录:在.NETCore中使用CSRedis
20 0
|
1月前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
|
1月前
|
开发框架 .NET Linux
【.NET Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
该文介绍了如何不使用VS2019手动创建ASP.NET Core Blazor项目的Dockerfile并构建Docker镜像。首先,创建名为Dockerfile的文件,并复制提供的Dockerfile内容,该文件指定了基础镜像和工作目录。然后,通过CMD在项目目录下运行`docker build -t 自定义镜像名 .`来生成镜像。最后,使用`docker run`命令启动容器并验证项目运行。此外,文章还提到了将镜像推送到Azure Container Registry (ACR)的步骤。
|
2月前
|
Linux 应用服务中间件 网络安全
linux安装Gitlab
linux安装Gitlab
130 0
|
2月前
|
缓存 数据安全/隐私保护 Docker
安装gitlab
安装gitlab
234 0
|
28天前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。