使用GitLab自带的CI/CD功能在本地部署.Net8项目(二)

前置内容:

通过Docker Compose部署GitLab和GitLab Runner(一)

目录

一、创建代码仓库

二、创建GitLabRunner

三、注册Runner

四、配置Runner,绑定宿主Docker

五、创建.Net8WebApi项目进行测试

六、总结


一、创建代码仓库

在gitlab上创建group和project,例如我们要开发一个新的电商网站,那么group可以取名为:EShop,后端project取名为EShop.WebApi,如图所示为创建完的代码仓库:

二、创建GitLabRunner

基于上面创建的EShop.WebApi项目上设置CI/CD功能:

点击Expand按钮展开之后,点击New Project Runner按钮,进入创建页面,填写tags信息,其他信息可不填写,然后创建runner:

创建成功之后,会跳转到Register Runner详情页面,页面上显示了注册Runner时需要用到的url和token信息,不要关闭该页面

注意:在创建runner的时候忘了勾选"Run untagged jobs",可以继续编辑该runner,然后勾选上这个选项并保存

三、注册Runner

进入gitlab-runner容器内部:

docker exec -it gitlab-runner /bin/bash

在容器内部执行注册命令:

gitlab-runner register

按提示信息填写对应的内容,填写内容解释如下:

URL:上一步创建runner时gitlab给的url;

token:上一步创建runner时gitlab给的token;

name:runner的名称;

executor:构建项目应用方式,我们使用docker;

docker image:docker镜像(含版本信息),runner会利用这个镜像执行docker命令,这里我填写的是docker:23.0.2。

按回车会显示注册成功,如图所示:

这个时候我们会在挂载目录里看到生成的config.toml文件,查看文件内容

