Skip to content

chore: build pipeline for ruby #18

chore: build pipeline for ruby

chore: build pipeline for ruby #18

Workflow file for this run

name: Build Ruby
on:
push:
tags:
- "*"
pull_request:
paths:
- "ruby-engine/**"
jobs:
build_linux:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Build Rust Library for Linux
run: |
cd yggdrasilffi
cargo build --release --target x86_64-unknown-linux-gnu
working-directory: ${{ github.workspace }}
- name: Move Compiled Artifact for Linux
run: |
mkdir -p ruby-engine/lib/x86_64-unknown-linux-gnu
cp target/x86_64-unknown-linux-gnu/release/libyggdrasilffi.so ruby-engine/lib/x86_64-unknown-linux-gnu/
working-directory: ${{ github.workspace }}
- name: Build Gem for Linux
run: |
cd ruby-engine
gem build yggdrasil-engine.gemspec
for file in *.gem; do mv "$file" "${file%.gem}-x86_64-linux.gem"; done
working-directory: ${{ github.workspace }}
- name: Echo Built Gem Names for Linux
run: ls *.gem
working-directory: ruby-engine
- name: Upload Gem for Ubuntu
uses: actions/upload-artifact@v2
with:
name: gem-ubuntu
path: ruby-engine/*.gem
- name: Publish Gem for Linux
# if: startsWith(github.ref, 'refs/tags/')
run: |
gem build yggdrasil-engine.gemspec
for file in *.gem; do
mv "$file" "${file%.gem}-x86_64-linux.gem"
gem push "$file"
done
env:
GEM_HOST_API_KEY: ${{ secrets.GEMS_PUBLISH_KEY }}
build_windows:
runs-on: windows-latest
strategy:
matrix:
target:
- x86_64-pc-windows-gnu
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Build Rust Library for Windows
run: |
cd yggdrasilffi
cargo build --release --target x86_64-pc-windows-gnu
working-directory: ${{ github.workspace }}
- name: Move Compiled Artifact for Windows
run: |
New-Item -Path ruby-engine/lib/x86_64-pc-windows-gnu -ItemType Directory -Force
Copy-Item target/x86_64-pc-windows-gnu/release/yggdrasilffi.dll ruby-engine/lib/x86_64-pc-windows-gnu/
working-directory: ${{ github.workspace }}
- name: Build Gem for Windows
run: |
cd ruby-engine
gem build yggdrasil-engine.gemspec
Get-ChildItem *.gem | Rename-Item -NewName { $_.Name -replace '.gem$', '-x86_64-windows.gem' }
working-directory: ${{ github.workspace }}
- name: Echo Built Gem Names for Windows
run: Get-ChildItem *.gem | ForEach-Object { Write-Host $_.Name }
working-directory: ruby-engine
- name: Upload Gem for Windows
uses: actions/upload-artifact@v2
with:
name: gem-windows
path: ruby-engine/*.gem
- name: Publish Gem for Windows
# if: startsWith(github.ref, 'refs/tags/')
run: |
gem build yggdrasil-engine.gemspec
Get-ChildItem *.gem | Rename-Item -NewName { $_.Name -replace '.gem$', '-x86_64-windows.gem' }
Get-ChildItem *.gem | ForEach-Object { gem push $_.Name }
env:
GEM_HOST_API_KEY: ${{ secrets.GEMS_PUBLISH_KEY }}
build_macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Build Rust Library for macOS
run: |
cd yggdrasilffi
cargo build --release --target x86_64-apple-darwin
working-directory: ${{ github.workspace }}
- name: Move Compiled Artifact for macOS
run: |
mkdir -p ruby-engine/lib/x86_64-apple-darwin
cp target/x86_64-apple-darwin/release/libyggdrasilffi.dylib ruby-engine/lib/x86_64-apple-darwin/
working-directory: ${{ github.workspace }}
- name: Build Gem for macOS
run: |
cd ruby-engine
gem build yggdrasil-engine.gemspec
for file in *.gem; do mv "$file" "${file%.gem}-x86_64-macos.gem"; done
working-directory: ${{ github.workspace }}
- name: Echo Built Gem Names for MacOS
run: ls *.gem
working-directory: ruby-engine
- name: Publish Gem for MacOS
# if: startsWith(github.ref, 'refs/tags/')
run: |
gem build yggdrasil-engine.gemspec
for file in *.gem; do
mv "$file" "${file%.gem}-x86_64-macos.gem"
gem push "$file"
done
env:
GEM_HOST_API_KEY: ${{ secrets.GEMS_PUBLISH_KEY }}