Skip to content

build

build #48

Workflow file for this run

name: build
on:
push:
branches: [ main ]
paths-ignore:
- '*.adoc'
pull_request:
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
ruby-version: [ '2.7', '3.0', '3.1' ]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@master
with:
bundler-cache: true
ruby-version: ${{ matrix.ruby-version }}
# https://github.com/microsoft/vcpkg/issues/15931
# no good solution :(
- name: Workaround for vcpkg
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install gperf
- run: bundle exec rake
build:
name: build ${{ matrix.os }}, ${{ matrix.ruby-version }}, ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: any
ruby-version: '2.7'
- os: ubuntu-latest
platform: x86_64-linux
ruby-version: '2.7'
- os: windows-latest
platform: x64-mingw32
ruby-version: '2.7'
- os: windows-latest
platform: x64-mingw-ucrt
ruby-version: '3.1'
- os: macos-latest
platform: x86_64-darwin
ruby-version: '2.7'
steps:
- uses: actions/checkout@v3
- name: Setup Ruby
uses: ruby/setup-ruby@master
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- name: Workaround for vcpkg
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install gperf
- run: bundle exec rake gem:native:${{ matrix.platform }}
- uses: actions/upload-artifact@v3
with:
name: pkg
path: pkg/*.gem
cross-build:
name: build ${{ matrix.os }}, ${{ matrix.ruby-version }}, ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: aarch64-linux
ruby-version: '2.7'
- os: macos-latest
platform: arm64-darwin
ruby-version: '2.7'
steps:
- uses: actions/checkout@v3
- name: Install Ubuntu packages
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu gperf
- name: Install Ruby
uses: ruby/setup-ruby@master
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- name: Build native extension
run: bundle exec rake gem:native:${{ matrix.platform }}
- uses: actions/upload-artifact@v3
with:
name: pkg
path: pkg/*.gem
test-build:
needs: [ build, cross-build ]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
ruby-version: [ '2.7', '3.0', '3.1' ]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@master
with:
ruby-version: ${{ matrix.ruby-version }}
- uses: actions/download-artifact@v3
with:
name: pkg
path: pkg
- name: Install binary gem
run: gem install -b pkg/emf2svg-$(ruby -I lib -r emf2svg/version -e "puts Emf2svg::VERSION")-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
# MacOS with have something like arm64-darwin19, others just aarch64-linux
- name: Test conversion
run: |
ruby -remf2svg -e "puts File.write('output.svg', Emf2svg.from_file('spec/examples/image1.emf'), mode: 'wb')"
test-build-any:
needs: [ build, cross-build ]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
ruby-version: [ '2.7', '3.0', '3.1' ]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@master
with:
ruby-version: ${{ matrix.ruby-version }}
- uses: actions/download-artifact@v3
with:
name: pkg
path: pkg
- name: Workaround for vcpkg
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install gperf
- name: Install native gem
run: gem install -b pkg/emf2svg-$(ruby -I lib -r emf2svg/version -e "puts Emf2svg::VERSION").gem
- name: Test conversion
run: |
ruby -remf2svg -e "puts File.write('output.svg', Emf2svg.from_file('spec/examples/image1.emf'), mode: 'wb')"