Skip to content

Commit

Permalink
Update windows ci splitting msvs to separate workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
jhmgoossens committed Apr 11, 2024
1 parent 408c311 commit 1251775
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 43 deletions.
45 changes: 2 additions & 43 deletions .github/workflows/windows-ci.yml
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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' )
Expand Down
113 changes: 113 additions & 0 deletions .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

0 comments on commit 1251775

Please sign in to comment.