GitLab의 Windows VM을 사용하여 Windows Form App ( .NET Framework )의 CI [빌드 테스트]

소개



아무래도! 생산 기술부의 엔지니어입니다. GitLab 공식 블로그 2020.01.21에 따르면, Windows Shared Runners 베타 버전을 사용할 수 있다는 사실을 실제로 시도했습니다. 베타판이라고 하는 것으로 앞으로 개선되어 갈 것이라고 생각합니다만, 우선은 빌드, 테스트가 다닌 것에 기쁘게 생각합니다. CI 결과는 다음과 같습니다.
  • 빌드 결과
  • 테스트 결과

  • 환경


  • GitLab Enterprise Edition : 13.3.0-pre
  • Microsoft Visual Studio Community 2019 : 16.7.1

  • 전제 조건



    Visual Studio의 도입 및 프로젝트의 작성이 실시된 것.
  • Visual Studio에서 C#을 사용하여 Windows Forms 앱 만들기
  • Windows Forms 응용 프로그램 단위 테스트를 만드는 방법

  • GitLab 프로젝트 만들기



    GitLab -> New project -> Create From template -> .NET Core 템플릿으로 만듭니다.


    리포지토리에 만든 Visual Studio 프로젝트 추가


  • 파일 구성은 GitLab에서 복제한 템플릿에 Visual Studio 프로젝트를 그대로 붙여넣었습니다.
  • 테스트는 Tests 디렉토리를 만들고 아래에 테스트용 프로젝트를 추가했습니다.

  • .gitignore은 gitignore.io의 Visual Studio 용 템플릿으로 대체되었습니다.



  • .gitlab-ci.yml 추가


  • 공식 블로그의 참고예에 대해서 script 부분을 추기했습니다.

  • .Net Framework 및 MSBuild와 같은 도구은 Windows VM에 미리 설치되어 있으므로 경로 나 실행 방법을 잘못하지 않으면 설치없이 실행할 수 있습니다.
  • 경로에 공백이 포함되어 있기 때문에 더블 쿼트로 묶고 PowerShell에서 EXE를 실행하기 위해 머리에 &를 붙입니다.
  • 테스트 스크립트는 테스트에 사용할 패키지를 추가, 빌드 및 테스트를 실행합니다.
  • 참고 : vstest.console.exeMicrosoft 공식 경로를 시도했지만 Windows VM의 CommonExtensions에서 vstest.console.exe를 찾을 수 없습니다. 그리고 나왔기 때문에 Extensions의 것을 사용하도록 경로를 변경하고 있습니다.

  • .gitlab-ci.yml
    .shared_windows_runners:
      tags:
      - shared-windows
      - windows
      - windows-1809
    
    stages:
      - build
      - test
    
    before_script:
     - Set-Variable -Name "time" -Value (date -Format "%H:%m")
     - echo ${time}
     - echo "started by ${GITLAB_USER_NAME}"
    
    build:
      extends:
      - .shared_windows_runners
      stage: build
      script:
      - '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" UVWCalibrator.csproj'
    
    test:
      extends:
      - .shared_windows_runners
      stage: test
      script:
      - '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" -t:restore'
      - '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" Tests\UVWCalibratorTests\UVWCalibratorTests.csproj'
      - '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" Tests\UVWCalibratorTests\bin\Debug\UVWCalibratorTests.dll'
    
    

    참고: 패키지 복원



    Windows Form 프로젝트는 위의 ci가 제대로 작동하지 않습니다. 테스트는 MSTest.TestAdapter와 MSTest.TestFramework의 두 가지 패키지를 사용하기 때문에 MSBuild.exe -t:restore를 실행하고 있지만 설치가 필요한 패키지를 찾을 수 없게 종료됩니다. VisualStudio2017 이상의 프로젝트를 MSBuild에서 NuGet 패키지 복원 , 에 따라 설정하면 잘 움직이게 됩니다. 올바르게 설정하면 솔루션 탐색기 참조에 추가할 수 있습니다.



    마지막으로



    이것으로 설정이 완료되었습니다. 수고하셨습니다. Windows의 CI/CD는 하기 어려운 부분이 많았습니다만, 이러한 Windows VM은, 향후의 개발 효율에 크게 공헌할 것이라고 생각하고 있습니다.

    좋은 웹페이지 즐겨찾기