summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/compilers.yml1
-rw-r--r--.github/workflows/yjit-macos.yml69
-rw-r--r--.github/workflows/yjit-ubuntu.yml86
-rw-r--r--.github/workflows/yjit.yml70
4 files changed, 156 insertions, 70 deletions
diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml
index 6ddfba05db..e6ad9db6e2 100644
--- a/.github/workflows/compilers.yml
+++ b/.github/workflows/compilers.yml
@@ -167,6 +167,7 @@ jobs:
# - { key: cppflags, name: VM_DEBUG_VERIFY_METHOD_CACHE, value: '-DVM_DEBUG_VERIFY_METHOD_CACHE' }
- { key: cppflags, name: MJIT_FORCE_ENABLE, value: '-DMJIT_FORCE_ENABLE' }
+ - { key: cppflags, name: YJIT_FORCE_ENABLE, value: '-DYJIT_FORCE_ENABLE' }
name: ${{ matrix.entry.name }}
runs-on: ubuntu-latest
diff --git a/.github/workflows/yjit-macos.yml b/.github/workflows/yjit-macos.yml
new file mode 100644
index 0000000000..be0f3c8986
--- /dev/null
+++ b/.github/workflows/yjit-macos.yml
@@ -0,0 +1,69 @@
+name: YJIT MacOS
+on: [push, pull_request]
+jobs:
+ make:
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ test_task: [ "check", "test-bundler-parallel" ] #, "test-bundled-gems" ]
+ yjit_opts: [
+ "--yjit",
+ "--yjit --yjit-call-threshold=1 --yjit-max-versions=1",
+ "--yjit --yjit-call-threshold=1",
+ "--yjit --yjit-call-threshold=2"
+ ]
+ fail-fast: false
+ env:
+ TESTOPTS: '-q --tty=no'
+ RUN_OPTS: '--disable-gems ${{ matrix.yjit_opts }}'
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@v2
+ with:
+ path: src
+ - name: Install libraries
+ run: |
+ brew upgrade
+ brew install gmp libffi openssl@1.1 zlib autoconf automake libtool readline
+ working-directory: src
+ - name: Set ENV
+ run: |
+ echo "JOBS=-j$((1 + $(sysctl -n hw.activecpu)))" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc --with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline)
+ - run: make $JOBS incs
+ - run: make $JOBS
+# - run: make leaked-globals
+# if: matrix.test_task == 'check'
+ - run: make prepare-gems
+ if: ${{ matrix.test_task == 'check' }}
+ - run: make $JOBS -s ${{ matrix.test_task }}
+ timeout-minutes: 60
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: "rexml"
+ - uses: k0kubun/action-slack@v2.0.0
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ github.workflow }} / ${{ matrix.test_task }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref }}".split('/').reverse()[0]
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml
new file mode 100644
index 0000000000..93e12b725f
--- /dev/null
+++ b/.github/workflows/yjit-ubuntu.yml
@@ -0,0 +1,86 @@
+name: Ubuntu
+on: [push, pull_request]
+jobs:
+ make:
+ strategy:
+ matrix:
+ test_task: ["check", "test-bundler-parallel", "test-bundled-gems", "test-all", "test-spec"]
+ os:
+ - ubuntu-20.04
+# - ubuntu-18.04
+ yjit_opts: [
+ "--yjit",
+ "--yjit --yjit-call-threshold=1 --yjit-max-versions=1",
+ "--yjit --yjit-call-threshold=1",
+ "--yjit --yjit-call-threshold=2"
+ ]
+ configure: ["", "cppflags=-DRUBY_DEBUG"]
+ include:
+ - test_task: "test-all TESTS=--repeat-count=2"
+ os: ubuntu-20.04
+ configure: ""
+ fail-fast: false
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{github.ref}}
+ RUN_OPTS: ${{ matrix.yjit_opts }}
+ RUBY_DEBUG: ci
+ runs-on: ${{ matrix.os }}
+ steps:
+ - run: mkdir build
+ working-directory:
+ - name: Install libraries
+ run: |
+ set -x
+ sudo apt-get update -q || :
+ sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev bison autoconf ruby
+ - name: git config
+ run: |
+ git config --global advice.detachedHead 0
+ git config --global init.defaultBranch garbage
+ - uses: actions/checkout@v2
+ with:
+ path: src
+ - name: Fixed world writable dirs
+ run: |
+ chmod -v go-w $HOME $HOME/.config
+ sudo chmod -R go-w /usr/share
+ sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
+ - name: Set ENV
+ run: |
+ echo "JOBS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
+ - run: ./autogen.sh
+ working-directory: src
+ - name: Run configure
+ run: ../src/configure -C --disable-install-doc ${{ matrix.configure }}
+ - run: make $JOBS incs
+ - run: make $JOBS
+# - run: make leaked-globals
+# if: matrix.test_task == 'check'
+ - run: make prepare-gems
+ if: ${{ matrix.test_task == 'check' }}
+ - name: Create dummy files in build dir
+ run: |
+ ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
+ if: ${{ matrix.test_task == 'check' }}
+ - run: make $JOBS -s ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS"
+ timeout-minutes: 60
+ env:
+ RUBY_TESTOPTS: "-q --tty=no"
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
+ - uses: k0kubun/action-slack@v2.0.0
+ with:
+ payload: |
+ {
+ "ci": "GitHub Actions",
+ "env": "${{ matrix.os }} / ${{ matrix.test_task }}${{ matrix.configure }}",
+ "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
+ "commit": "${{ github.sha }}",
+ "branch": "${{ github.ref }}".split('/').reverse()[0]
+ }
+ env:
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() && github.event_name == 'push' }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/yjit.yml b/.github/workflows/yjit.yml
deleted file mode 100644
index 6263e7c533..0000000000
--- a/.github/workflows/yjit.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-name: YJIT options
-on: [push, pull_request]
-jobs:
- make:
- strategy:
- matrix:
- # To make job names consistent
- test_task: [ "check" ]
- # Run with multiple thresholds and params to surface more bugs
- yjit_opts: [
- "--yjit-call-threshold=1 --yjit-max-versions=1",
- "--yjit-call-threshold=1",
- "--yjit-call-threshold=2"
- ]
- fail-fast: false
- runs-on: ubuntu-latest
- env:
- TESTOPTS: '-q --tty=no'
- RUN_OPTS: '--disable-gems ${{ matrix.yjit_opts }}'
- GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
- steps:
- - run: mkdir build
- working-directory:
- - name: Install libraries
- run: |
- set -x
- sudo apt-get update -q || :
- sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev bison autoconf ruby
- - name: git config
- run: |
- git config --global advice.detachedHead 0
- git config --global init.defaultBranch garbage
- - uses: actions/checkout@v2
- with:
- path: src
- - name: Fixed world writable dirs
- run: |
- chmod -v go-w $HOME $HOME/.config
- sudo chmod -R go-w /usr/share
- sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
- - name: Set ENV
- run: |
- echo "JOBS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
- - run: ./autogen.sh
- working-directory: src
- - name: Run configure
- run: ../src/configure -C --disable-install-doc
- - run: make $JOBS incs
- - run: make $JOBS
- - run: sudo make $JOBS -s install
- - run: sudo apt-get install gdb # used by test / test-all failure
- - name: Run test
- run: |
- ulimit -c unlimited
- make $JOBS -s test RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 60
- - name: Run test-all
- run: |
- ulimit -c unlimited
- make $JOBS -s test-all RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 60
- - name: Run test-spec
- run: |
- ulimit -c unlimited
- make $JOBS -s test-spec RUN_OPTS="$RUN_OPTS"
- timeout-minutes: 60
-
-defaults:
- run:
- working-directory: build