Skip to content

Merge pull request #328 from mcorino/develop #629

Merge pull request #328 from mcorino/develop

Merge pull request #328 from mcorino/develop #629

Workflow file for this run

# 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
WXWIDGETS_LATEST_STABLE: ${{ vars.WXWIDGETS_LATEST_STABLE }}
jobs:
build:
runs-on: ${{ matrix.os }}
name: wxMSW wxRuby(${{ matrix.wxr_type }}) ${{ matrix.CXX }} ruby-${{ matrix.ruby }} wxWidgets-${{ vars.WXWIDGETS_LATEST_STABLE }}(${{ matrix.wxw_type }}) SWIG${{ matrix.swig }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '2.7'
swig: '4'
wxw_type: embed
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.1'
swig: '4'
wxw_type: embed
wxr_type: gem
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: 'ruby'
swig: '4'
wxw_type: embed
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: 'ruby'
swig: '4'
wxw_type: develop
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: 'ruby'
swig: '4'
wxw_type: embed
wxr_type: binpkg
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: 'ruby'
swig: '4'
wxw_type: embed
wxr_type: gem
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: 'ruby'
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${{ env.WXWIDGETS_LATEST_STABLE }}
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: Clean wxRuby3 build artifacts
if: matrix.wxr_type != 'develop'
run: bundle exec rake clean
- 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: Check embedded wxWidgets version
if: matrix.wxw_type == 'embed'
run: |
If ("${{ matrix.wxr_type }}" -eq "develop") {
bundle exec rake "wxruby:exec[ruby,tools/check_wxw_version.rb,$env:WXWIDGETS_LATEST_STABLE]"
}
Else {
ruby tools/check_wxw_version.rb "$env:WXWIDGETS_LATEST_STABLE"
}
- name: Run wxRuby3 regression tests
run: |
If ("${{ matrix.wxr_type }}" -eq "develop") {
bundle exec rake test
}
Else {
wxruby test
}