• 【补充】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命令之前需要添加./

  • 相关阅读:
    XAML中的戏法
    提前预览Visual Studio 2010
    大道至简
    Windows Service下的MessageBox
    WPF中使用Expression Encoder SDK开发流媒体
    使用latex
    [zz]2D动画制作工具比较
    android platform_frameworks_base
    Fast and easy high resolution fractals with a pixel shader
    Bézier Surface
  • 原文地址:https://www.cnblogs.com/xishuai/p/gitlab-ci-yml.html
Copyright © 2020-2023  润新知