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

简介:
+关注继续查看
stages:
  - build
  - test

before_script:
  - echo "Restoring NuGet Packages..."
  - C:\NuGet\nuget.exe restore "src\CNBlogsCI-Sample.sln"
  only:
  - master

build_job:
  stage: build
  script:
  - echo "Release build..."
  - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "src\CNBlogsCI-Sample.sln"
  except:
  - tags
  only:
  - master

test_job:
  stage: test
  script:
  - echo "Tests run..."
  - C:\xunit.runner.console\tools\xunit.console.exe "src\ClassLibrary2\bin\debug\ClassLibrary2.dll"
  - C:\xunit.runner.console\tools\xunit.console.exe "src\ClassLibrary3\bin\debug\ClassLibrary3.dll"
  only:
  - master

有几个问题:

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

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

stages:
  - build

build_job:
  stage: build
  script:
  - echo "Restoring NuGet Packages..."
  - nuget restore "src\CNBlogsCI-Sample.sln"
  - echo "Release build..."
  - msbuild /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "src\CNBlogsCI-Sample.sln"
  - echo "Tests run..."
  - xunit.console "src\ClassLibrary2\bin\debug\ClassLibrary2.dll"
  - xunit.console "src\ClassLibrary3\bin\debug\ClassLibrary3.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 "src\CNBlogsCI-Sample.sln"

build.cmd

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

test.cmd

echo "Tests run..."
xunit.console "src\ClassLibrary2\bin\Release\ClassLibrary2.dll"
xunit.console "src\ClassLibrary3\bin\Release\ClassLibrary3.dll"

.gitlab-ci.yml

stages:
  - build

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

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






本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/gitlab-ci-yml.html,如需转载请自行联系原作者

相关文章
|
1月前
|
Kubernetes Java 网络安全
GitLab CI构建SpringBoot-2.3应用
SpringBoot应用提交到GitLab后,会自动构建成docker镜像,甚至自动部署在K8S环境
GitLab CI构建SpringBoot-2.3应用
|
1月前
|
测试技术 Shell 持续交付
提升开发效率之利用GitLab CI/CD打包Android项目
提升开发效率之利用GitLab CI/CD打包Android项目
|
3月前
|
安全 Shell 持续交付
Gitlab CI/CD
Gitlab CI/CD
54 0
|
3月前
|
监控 测试技术 持续交付
构建自动化部署流水线:GitLab CI/CD的实践指南
在现代软件开发中,快速且可靠地交付软件是至关重要的。为了实现这一目标,构建自动化部署流水线成为一种常见的实践方法。本文将介绍如何使用GitLab CI/CD来构建自动化部署流水线,以提高开发团队的效率和软件交付质量。
571 0
|
4月前
|
存储 缓存 运维
Gitlab CI 小试牛刀
前言 前端工程化中 CI 是必不可少的一环,大家的团队中或多或少都有不同的 CI 能力,有的可能由运维同学使用 JIRA 配置(前司),更多的相信已经迁移到 Gitlab 到 CI/CD 中。那么今天就来聊聊什么是 CI 以及如何在 Gitlab 中配置 CI 能力。
|
5月前
|
存储 Ubuntu Java
还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!
还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!
|
8月前
|
Java jenkins Linux
Linux系统:第十五章:gitlab集成CI
Linux系统:第十五章:gitlab集成CI
102 0
Linux系统:第十五章:gitlab集成CI
|
8月前
|
Java Shell 测试技术
GitLab CI + Docker 持续集成操作手册
GitLab CI + Docker 持续集成操作手册
GitLab CI + Docker 持续集成操作手册
|
9月前
|
负载均衡 jenkins Java
CI/CD之Jenkins+Gitlab(五)
CI/CD之Jenkins+Gitlab(五)
142 0
CI/CD之Jenkins+Gitlab(五)
|
9月前
|
jenkins 应用服务中间件 持续交付
CI/CD之Jenkins+Gitlab(四)
CI/CD之Jenkins+Gitlab(四)
118 1
CI/CD之Jenkins+Gitlab(四)
相关产品
云迁移中心
推荐文章
更多