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

news2024/12/28 20:33:03

前置内容:

通过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 = 2
  token = "glrt-7pL3bomipxamUt8rCBhW"
  token_obtained_at = 2024-04-30T02:04:00Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:23.0.2"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
    network_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
  - deploy


build:
  stage: build
  script:
    - docker build -f "./EShop.WebApi/Dockerfile" -t eshop.webapi:latest .
  only:
    - main  


deploy:
  stage: deploy
  script:
    - 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:latest
  only:
    - 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.coloradmin.cn/o/1657242.html

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

相关文章

达梦数据刷盘测试

达梦数据库为了保证数据故障恢复的一致性,REDO 日志的刷盘必须在数据页刷盘之前进行。 下面我们通过测试来验证是不是这样 执行我们事先准备的SHELL脚本 可以看到第一次strings文件没有输出,说明刚写的数据在数据库的BUFFER缓冲区内,还没有刷…

【C++】学习笔记——stack和queue

文章目录 九、stack和queue1. stack和queue的介绍2. stack和queue的使用3. stack和queue的模拟实现4. deque的简单了解 未完待续 九、stack和queue 1. stack和queue的介绍 stack 就是我们常说的 栈 ,而 queue 就是 队列 。栈就是 后进先出 的数据结构,队…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中,通过命令行的方式,快速、方便安装适用于Linux的Windows子系统(Windows Subsystem for Linux,WSL)的方法。 WSL是由微软开发的一项功能,允许在Windows操作系统上运行Linux发行版系统…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought(CoT) prompting 的方法通过结合 few-show prompt 的思路,让 LLM 能够挑战更具…

Re_Lasso

from sklearn.linear_model import LassoCV, Lasso import pandas as pd from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score from sklearn.model_selection import GridSearchCV# 读取数据…

极市平台 | 一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝)

本文来源公众号“极市平台”,仅用于学术分享,侵权删,干货满满。 原文链接:一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝) 作者丨Feiyang Chen等 来源丨AI生成未来 编辑丨极市平台 0 极市导读 本研究…

(24)实时采集微信消息(基于独立窗体)-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) Q Q | 978124155 往期知识回顾 (1)开启探索微信自动化之路-微信UI自动化(.NetC#) (2)初始化微信窗体UI自动化实例-微信UI自动化(.NetC#) (3)采用热键终止微信采集任务-微信UI自动…

Linux网络部分——SSH远程访问及控制

目录 一、配置OpenSSH服务端【☆】 1. ssh服务端配置 vim /etc/ssh/sshd_config 2.客户端连接验证 二、使用SSH客户端程序 1.ssh 远程登录 2.scp 远程复制 3.sftp 安全FTP 三、SSH的验证方式 1. 密钥对验证【☆】 2. 如何实现免密登录 【拓展】免交互创建密钥对和免交…

Docker 安装的MySQL迁移数据库

1. 导出数据库 docker ps :查看数据库对应的 CONTAINER ID docker exec -it id /bin/bash : 进入到mysql的docker实例中 cd /usr/bin : 进入到bin目录 mysqldump -u root -p123456 study > /root/study_backup0509.sql :使用mysqldump备份库,注意密码与-p之间…

Java基于B/S医院绩效考核管理平台系统源码java+springboot+MySQL医院智慧绩效管理系统源码

Java基于B/S医院绩效考核管理平台系统源码javaspringbootMySQL医院智慧绩效管理系统源码 医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服…

win10 远程桌面无法连接,解决Win10远程桌面无法连接问题的方法

Windows 10操作系统中,远程桌面是一项非常实用的功能,它允许用户从另一台设备远程访问和控制另一台计算机。然而,有时候用户可能会遇到Win10远程桌面无法连接的问题。本文将探讨可能导致这个问题的原因,并提供相应的解决方案。 确…

为什么需要归档和管理合同

归档和管理合同是非常重要的,主要有以下几个原因: 1. 法律合规性:公司需要遵守法律和监管要求,合同是法律文件,涉及公司的权益和责任。归档和管理合同可以确保公司遵守法律法规,合同的内容和执行过程都符合…

【异常检测】新版异常检测库anomalib的使用

every blog every motto: There’s only one corner of the universe you can be sure of improving, and that’s your own self. https://blog.csdn.net/weixin_39190382?spm1010.2135.3001.5343 0. 前言 异常检测库anomalib的使用 1. 前提 1.1 数据组织形式 说明&#…

Linux|进程地址空间

Linux|内存地址空间 现象基本概念理解如何理解地址空间什么是划分区域&#xff1f;地址空间的理解为什么要有地址空间&#xff1f;如何进一步理解页表和写时拷贝如何理解虚拟地址 Linux真正的进程调度方案 现象 #include <stdio.h> #include <string.h> #include …

AcWing 4993 FEB

4993. FEB - AcWing题库 大佬亲笔 将原串分成三段&#xff1a; FFF|E.....B|FFF 先合并中间段&#xff0c;再合并两边的段 #include <iostream> #include <cstring> #include <algorithm> #include <string> #include <queue&g…

鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗

ninja | 忍者 ninja是一个叫 Evan Martin的谷歌工程师开源的一个自定义的构建系统,最早是用于 chrome的构建,Martin给它取名 ninja(忍者)的原因是因为它strikes quickly(快速出击).这是忍者的特点,可惜Martin不了解中国文化,不然叫小李飞刀更合适些.究竟有多块呢? 用Martin自…

Fastgpt知识库接入oneapi和自定义大模型

本期教程教大家训练自己的知识库回答chatgpt回答不了的问题 FastGPT 是一个知识库问答系统,可以通过调用大模型和知识库回答特定的问题 可以做成专属 AI 客服集成到现有的APP或者网站内当作智能客服支持网络爬虫学习互联网上的很多知识可以通过flow可视化进行工作流程编排 本期…

Ubuntu20.4中复现Graspness

Ubuntu20.4中复现Graspness 文章目录 Ubuntu20.4中复现Graspness1.安装cuda和cudnn2.安装pytorch3.安装MinkowskiEngine4.编译graspnetAPI5. RuntimeError: "floor" "_vml_cpu" not implemented for IntRefernece &#x1f680;非常重要的环境配置&#x1…

深入理解DNS、ICMP协议与NAT技术:网络世界的三大基石

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统❤ 前言 在网络世界中&#xff0c;数据的传输和交互离不开各种协议和技术的支持。其中&#xff0c;DNS&#xff08;域名系统&am…

1068 万绿丛中一点红

solution 找出满足①像素值唯一&②和相邻像素点色差大于tol 的像素点个数 若唯一&#xff0c;则输出该像素点列、行、像素值&#xff1b;若不唯一&#xff0c;则输出"Not Unique"若无&#xff0c;则输出"Not Exist" 题干和输出中&#xff0c;都是先列…