cat /opt/store/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
shutdown_timeout = 0[session_server]session_timeout = 1800[[runners]]name = "eshop.webapi-runner"url = "http://192.168.184.200:9080"id = 2token = "glrt-7pL3bomipxamUt8rCBhW"token_obtained_at = 2024-04-30T02:04:00Ztoken_expires_at = 0001-01-01T00:00:00Zexecutor = "docker"[runners.custom_build_dir][runners.cache]MaxUploadedArchiveSize = 0[runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = falseimage = "docker:23.0.2"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = falsevolumes = ["/cache"]shm_size = 0network_mtu = 0

四、配置Runner,绑定宿主Docker

由于我们配置的runner是通过docker执行器来构建我们的应用,而runner本身就是运行在docker中,而docker in docker这种运行方式非常缓慢,所以采用绑定宿主机的docker.sock方式来加快构建速度,这种方式下的所有docker命令都是向宿主机发出,有利有弊,config.toml文件更改如下,添加了runners.docker的挂载目录:

"/var/run/docker.sock:/var/run/docker.sock"

然后重启gitlab-runner容器

docker compose restart gitlab-runner

回到gitlab页面,可以看到EShop.WebApi项目的Runner已经创建成功

五、创建.Net8WebApi项目进行测试

将EShop.WebApi仓库克隆到本地,然后创建一个.Net8 WebApi测试项目,并在仓库代码根目录下添加.gitlab-ci.yml文件

.gitlab-ci.yml文件内容如下:

stages:- build- deploybuild:stage: buildscript:- docker build -f "./EShop.WebApi/Dockerfile" -t eshop.webapi:latest .only:- main  deploy:stage: deployscript:- docker stop EShop.WebApi && docker rm EShop.WebApi || echo "Container EShop.WebApi not found, skipping removal."- docker run -d --name EShop.WebApi -p 9527:80 eshop.webapi:latestonly:- main

我们定义了两个阶段任务build和deploy,在build阶段通过docker构建WebApi镜像,然后在deploy阶段,根据构建出来的WebApi镜像在当前GitLab机器上部署(和GitLab部署在同一台主机上,这种方式肯定不可取,下一篇将介绍远程部署)。

提交代码之后,我们可以在gitlab页面查看CICD过程:

部署成功之后,我们可以在浏览器上访问http://192.168.184.200:9527/WeatherForecast,可以看到接口成功返回内容:

六、总结

对于Runner的创建、注册以及配置都比较简单,多个项目可以共享同一个Runner,也可以创建一个全局的Runner供所有项目使用。.gitlab-ci.yml 文件是 GitLab CI/CD 的核心配置文件,用于定义项目的持续集成和持续交付流程。它使用 YAML 格式,包含了一系列的指令和参数,用于描述构建、测试、部署等任务的执行方式和条件。下一篇文章将介绍通过CI/CD将我们的应用服务部署在远程服务器上。

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

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

相关文章

【Redis7】10大数据类型之Stream类型

文章目录 1. Stream简介2. 生产消息命令(XADD)3. 查询相关命令3.1 获取指定范围内的消息(XRANGE)3.2 逆序获取指定范围内的消息(XREVRANGE)3.3 返回消息的数量(XLEN) 4. 删除消息命令(XDEL)5. 截取消息命令(XTRIM)6. 消费消息命令(XREAD)7. 消费者组管理命令7.1 创建消费者组(X…

考研数学|24像张宇那样的题?李林880和李永乐660不够用了?

以前的卷子就不说了,就说说最近的24年的考研数学题 24年考研数学真题评价: 首先数学二在计算量上超过了数学三,尤其是在高等数学的选择题部分,这使得数学二的难度可能略高于数学三,尽管两者之间并没有本质的差异。与…

【基础绘图】 10.饼图

效果图: 主要步骤: 1. 数据准备:自己赋值的随机数 2. 图像绘制:绘制饼图 详细代码:着急的直接拖到最后有完整代码 步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马&#…

java项目之车辆管理系统(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的车辆管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 车辆管理系统的主要使用者分…

【Unity UI系统介绍】

Unity UI系统介绍 想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程 Unity UI 是 Unity 引擎中的一套用户界面(UI)系统,允许开发者创建和管理游戏的用户界面。 Canvas:Canvas 是 Unity UI 的核心组件…

零基础又怎样?教你这样高效拿下HCIE!

HCIE认证是网络技术领域内权威的认证之一,对于零基础的学员来说,这似乎是一项几乎不可能完成的任务,很多人想转行都望而却步。 然而,只要策略得当,零基础的学员同样可以高效地迈向HCIE的殿堂。 今天就聊聊&#xff0…

CAD绘制3维场景图记录

文章目录 1.给三维体每个面上不同的颜色1.1 软件设置1.2 着色面 2.在长方体上画圆柱体 1.给三维体每个面上不同的颜色 1.1 软件设置 这里必须改为真实,否则之后的面上色只能显示更改了线条颜色 1.2 着色面 如果你菜单栏没有显示,在上面小倒三角那里…

windows@注册表介绍@注册表的查看和编辑操作

文章目录 abstractrefs注册表的主要组件包括根键极其缩写名称👺子键特性 查看注册表👺使用powershell查看路径下的子路径声明概念Get-ChildItem查看注册表路径下的项Set-Location进入注册表路径举例说明查看文件系统某个路径下的项查看某个注册表路径的项…

图和网络笔记

文章目录 1. A X 0 AX0 AX02. A T Y 0 A^TY0 ATY03. A X 0 AX0 AX0和 A T Y 0 A^TY0 ATY0的关系 1. A X 0 AX0 AX0 一个图可以由节点和边组成,假设我们有一个节点notes :n4,边edges:m5的有向图,表示如下 通过以上电路…

Pycharm使用Anaconda虚拟环境

一、前置 安装 Pychram安装 Anaconda,并配置虚拟环境 参考: Anaconda虚拟环境 anaconda虚拟环境pytorch安装 二、在Pycharm中使用Anaconda的虚拟环境 打开 Pycharm的命令行可以看到 Anaconda 的虚拟环境已经启动。 三、问题集合 (1&…

多模态产品在智能文档处理应用的展望------以TextIn模型为例

前言发展现状TextIn 文档解析技术文本向量化展望合合信息 前言 第十四届视觉与学习青年学者研讨会(VALSE 2024)于5月5日-7日在山城重庆渝北区悦来国际会议中心举办。大会聚焦计算机视觉、模式识别、多媒体和机器学习等领域的国际前沿和热点方向。大会中,合合信息智能…

限流算法(令牌桶漏桶计数器)

📝个人主页:五敷有你 🔥系列专栏:Spring⛺️稳中求进,晒太阳 业务重的三种情况:突发流量、恶意流量、业务本身需要 限流: 是为了保护自身系统和下游系统不被高并发流量冲垮,导致系统雪崩…

数据中心--AI时代的“炼油厂”

数据中心正在成为AI时代的“炼油厂”! 众所周知,AI的高歌猛进催生了对数据的海量处理需求。为了满足蓬勃的算力需求,全球开启了新一轮的数据中心建设热潮,数据中心业务正在以指数级的速度疯狂扩张。 此番情景,和第二…

Git系列:git grep 被忽视的操作细节

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

java面试题(常见集合)

算法复杂度分析 时间复杂度分析 时间复杂度分析:来评估代码的执行耗时的 大O表示法:不具体表示代码真正的执行时间,而是表示代码执行时间随数据规模增长的变化趋势 空间复杂度 空间复杂度的全称是渐进空间复杂度,表示算法占用…

webpack5以下的项目,前端引入node的path模块需要额外配置

webpack5以下的项目,前端import * as path from path时需要额外配置,这里以vue.config.js为例 刚开始引入时报错 其实就是在打包前端项目的时候,将path模块替换成 path-browserify 模块,所以还需要安装 path-browserfify 模块 …

【Linux】磁盘文件

思维导图 学习目标 了解磁盘的物理结构和存储结构,并将其存储结构进行抽象!! 一、了解一下磁盘及其物理结构 1.1 计算机只认识二进制 什么是二进制??0,1是被规定出来的,在计算机里面我们用高低…

Excel Module: Iteration #1 EasyExcel生成下拉列表模版时传入动态参数查询下拉数据

系列文章 EasyExcel生成带下拉列表或多级级联列表的Excel模版自定义校验导入数据(修订) 目录 系列文章前言仓库一、实现1.1 下拉元数据对象1.2 构建下拉元数据的映射关系1.3 框架方式1.3.1 框架实现1.3.2 框架用例模版类加载下拉业务导出接口 1.4 EasyExcel方式1.4.1 EasyExce…

灵活QinQ

拓扑图 配置 sysname AR1 # interface GigabitEthernet0/0/0.10dot1q termination vid 10ip address 12.1.1.1 255.255.255.0 arp broadcast enable # interface GigabitEthernet0/0/0.20dot1q termination vid 20ip address 21.1.1.1 255.255.255.0 arp broadcast enable # …

重学SpringBoot3-SPI机制

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-SPI机制 什么是 SPI?Spring Boot 中的 SPI 机制spring.factories 文件自动配置的实现启动流程中的作用 SPI实际应用步骤 1: 新建模块步骤 2:…