GitLab CI是GitLab自带的CI功能,可以通过 .gitlab-ci.yaml
文件来配置其进行的任务,这里,我尝试通过其来进行C#项目的编译测试等任务。
首先要配置Gitlab-Runner,Gitlab-Runner用来执行任务并返回执行结果。由于我希望能够用来编译多目标的C#项目,所以,我这里采用了Windows系统作为Gitlab-Runner的环境,也没有采用常用的Docker方式。
前往 https://docs.gitlab.com/runner/install/ 下载Windows版本的Gitlab-Runner,我将其放在D:\GitLab-Runner
下,然后在该目录下执行 ./gitlab-runner.exe register
,按照提示依次输入gitlab的网址、token等信息,在 executor
这里选择 shell
方式。
然后依次执行 ./gitlab-runner.exe install
和 ./gitlab-runner.exe start
,安装服务并启动服务。Gitlab-Runner的配置就完成了。
接下来需要安装编译所需的环境。这里我采用.Net Core SDK来进行编译,其可以用来编译.Net Framework和.Net Core的项目。但在这里,我遇到了一个小坑,编译时,需要安装对应.Net Framework版本的目标包,我项目使用的.net 4.0微软并没有提供对应版本的目标包,只能通过Visual Studio来安装。不过安装Visual Studio时,只需要安装目标包即可,不需要安装对应的工作负载。
现在,环境已经配置完成,接下来在项目中添加 .gitlab-ci.yaml
文件。文件的内容如下:
stages:
- build
- test
build:
stage: build
script:
- ".\\build.bat"
test:
stage: test
script:
- ".\\test.bat"
push:
stage: push
only:
- master
script:
- ".\\pack.bat"
- ".\\push.bat"
首先,定义了三个阶段,接下来依次定义三个阶段要执行的任务,我将他们分别写在了几个bat当中,push
这一阶段是我自己额外定义用来将编译出来的包发布的任务。这一阶段也采用了only
来限定,只对master
分支执行这一任务。
build.bat
与test.bat
中的内容比较简单,主要是 dotnet build
和 dotnet test
。
整个流程大概就是这样,可以通过设置不同的脚本来指定自己项目中额外需要的操作。