使用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 = 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将我们的应用服务部署在远程服务器上。

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用GitLabCI/CD功能,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了GitLab Runner。你可以使用以下命令来安装GitLab Runner: ``` curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo yum install gitlab-runner ``` 如果你在Ubuntu系统上使用,请使用`apt-get`命令来安装。 2. 安装完成后,你可以使用`gitlab-runner -v`命令来验证安装是否成功,并查看GitLab Runner的版本号。 3. 接下来,你需要将GitLab Runner注册到GitLab CI/CD Coordinator上。在终端中输入以下命令: ``` gitlab-runner register ``` 在提示中,你需要提供GitLab CI/CD Coordinator的URL(例如https://gitlab.com/),以及访问权限验证的Token。 4. 注册成功后,你可以配置`.gitlab-ci.yml`文件来定义CI/CD的流程。这个文件包含了一系列的任务(jobs)和阶段(stages),你可以根据自己的项目需求进行配置。具体的语法和配置参考可以在GitLab官方文档中找到。 5. 当你的代码提交到GitLab仓库时,GitLab CI/CD会自动触发流水线(pipeline)的执行。流水线中的任务会按照`.gitlab-ci.yml`文件中定义的顺序和规则进行执行。 总结:要使用GitLabCI/CD功能,你需要先安装GitLab Runner,并将其注册到GitLab CI/CD Coordinator上。然后,在项目中配置`.gitlab-ci.yml`文件来定义CI/CD流程。最后,当代码提交到GitLab仓库时,GitLab CI/CD会自动执行流水线中的任务。详细的使用方法和配置参考可以查阅GitLab官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值