zoukankan      html  css  js  c++  java
  • 【补充】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命令之前需要添加./

  • 相关阅读:
    动态数据源切换
    Disconf实践指南:改造篇
    Disconf实践指南:使用篇
    Disconf实践指南:安装篇
    执行Git命令时出现各种 SSL certificate problem 的解决办法
    linux rz 乱码
    分布式配置项管理-开源方案预研究
    mac下mysql5.7.18修改root密码
    git 版本回滚
    关于@Autowired使用注意点
  • 原文地址:https://www.cnblogs.com/xishuai/p/gitlab-ci-yml.html
Copyright © 2011-2022 走看看