Develop #502
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# CI workflow building wxRuby3 under Windows. | |
name: Windows wxMSW builds | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
paths-ignore: | |
- '.github/**' | |
- 'assets/**' | |
- 'tools/**' | |
- 'lib/wx/doc/**' | |
- 'lib/wx/version.rb' | |
- '**.md' | |
- '.cirrus.yml' | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- '.github/**' | |
- 'assets/**' | |
- 'tools/**' | |
- 'lib/wx/doc/**' | |
- 'lib/wx/version.rb' | |
- 'rakelib/lib/**/*.yaml' | |
- '**.md' | |
- 'Gemfile' | |
- '.yardopts' | |
- '.gitignore' | |
- 'LICENSE' | |
- '.cirrus.yml' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
env: | |
DOXYGEN_ROOT: ${{ github.workspace }}\doxygen | |
WXWIDGETS_ROOT: ${{ github.workspace }}\ext\wxWidgets | |
WXWIN_ROOT: ${{ github.workspace }}\ext\wxWidgets\install | |
# WXRUBY_RELEASE: 1 | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
name: wxMSW wxRuby(${{ matrix.wxr_type }}) ${{ matrix.CXX }} ruby-${{ matrix.ruby }} wxWidgets-${{ matrix.wxWidgets }}(${{ matrix.wxw_type }}) SWIG${{ matrix.swig }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: '2.7' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: embed | |
wxr_type: develop | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: 'ruby' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: embed | |
wxr_type: develop | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: 'ruby' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: develop | |
wxr_type: develop | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: 'ruby' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: embed | |
wxr_type: binpkg | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: 'ruby' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: embed | |
wxr_type: gem | |
- os: windows-2022 | |
platform: 'x64' | |
CXX: g++-12 | |
ruby: 'ruby' | |
wxWidgets: '3.2.4' | |
swig: '4' | |
wxw_type: develop | |
wxr_type: gem | |
steps: | |
- name: Checkout wxRuby3 | |
uses: actions/checkout@v4 | |
- name: checkout wxWidgets | |
if: matrix.wxw_type != 'embed' | |
uses: actions/checkout@v4 | |
with: | |
repository: wxWidgets/wxWidgets | |
path: ${{ env.WXWIDGETS_ROOT }} | |
ref: v${{ matrix.wxWidgets }} | |
submodules: 'recursive' | |
- name: Install Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
- name: Setup Ruby gems | |
run: | | |
bundle install | |
- name: Cache Doxygen | |
if: matrix.wxw_type != 'embed' || matrix.wxr_type == 'develop' | |
id: cache-doxygen | |
uses: actions/cache@v4 | |
with: | |
path: doxygen-1.10.0.windows.x64.bin.zip | |
key: ${{ runner.os }}-doxygen | |
- name: Download Doxygen tool | |
if: steps.cache-doxygen.outputs.cache-hit != 'true' && (matrix.wxw_type != 'embed' || matrix.wxr_type == 'develop') | |
run: | | |
wget.exe https://www.doxygen.nl/files/doxygen-1.10.0.windows.x64.bin.zip | |
$hash = '2135c1d5bdd6e067b3d0c40a4daac5d63d0fee1b3f4d6ef1e4f092db0d632d5b' | |
if ((Get-FileHash doxygen-1.10.0.windows.x64.bin.zip -Algorithm SHA256).Hash -ne $hash) { | |
del doxygen-1.10.0.windows.x64.bin.zip | |
throw "Doxygen Hash doesn't match!" | |
} | |
- name: Install Doxygen package | |
if: matrix.wxw_type != 'embed' || matrix.wxr_type == 'develop' | |
run: | | |
Expand-Archive -LiteralPath '.\doxygen-1.10.0.windows.x64.bin.zip' -DestinationPath $env:DOXYGEN_ROOT -Force | |
echo "$env:DOXYGEN_ROOT" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: Display build environment | |
run: | | |
echo "$env:PATH" | |
ruby -v | |
ridk exec bash -c 'gcc -v' | |
ridk exec bash -c 'g++ -v' | |
- name: Configuring wxWidgets | |
if: matrix.wxw_type != 'embed' | |
working-directory: ${{ env.WXWIDGETS_ROOT }} | |
run: | | |
ridk exec bash -c './configure --prefix=`pwd`/install --disable-tests --without-subdirs --disable-debug_info' | |
- name: Build wxWidgets | |
if: matrix.wxw_type != 'embed' | |
working-directory: ${{ env.WXWIDGETS_ROOT }} | |
run: | | |
ridk exec bash -c 'make && make install' | |
- name: Configure wxRuby3 | |
if: matrix.wxr_type != 'gem' | |
run: | | |
If ("${{ matrix.wxw_type }}" -eq "embed") { | |
bundle exec rake configure[--autoinstall] | |
} | |
Else { | |
bundle exec rake configure WXWIN=$env:WXWIN_ROOT | |
} | |
- name: Build wxRuby3 | |
if: matrix.wxr_type != 'gem' | |
run: | | |
bundle exec rake build | |
- name: Run wxRuby3 post-build checks | |
if: matrix.wxr_type != 'gem' | |
run: | | |
ruby tools/check_swig_types.rb | |
- name: Build wxRuby3 gem | |
if: matrix.wxr_type != 'develop' | |
run: | | |
bundle exec rake gem | |
If ("${{ matrix.wxr_type }}" -eq "binpkg") { | |
bundle exec rake binpkg | |
} | |
- name: Install wxRuby3 gem | |
if: matrix.wxr_type != 'develop' | |
run: | | |
If ("${{ matrix.wxw_type }}" -eq "embed") { | |
If ("${{ matrix.wxr_type }}" -eq "gem") { | |
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f -- prebuilt=none && wxruby setup --autoinstall } | |
} | |
Else { | |
foreach ($f in Get-ChildItem -Path pkg\*.gem) { foreach ($p in Get-ChildItem -Path pkg\*.pkg) { gem install $f -- package=$p } } | |
} | |
} | |
Else { | |
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f -- prebuilt=none && wxruby setup --wxwin=$env:WXWIN_ROOT } | |
} | |
- name: Check wxRuby3 gem install | |
if: matrix.wxr_type != 'develop' | |
run: | | |
wxruby check | |
- name: Run wxRuby3 regression tests | |
run: | | |
If ("${{ matrix.wxr_type }}" -eq "develop") { | |
bundle exec rake test | |
} | |
Else { | |
wxruby test | |
} |