【补充】Gitlab 部署 CI 持续集成

上一篇:《劈荆斩棘:Gitlab 部署 CI 持续集成

上一篇所配置的.gitlab-ci.yml

stages:
  - build
  - test

before_script:
  - echo "Restoring NuGet Packages..."
  - C:NuGet
uget.exe restore "srcCNBlogsCI-Sample.sln"
  only:
  - master

build_job:
  stage: build
  script:
  - echo "Release build..."
  - C:WindowsMicrosoft.NETFramework64v4.0.30319msbuild.exe /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "srcCNBlogsCI-Sample.sln"
  except:
  - tags
  only:
  - master

test_job:
  stage: test
  script:
  - echo "Tests run..."
  - C:xunit.runner.console	oolsxunit.console.exe "srcClassLibrary2indebugClassLibrary2.dll"
  - C:xunit.runner.console	oolsxunit.console.exe "srcClassLibrary3indebugClassLibrary3.dll"
  only:
  - master

有几个问题:

  • before_script要执行两次。
  • C:NuGet uget.exe写死路径的写法不可取。
  • test_job需要上传debug中的dll文件。

对于上面的问题,完善如下:

stages:
  - build

build_job:
  stage: build
  script:
  - echo "Restoring NuGet Packages..."
  - nuget restore "srcCNBlogsCI-Sample.sln"
  - echo "Release build..."
  - msbuild /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "srcCNBlogsCI-Sample.sln"
  - echo "Tests run..."
  - xunit.console "srcClassLibrary2indebugClassLibrary2.dll"
  - xunit.console "srcClassLibrary3indebugClassLibrary3.dll"
  except:
  - tags
  only:
  - master

nugetmsbuildxunit.console命令都需要添加环境变量,为什么要去除before_scripttest_job?因为每执行一个jobgit都需要Fetching changes...,所以会清除不受git版本控制的文件。

还有就是,对于上面的第三个问题,因为msbuildRelease模式生成,而我们testdebug dll,所以就必须上传文件,我们把test中的debug改为Release就可以了。

我们可以把nugetmsbuildxunit.console独立出批命令实现。

restore.cmd

echo "NuGet Sources List..."
nuget Sources List
echo "Restoring NuGet Packages..."
nuget restore "srcCNBlogsCI-Sample.sln"

build.cmd

echo "Release build..."
msbuild /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "srcCNBlogsCI-Sample.sln"

test.cmd

echo "Tests run..."
xunit.console "srcClassLibrary2inReleaseClassLibrary2.dll"
xunit.console "srcClassLibrary3inReleaseClassLibrary3.dll"

.gitlab-ci.yml

stages:
  - build

build_job:
  stage: build
  script:
  - ./restore.cmd
  - ./build.cmd
  - ./test.cmd
  except:
  - tags

script中的cmd命令之前需要添加./

原文地址:https://www.cnblogs.com/xishuai/p/gitlab-ci-yml.html