MSBuild를 통한 GiitHub Actions 구축
12859 단어 C++GitHub ActionsCIMS Buildtech
C++ 프로젝트 등 Windows에서 구축해야 하는 장면에서 활약할 것이다.또한, 예를 들어vcpkg를 사용하려면 Windows에도 msbuild이 필요합니다.
Windows GiitHub 호스트 주자 정보
GiitHub Actions의 장점 중 하나는 Windows 주자의 충실성이라고 생각한다.
Visual Studio의 설치 구조는 전체 섀시에 가깝고 다양한 용도에 적합해야 합니다.내가 알기로는 이전에 이것을 만족시켰던 것은 무료AppVeyor뿐이었지만[1]는 아마도 GiitHub Actions의 안내였을 것이다.AppVeyor가 가장 고민하는 퀘스트 시작 전 지연[2]과도 작별을 고했다.
Windows 환경을 사용하는 CI는 그다지 성행하지 않는다는 인상을 주지만 앞으로 확대될 것으로 기대돼 다음과 같다.
microsoft/setup-msbuild
로컬 환경에서도 마찬가지이지만, 보통 PATH가 통과하지 않기 때문에 명령 알림에서 msbuild을 직접 실행할 수 없습니다.본 보도는 아래의 소개로 끝난다.
조금 오래된 기사에 사용된 것들warrenbuckley/Setup-MSBuild은 곳곳에서 볼 수 있는데, 지금은 마이크로소프트 공식적으로 준비한 이걸로 할게요.
name: MSBuild
on:
pull_request:
types: [synchronize, opened]
jobs:
build:
runs-on: windows-2019
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Add msbuild to PATH
uses: microsoft/setup-[email protected]
- run: |
msbuild -version
동작 로그의 출력 예.Microsoft (R) Build Engine version 16.8.3+39993bd9d for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
16.8.3.61104
msbuild 사용 예: OpenCV 구축
기쁘고 축하스럽고/그렇게 짧은데, 내가 사용했던 예도 소개하면 끝이야.
OpenCV는 GiitHub Actions의 Windows 주자가 구축했다.
OpenCV를 향한 특별한 말이 많아졌지만, 에센스는 다른 곳에서도 사용할 수 있다고 생각합니다.
플랫폼별 실행
OpenCV 구축에는 상당한 시간이 소요되기 때문에 타겟 플랫폼
x64
과 평행x86
하면 더욱 효과적이다.GiitHub Actions에서 사용matrix은 한 가지 방법입니다.jobs:
build:
strategy:
matrix:
arch: ["x86", "x64"]
runs-on: windows-2019
steps:
...
의존 라이브러리 준비
vcpkg 가져오기 의존 라이브러리(Tesseract)[3]는 Visual Studio 포인트도 유효합니다.위에서 말한 바와 같이 vcpkg에서는 msbuild을 사용하고 PATH를 통과한 후에 진행한다.
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Server-Media-Foundation
shell: powershell
run: |
Install-WindowsFeature Server-Media-Foundation
- name: Add msbuild to PATH
uses: microsoft/setup-[email protected]
- name: Vcpkg
run: |
vcpkg install tesseract:${{matrix.arch}}-windows-static
vcpkg integrate install
CMake, MSBuild
cmake는 윈도 주자 중에서도 도입했기 때문에 바로 사용할 수 있다.cmake의 옵션은 주제가 아니기 때문에 생략했습니다. (실제로는 40~50줄 정도입니다.)OpenCV에 대한 소스 코드도 생략했습니다.
- name: CMake
shell: powershell
run: |
if (${{matrix.arch}} -eq "x64") {
$msbuildPlatform = "x64"
} else {
$msbuildPlatform = "Win32"
}
$buildDirectory = "build_win_${{matrix.arch}}"
mkdir $buildDirectory -Force -ErrorAction Stop | Out-Null
cd $buildDirectory
cmake -G "Visual Studio 16 2019" `
-A $msbuildPlatform `
-D CMAKE_BUILD_TYPE=Release `
-D CMAKE_INSTALL_PREFIX=install `
-D BUILD_SHARED_LIBS=OFF `
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules `
../opencv
- name: MSBuild
run: |
cd build_win_${{matrix.arch}}
msbuild INSTALL.vcxproj /t:build /p:configuration=Release /p:platform=$msbuildPlatform -maxcpucount
구문 출력을 그림자로 저장하기
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: artifacts_win-${{matrix.arch}}
path: build_win_${{matrix.arch}}/install
끝말
microsoft/setup-msbuild MSBuild를 사용할 수 있습니다.
CircleaCI는 얼마 전에 됐는데 좀 약해 보여요.https://circleci.com/docs/ja/2.0/hello-world-windows/#windows- 이미지에 사전 설치된 소프트웨어 ↩︎
이처럼 Windows 주자에 대한 투자에 열심인 것은 아마도 GiitHub이 마이크로소프트가 된 영향일 것이다.↩︎
CI에서 vcpkg을 사용하면 본래 주의해야 한다.지아이허브 주자의 업데이트 vcpkg도 업데이트되고, vcpkg의 각 포장도 업데이트되면서 큰 버전이 바뀐 어느 날부터 갑자기 문제가 생겼을지도 모른다.↩︎
Reference
이 문제에 관하여(MSBuild를 통한 GiitHub Actions 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/shimat/articles/d9ed0345c9866e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)