Skip to content

Merge pull request #4 from joyofrails/chore/update-wasm #57

Merge pull request #4 from joyofrails/chore/update-wasm

Merge pull request #4 from joyofrails/chore/update-wasm #57

Workflow file for this run

name: Build
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
jobs:
test:
runs-on: ubuntu-latest
env:
RAILS_ENV: test
steps:
- name: Checkout code
uses: actions/checkout@v4
# Add or replace dependency steps here
- name: Install Ruby and gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
# Add or replace database setup steps here
- name: Set up database schema
run: bin/rails db:schema:load
# Add or replace test runners here
- name: Run tests
run: bin/rake
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Ruby and gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
# Add or replace any other lints here
# - name: Security audit dependencies
# run: bin/bundler-audit --update
# - name: Security audit application code
# run: bin/brakeman -q -w2
- name: Lint Ruby files
run: bin/rubocop --parallel
build-wasm-node:
needs: [test, lint]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install build tools from apt
run: sudo apt-get install ruby bison make autoconf git curl build-essential libyaml-dev zlib1g-dev -y
- name: Setup `wasmtime`
uses: bytecodealliance/actions/wasmtime/setup@v1
- name: Workaround for Debian ruby distribution
run: |
# avoid using system rubygems while installing docs
# related issue: https://github.com/rubygems/rubygems/issues/3831
sudo rm -rf /usr/lib/ruby/vendor_ruby/rubygems/defaults
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Cache wasm node build
id: cache-wasm-node
uses: actions/cache@v4
env:
cache-name: cache-wasm-node
with:
path: |
build
rubies
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Compile assets
run: SECRET_KEY_BASE_DUMMY=1 RAILS_ENV=production bin/rails assets:precompile
- name: Build rails wasm for node
run: bin/build-wasm-node
- name: Test rails wasm for node successful with wasmtime
run: bin/test-wasm-node
build-wasm-web:
needs: [test, lint]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install build tools from apt
run: sudo apt-get install ruby bison make autoconf git curl build-essential libyaml-dev zlib1g-dev -y
- name: Workaround for Debian ruby distribution
run: |
# avoid using system rubygems while installing docs
# related issue: https://github.com/rubygems/rubygems/issues/3831
sudo rm -rf /usr/lib/ruby/vendor_ruby/rubygems/defaults
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Cache wasm web
id: cache-wasm-web
uses: actions/cache@v4
env:
cache-name: cache-wasm-web
with:
path: |
build
rubies
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Compile assets
run: SECRET_KEY_BASE_DUMMY=1 RAILS_ENV=production bin/rails assets:precompile
- name: Build rails wasm for web
run: bin/build-wasm-web
- run: ls -lahR .wasm
- uses: actions/upload-artifact@v4
with:
name: .wasm
path: .wasm/*.wasm
retention-days: 1
upload-wasm-web:
needs: [test, lint, build-wasm-node, build-wasm-web]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- uses: actions/download-artifact@v4
- run: ls -lahR .wasm
- name: Upload wasm to cloud storage
run: |
if [[ "${{github.ref}}" == "refs/heads/main" ]]; then
SECRET_KEY_BASE_DUMMY=1 \
RAILS_ENV=production \
bin/rails wasm:upload
else
RAILS_ENV=test \
bin/rails wasm:upload
fi