Gitlab CI 编译 C#项目

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.battest.bat中的内容比较简单,主要是 dotnet builddotnet test

整个流程大概就是这样,可以通过设置不同的脚本来指定自己项目中额外需要的操作。

Posted in C#

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据