Skip to content

Merge pull request #90 from mcorino/develop #26

Merge pull request #90 from mcorino/develop

Merge pull request #90 from mcorino/develop #26

Workflow file for this run

# CI wxRuby release workflow
name: Release build
on:
push:
tags:
- v*
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
jobs:
release:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
ruby: '3.2'
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} wxRuby Release (${{ github.ref_name }})
env:
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
outputs:
version: ${{ steps.version_var.outputs.WXRUBY_VERSION }}
prerelease: ${{ steps.version_var.outputs.WXRUBY_PRERELEASE }}
steps:
- name: Checkout wxRuby3
uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Setup Ruby gems
run: |
bundle install
- name: Build wxRuby3 gem
run: |
bundle exec rake gem
- name: Upload gem to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: pkg/*.gem
tag: ${{ github.ref }}
overwrite: true
file_glob: true
- name: Publish Gem on RubyGems
run: |
gem push pkg/*.gem
- name: Set version variables
id: version_var
run: |
echo "WXRUBY_VERSION=${GITHUB_REF_NAME/#v/}" >> "$GITHUB_OUTPUT"
if grep -q "\-[a-zA-Z]" <<< "$GITHUB_REF_NAME" ; then
echo "WXRUBY_PRERELEASE=1" >> "$GITHUB_OUTPUT"
else
echo "WXRUBY_PRERELEASE=0" >> "$GITHUB_OUTPUT"
fi
verify-gem:
needs: release
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
gtk_version: 3
CC: gcc-12
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
configure_flags:
use_xvfb: true
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} wxRuby Gem Test (${{ github.ref_name }})
env:
WXWIDGETS_ROOT: ${{ github.workspace }}/ext/wxWidgets
WXWIN_INSTALL: ${{ github.workspace }}/ext/wxWidgets/install
wxGTK_VERSION: ${{ matrix.gtk_version && matrix.gtk_version || 3 }}
wxCONFIGURE_FLAGS: ${{ matrix.configure_flags }}
wxUSE_ASAN: ${{ matrix.use_asan && 1 || 0 }}
wxUSE_XVFB: ${{ matrix.use_xvfb && 1 || 0 }}
WX_EXTRA_PACKAGES: doxygen patchelf
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
WXRUBY_VERSION: ${{ needs.release.outputs.version }}
WXRUBY_PRERELEASE: ${{ needs.release.outputs.prerelease }}
steps:
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: checkout wxWidgets
uses: actions/checkout@v3
with:
repository: wxWidgets/wxWidgets
path: ${{ env.WXWIDGETS_ROOT }}
ref: v${{ matrix.wxWidgets }}
submodules: 'recursive'
- name: Set up build environment
run: |
# Install locales used by our tests to run all the tests instead of
# skipping them.
sudo locale-gen de_DE.utf8 de_CH.utf8 en_US.utf8 fr_FR.utf8 sv_SE.utf8
$WXWIDGETS_ROOT/build/tools/before_install.sh
- name: Display build environment
run: |
echo $PATH
ruby -v
doxygen -v
gcc -v
g++ -v
- name: Configuring wxWidgets
run: |
wxCONFIGURE_OPTIONS="$wxCONFIGURE_FLAGS"
if [ -n "${{ matrix.gtk_version }}" ]; then
wxCONFIGURE_OPTIONS="--with-gtk=${{ matrix.gtk_version }} $wxCONFIGURE_OPTIONS"
fi
pushd $WXWIDGETS_ROOT
./configure $wxCONFIGURE_OPTIONS --disable-tests --without-subdirs --disable-debug_info || rc=$?
popd
if [ -n "$rc" ]; then
echo '*** Configuring failed, contents of config.log follows: ***'
echo '-----------------------------------------------------------'
cat $WXWIDGETS_ROOT/config.log
echo '-----------------------------------------------------------'
exit $rc
fi
- name: Build and install wxWidgets
run: |
pushd $WXWIDGETS_ROOT
make && sudo make install && sudo ldconfig
popd
- name: Remove wxWidgets
run: |
rm -rf $WXWIDGETS_ROOT
- name: Install wxRuby3 gem
run: |
if [ "$WXRUBY_PRERELEASE" == "1" ]; then
BUILD_CMD="gem install wxruby3 -v $WXRUBY_VERSION --pre"
else
BUILD_CMD="gem install wxruby3 -v $WXRUBY_VERSION"
fi
/bin/bash -o pipefail -c "xvfb-run -a -s '-screen 0 1600x1200x24' $BUILD_CMD 2>&1 | tee -a gembuild.out" || rc=$?
if [ -n "$rc" ]; then
if fgrep -q '(core dumped)' gembuild.out; then
echo '*** Test crashed, trying to get more information ***'
gdb --quiet --core=core -ex 'where' -ex 'thread apply all bt' -ex 'q' --args $BUILD_CMD
fi
exit $rc
fi
- name: Run wxRuby3 regression tests
run: |
ulimit -c unlimited
TEST_CMD="wxruby test"
/bin/bash -o pipefail -c "xvfb-run -a -s '-screen 0 1600x1200x24' $TEST_CMD 2>&1 | tee -a wxtest.out" || rc=$?
if [ -n "$rc" ]; then
if fgrep -q '(core dumped)' wxtest.out; then
echo '*** Test crashed, trying to get more information ***'
gdb --quiet --core=core -ex 'where' -ex 'thread apply all bt' -ex 'q' --args $TEST_CMD
fi
exit $rc
fi
release-bingem:
needs: release
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} wxRuby Bingem Release (${{ github.ref_name }})
env:
DOXYGEN_ROOT: ${{ github.workspace }}\doxygen
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
steps:
- name: Checkout wxRuby3
uses: actions/checkout@v3
- 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: Configure wxRuby3
run: |
bundle exec rake configure[--with-wxwin]
- name: Build wxRuby3
run: |
bundle exec rake build
- name: Build wxRuby3 gem
run: |
bundle exec rake bingem
- name: Publish Gem on RubyGems
run: |
gem push pkg/*.gem
verify-bingem:
needs: [release, release-bingem]
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} wxRuby Bingem Test (${{ github.ref_name }})
env:
WXRUBY_VERSION: ${{ needs.release.outputs.version }}
WXRUBY_PRERELEASE: ${{ needs.release.outputs.prerelease }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
platform: 'x64'
CXX: g++-12
ruby: '3.2'
wxWidgets: '3.2.2.1'
swig: '4'
steps:
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Wait for RubyGems
run: |
Start-Sleep -Seconds 300
- name: Install wxRuby3 gem
if: matrix.wxr_type != 'develop'
run: |
If ("$env:WXRUBY_PRERELEASE" -eq "1") {
gem install wxruby3 -v $env:WXRUBY_VERSION --pre
}
Else {
gem install wxruby3 -v $env:WXRUBY_VERSION
}
- name: Run wxRuby3 regression tests
run: |
wxruby test