From d8ee9e6b19119cd7438873e5af3b3d85389e2628 Mon Sep 17 00:00:00 2001 From: Jan-Willem Goossens Date: Thu, 11 Apr 2024 20:24:12 +0200 Subject: [PATCH] Update windows ci splitting msvs to separate workflow --- .github/workflows/windows-ci.yml | 45 +--------- .github/workflows/windows-msvs-ci.yml | 113 ++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/windows-msvs-ci.yml diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 7ff1c551..a1d41380 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -24,7 +24,6 @@ jobs: { os: windows-2019, arch: x86_64, msystem: mingw64, debug: false, suffix: "" }, { os: windows-2019, arch: msvc, msystem: mingw64, debug: false, suffix: "-md" }, { os: windows-2022, arch: msvc, msystem: mingw64, debug: false, suffix: "-md" }, - { os: windows-2022, arch: msvs, msystem: mingw64, debug: false, suffix: "" }, ] steps: - name: Checkout source @@ -39,11 +38,8 @@ jobs: - name: Set up msvc if: ${{ matrix.arch == 'msvc' }} uses: ilammy/msvc-dev-cmd@v1 - - name: Set up for msvs - if: ${{ matrix.arch == 'msvs' }} - uses: microsoft/setup-msbuild@v2 - name: Set correct host flag and install requirements - if: ${{ matrix.arch != 'msvc' && matrix.arch != 'msvs' }} + if: ${{ matrix.arch != 'msvc' }} run: | echo "host_flag=--host=${{ matrix.arch }}-w64-mingw32" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append C:\msys64\usr\bin\pacman -S mingw-w64-${{ matrix.arch }}-lapack mingw-w64-${{ matrix.arch }}-winpthreads-git mingw-w64-${{ matrix.arch }}-readline mingw-w64-${{ matrix.arch }}-suitesparse mingw-w64-${{ matrix.arch }}-metis --noconfirm @@ -57,44 +53,7 @@ jobs: zip path-type: inherit msystem: ${{ matrix.msystem }} - - name: Fetch project for msvs - if: ${{ matrix.arch == 'msvs' }} - run: | - ADD_ARGS=() - ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' ) - ./coinbrew/coinbrew fetch ${{ github.event.repository.name }} --skip-update "${ADD_ARGS[@]}" - echo "##################################################" - echo "### Extracting Netlib and Miplib3 if available" - if [ -d "./Data/Netlib/" ]; then gunzip ./Data/Netlib/*.gz; fi - if [ -d "./Data/Miplib3/" ]; then gunzip ./Data/Miplib3/*.gz; fi - echo "##################################################" - shell: msys2 {0} - - name: Build project for msvs - if: ${{ matrix.arch == 'msvs' }} - shell: cmd - run: | - msbuild ${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ github.event.repository.name }}.sln /p:Configuration=Release /p:Platform=x64 /m - - name: Test project for msvs - if: ${{ matrix.arch == 'msvs' }} - shell: cmd - run: | - .\${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ github.event.repository.name }}Test.cmd .\${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\x64\Release .\Data\Sample .\Data\Netlib .\Data\Miplib3 - - name: Install project for msvs - if: ${{ matrix.arch == 'msvs' }} - shell: cmd - run: | - mkdir dist - copy ${{ github.event.repository.name }}\README.* dist\. - copy ${{ github.event.repository.name }}\AUTHORS.* dist\. - copy ${{ github.event.repository.name }}\LICENSE.* dist\. - mkdir dist\bin - copy ${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\x64\Release\*.exe dist\bin\. - mkdir dist\share - if exist .\Data\Sample xcopy .\Data\Sample dist\share\coin-or-sample /i - if exist .\Data\Netlib xcopy .\Data\Netlib dist\share\coin-or-netlib /i - if exist .\Data\Miplib3 xcopy .\Data\Miplib3 dist\share\coin-or-miplib3 /i - - name: Build project using coinbrew - if: ${{ matrix.arch != 'msvs' }} + - name: Build project run: | ADD_ARGS=() ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' ) diff --git a/.github/workflows/windows-msvs-ci.yml b/.github/workflows/windows-msvs-ci.yml new file mode 100644 index 00000000..e132003d --- /dev/null +++ b/.github/workflows/windows-msvs-ci.yml @@ -0,0 +1,113 @@ +--- +name: Windows MSVS build and test +on: + push: + branches: + - 'master' + - 'stable/*' + pull_request: + branches: + - '**' + release: + types: + - created + +jobs: + test: + name: Run tests + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: [ + # Only os: windows-2022 has Visual Studio 2022 (v17) installed with toolset v143, which is required. + # configuration: "Release" or "Debug", platform: "x86" or "x64". See solution Configuration Manager. + { os: windows-2022, configuration: "Release", platform: "x64" }, + ] + steps: + - name: Set up environment variables + shell: cmd + # For cmd, dont use double quotes in the echo command and dont put a space before >> %GITHUB_ENV% + run: | + if "${{ matrix.platform }}"=="x64" echo output_dir=x64\${{ matrix.configuration }}>> %GITHUB_ENV% + if "${{ matrix.platform }}"=="x86" echo output_dir=${{ matrix.configuration }}>> %GITHUB_ENV% + echo package_suffix=${{ matrix.os}}-msvs-v17-${{ matrix.configuration }}-${{ matrix.platform }}>> %GITHUB_ENV% + - name: Check environment variables + shell: cmd + run: | + echo Output directory - '${{ env.output_dir }}' + echo Package suffix - '${{ env.package_suffix }}' + if "${{ env.output_dir }}"=="" echo ERROR - No output_dir set, possibly unsupported platform '${{ matrix.platform }}'. Expecting x64 or x86. && exit 1 + - name: Checkout source + uses: actions/checkout@v4 + with: + path: ${{ github.event.repository.name }} + - name: Checkout coinbrew + uses: actions/checkout@v4 + with: + repository: coin-or/coinbrew + path: coinbrew + - name: Set up msbuild + uses: microsoft/setup-msbuild@v2 + - name: Set up msys for coinbrew + uses: msys2/setup-msys2@v2 + with: + update: true + install: >- + base-devel + git + zip + path-type: inherit + msystem: mingw64 + - name: Fetch project + run: | + ADD_ARGS=() + ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' ) + ./coinbrew/coinbrew fetch ${{ github.event.repository.name }} --skip-update "${ADD_ARGS[@]}" + echo "##################################################" + echo "### Extracting Netlib and Miplib3 if available" + if [ -d "./Data/Netlib/" ]; then gunzip ./Data/Netlib/*.gz; fi + if [ -d "./Data/Miplib3/" ]; then gunzip ./Data/Miplib3/*.gz; fi + echo "##################################################" + shell: msys2 {0} + - name: Build project + shell: cmd + run: | + msbuild ${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ github.event.repository.name }}.sln /p:Configuration=Release /p:Platform=x64 /m + - name: Test project + shell: cmd + run: | + .\${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ github.event.repository.name }}Test.cmd .\${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ env.output_dir }} .\Data\Sample .\Data\Netlib .\Data\Miplib3 + - name: Install project + shell: cmd + run: | + mkdir dist + copy ${{ github.event.repository.name }}\README.* dist\. + copy ${{ github.event.repository.name }}\AUTHORS.* dist\. + copy ${{ github.event.repository.name }}\LICENSE.* dist\. + mkdir dist\bin + copy ${{ github.event.repository.name }}\${{ github.event.repository.name }}\MSVisualStudio\v17\${{ env.output_dir }}\*.exe dist\bin\. + mkdir dist\share + if exist .\Data\Sample xcopy .\Data\Sample dist\share\coin-or-sample /i + if exist .\Data\Netlib xcopy .\Data\Netlib dist\share\coin-or-netlib /i + if exist .\Data\Miplib3 xcopy .\Data\Miplib3 dist\share\coin-or-miplib3 /i + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ github.event.repository.name }}-${{ env.package_suffix }} + path: dist + if-no-files-found: error + - name: Zip up dist contents for release + if: ${{ github.event_name == 'release'}} + run: cd dist && zip -r ../release.zip * + shell: msys2 {0} + - name: Upload package to release + if: ${{ github.event_name == 'release'}} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./release.zip + asset_name: ${{ github.event.repository.name }}-${{ github.event.release.tag_name }}-${{ env.package_suffix }}.zip + asset_content_type: application/gzip