Skip to content

Develop

Develop #318

Workflow file for this run

# CI workflow building wxRuby3 under Windows.
name: Windows wxMSW builds
on:
push:
branches:
- master
tags:
- v*
paths-ignore:
- '.github/workflows/**'
- 'assets/**'
- 'lib/wx/doc/**'
- '**.md'
pull_request:
branches:
- master
paths-ignore:
- '.github/workflows/**'
- 'assets/**'
- 'lib/wx/doc/**'
- '**.md'
- 'Gemfile'
- '.yardopts'
- '.gitignore'
- 'LICENSE'
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.2.1'
swig: '4'
wxw_type: embed
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
wxw_type: embed
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
wxw_type: develop
wxr_type: develop
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
wxw_type: embed
wxr_type: bingem
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
wxw_type: embed
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
id: cache-doxygen
uses: actions/cache@v3
with:
path: doxygen-1.9.6.windows.x64.bin.zip
key: ${{ runner.os }}-doxygen
- name: Download Doxygen tool
if: steps.cache-doxygen.outputs.cache-hit != 'true'
run: |
wget.exe https://www.doxygen.nl/files/doxygen-1.9.6.windows.x64.bin.zip
$hash = 'bdf1af97a733edd0a60fce2cf375c5c3'
if ((Get-FileHash doxygen-1.9.6.windows.x64.bin.zip -Algorithm MD5).Hash -ne $hash) {
del doxygen-1.9.6.windows.x64.bin.zip
throw "Doxygen Hash doesn't match!"
}
- name: Install Doxygen package
run: |
Expand-Archive -LiteralPath '.\doxygen-1.9.6.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
doxygen -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[--with-wxwin]
}
Else {
bundle exec rake configure WXWIN=$env:WXWIN_ROOT WXRUBY_VERBOSE=1
}
- name: Build wxRuby3
if: matrix.wxr_type != 'gem'
run: |
bundle exec rake build
- name: Build wxRuby3 gem
if: matrix.wxr_type != 'develop'
run: |
bundle exec rake ${{ matrix.wxr_type }}
- name: Install wxRuby3 gem
if: matrix.wxr_type != 'develop'
run: |
If ("${{ matrix.wxw_type }}" -eq "embed") {
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f -- WITH_WXWIN=1 }
}
Else {
foreach ($f in Get-ChildItem -Path pkg\*.gem) { gem install $f }
}
- name: Run wxRuby3 regression tests
run: |
If ("${{ matrix.wxr_type }}" -eq "develop") {
bundle exec rake test
}
Else {
wxruby test
}