Gitlab CI\CD步骤

本文详细介绍如何在GitLab上配置CI/CD流程,包括权限设置、Runner注册及使用、CI/CD配置文件编写等关键步骤,适用于.NET Core项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GItLab提供了CI/CD持续集成的功能,为了提升效率研究一下如何使用。

 

首先,对一个项目设置CI/CD配置,是需要对应权限的。这是Gitlab上,CI/CD的权限表。

配置CI/CD需要是项目的Maintainer或者Admin。

ActionGuest, ReporterDeveloperMaintainerAdmin
See commits and jobs
Retry or cancel job 
Erase job artifacts and trace ✓ 5
Remove project  
Create project  
Change project configuration  
Add specific runners  
Add shared runners   
See events in the system   
Admin interface   

 

在确保自己的权限足够时,我们进入到下一步。

 

为了模拟现实环境,我们需要使用到至少两台主机。

一台是Gitlab的主机,不想折腾也可以直接到GitLab的官网注册一下就行。

另一台可以是自己的主机,可以是虚拟机,也可以是vps,只要可以联网就行。

主机环境
ubuntu server 1台GitLab搭建
ubuntu desktop 1台

GitLab-runner等

我手上这两台主机,搭建GitLab的是同事搭建完的,只需要完整安装GitLab以及一些依赖项即可。

另一台是ubuntu desktop 16.04,下面开始实际操作阶段。

安装环境

  1. 首先我们要安装的是sdk,这一步,请按自己的需求安装,我这里安装的是dotnet sdk,按照官方文档一步一步进行ubuntu 相关sdk的安装即可。
  2. 安装zip(可选)
  3. docker(可选)
  4. GitLab-Runner(按官方文档安装)
  5. tcl
  6. expect(5.6的作用是写脚本,expect是基于tcl的,可选)

注册Runner

Gitlab-Runner 我的理解是可以把一台主机变成一个角色,它可以根据你定义好的配置文件,帮你完成每次都需要完成的重复工作,比如测试、构建、发布等。当你提交代码时,可以触发runner自动完成工作,减少不必要的工作。

 

我们以专用runner为例。

在ubuntu命令行里面输入

gitlab-runner register

1.提示你输入url。这个url在所需要设置runner的项目页面的settings-CI/CD-Runners settings里面。

输入图中步骤2的地址。

2.输入token令牌

输入上图中步骤3提供的令牌。

3.输入描述

这一步就自己随便填写了,可以填主机名之类的。

4.输入tag

这里同样可以随意填写。

5.输入脚本

这边我选择的是shell。

 

注册完成以后,输入命令

gitlab-runner run

让runner run起来。不然在代码提交更新后,会提示当前的流水线stucked。

 

配置CI/CD

在项目页面中,可以新建文件来实现文件的添加。

 

选择tpye为.gitlab-ci.yml

接着后面会提供语言选择,可以选择自己使用的语言,会根据语言生成范例文本。此处,我也提供一个流程文本的范例。

stages:
- build
- deploy
- trans

build_job:
  stage: build
  script:
    - cd $(dirname $0); pwd
    - dotnet build
  only:
    - cicd_test

deploy_job:
  stage: deploy
  script:
    - dotnet publish -c release -o /home/dev/CICD
  only:
    - cicd_test
    
trans_job:
  stage: trans
  script:
    - cd /home/dev/expect
    - ./scp.sh
  only:
    - cicd_test

这里有三个stage,每个stage可以创建对应的job(不可少)。

在job中script是具体执行的Runner所在环境的命令。至于能执行什么样的命令,就根据Runner所在的系统环境决定。

下面我解释下示例流程文本的意思。

首先三个stage:

build、deploy、trans

这三个stage会依次执行。

上一个stage执行完成后,才会进入到下一个stage。

第一个stage:build

这个stage所对应的job就是build_job。

在build_job中

stage中写的就是所对应的stage名称。

script中写的就是Runner所执行的命令。在build_job中,这里执行的命令是CD到当前目录下。因为我测试用的是.net core项目。所以,下一步执行的是dotnet build,等待执行完成。到这一步,build的流程算是走完了。

build执行完下面就是deploy。

第二个stage:deploy

在这个步骤中,我使用的命令是:dotnet publish -c release -o /home/dev/CICD。这一句的意思就是,以release版本的形式发布并输出到/home/dev/CICD这个目录下。执行完成后进入到下一个步骤。

第三个stage:trans

在这里,我CD到/home/dev/expect目录下,执行了scp.sh的脚本。

scp脚本的内容是:

spawn scp -r /home/dev/CICD/ dev@123.123.123.123:/C:/
expect {
        "*password:" {send "123456\r"}
        }
expect eof

这是一个linux通过scp传输文件的脚本,通过脚本直接把CICD目录下的文件传输到ip地址为123.123.123.123的机器的C盘下(这里123这台机器是一台windows server),通过这一步,我可以直接把编译好的发布完成的文件传输到IIS对应的目录下,方便实现跨系统传输。ssh的方式对我来说比较麻烦,有条件的朋友可以选用。expect脚本在这里的意义就是当需要输入密码的时候输入“123456”这样的密码。(windows端需要使用BvSshServer软件来配合。)文件传输完成。这一个stage也就完成了。

到这里,三个步骤完成。可以在项目的流水线中看到每个步骤的执行情况,是否错误什么样的错误(执行失败会发邮件通知)。在项目的CICD设置当中,可以设置如何触发Runner,比如提交后触发这样的,也可以在流水线的schedule中配置计划,每月每周每天几时执行。

配置好流程文件以后提交完代码之后就不再需要手动部署程序了。当然,也可以通过配置参数命令的形式,完成更多的操作,比如对程序的单元测试等,以便节省出时间做很多别的工作。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值