Skip to content

Commit 07d6232

Browse files
committed
[GR-18163] Expand what's run in GitHub Actions, add bin/jt
PullRequest: truffleruby/2302
2 parents f9201a5 + 3b26a18 commit 07d6232

File tree

23 files changed

+239
-42
lines changed

23 files changed

+239
-42
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: 'Install JVMCI, set JAVA_HOME and clone Graal'
2+
runs:
3+
using: "composite"
4+
steps:
5+
- name: Install JVMCI
6+
run: jt install jvmci
7+
shell: bash
8+
working-directory: ${{ github.action_path }}
9+
10+
- name: Set JAVA_HOME
11+
run: echo "JAVA_HOME=$(jt install jvmci)" >> $GITHUB_ENV
12+
shell: bash
13+
working-directory: ${{ github.action_path }}
14+
15+
- name: Clone Graal
16+
run: jt mx sforceimports
17+
shell: bash
18+
working-directory: ${{ github.action_path }}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: 'Extract TruffleRuby, add bin/ to PATH and set RUBY_BIN'
2+
inputs:
3+
archive:
4+
description: 'basename of the archive'
5+
required: true
6+
default: 'truffleruby-jvm'
7+
runs:
8+
using: "composite"
9+
steps:
10+
- name: Extract the archive to truffleruby-build
11+
run: tar xf ${{ inputs.archive }}.tar && mv ${{ inputs.archive }} truffleruby-build
12+
shell: bash
13+
14+
- name: Add TruffleRuby bin/ to PATH
15+
run: echo "$PWD/truffleruby-build/bin" >> $GITHUB_PATH
16+
shell: bash
17+
18+
- name: Set RUBY_BIN for jt
19+
run: echo "RUBY_BIN=$PWD/truffleruby-build/bin/truffleruby" >> $GITHUB_ENV
20+
shell: bash

.github/workflows/ci.yml

Lines changed: 162 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,182 @@ name: CI
44
on: [push, pull_request]
55
jobs:
66
lint:
7-
name: jt lint + jt test fast
7+
name: lint
88
runs-on: ubuntu-20.04
99
steps:
1010
- name: Clone TruffleRuby
1111
uses: actions/checkout@v2
1212
- name: Setup system Ruby
1313
uses: ruby/setup-ruby@v1
14+
- name: Setup jt
15+
run: echo "$PWD/bin" >> $GITHUB_PATH
1416

1517
- name: Restore ~/.mx/cache
1618
uses: actions/cache@v2
1719
with:
1820
path: ~/.mx/cache
19-
key: mx-cache-${{ runner.os }}-${{ hashFiles('common.json') }}
20-
21-
- name: Install Eclipse
22-
run: tool/jt.rb install eclipse
23-
- name: Install JVMCI
24-
run: tool/jt.rb install jvmci
25-
- name: Set JAVA_HOME
26-
run: echo "JAVA_HOME=$(tool/jt.rb install jvmci)" >> $GITHUB_ENV
27-
- name: Clone mx
28-
run: tool/jt.rb mx --version
29-
- name: Clone Graal
30-
run: tool/jt.rb mx sforceimports
21+
key: mx-cache-lint-${{ runner.os }}-${{ hashFiles('common.json') }}
3122

32-
- name: Build TruffleRuby
33-
run: tool/jt.rb build
23+
- uses: ./.github/actions/setup-jvmci-graal
3424

25+
- run: jt install eclipse
3526
- name: Install RuboCop
3627
run: gem install --no-document rubocop:0.66.0
37-
- name: jt lint
38-
run: tool/jt.rb lint
28+
- run: jt lint
29+
- run: jt spotbugs
30+
31+
build:
32+
name: build jvm
33+
runs-on: ubuntu-20.04
34+
defaults:
35+
run:
36+
# Ensure all build files are in build/.
37+
# Test jobs don't have build/ to ensure nothing uses the build files.
38+
working-directory: build
39+
steps:
40+
- name: Clone TruffleRuby
41+
uses: actions/checkout@v2
42+
with:
43+
path: build
44+
- name: Setup system Ruby
45+
uses: ruby/setup-ruby@v1
46+
with:
47+
working-directory: build
48+
- name: Setup jt
49+
run: echo "$PWD/bin" >> $GITHUB_PATH
50+
51+
- name: Restore ~/.mx/cache
52+
uses: actions/cache@v2
53+
with:
54+
path: ~/.mx/cache
55+
key: mx-cache-build-${{ runner.os }}-${{ hashFiles('build/common.json') }}
56+
57+
- uses: ./build/.github/actions/setup-jvmci-graal
58+
59+
- name: Build TruffleRuby
60+
run: jt build
61+
62+
- name: Create archive
63+
run: tar cf truffleruby-jvm.tar truffleruby-jvm
64+
working-directory: build/mxbuild
65+
- uses: actions/upload-artifact@v2
66+
with:
67+
name: truffleruby-jvm
68+
path: build/mxbuild/truffleruby-jvm.tar
69+
70+
build_native:
71+
name: build native
72+
runs-on: ubuntu-20.04
73+
defaults:
74+
run:
75+
# Ensure all build files are in build/.
76+
# Test jobs don't have build/ to ensure nothing uses the build files.
77+
working-directory: build
78+
steps:
79+
- name: Clone TruffleRuby
80+
uses: actions/checkout@v2
81+
with:
82+
path: build
83+
- name: Setup system Ruby
84+
uses: ruby/setup-ruby@v1
85+
with:
86+
working-directory: build
87+
- name: Setup jt
88+
run: echo "$PWD/bin" >> $GITHUB_PATH
89+
90+
- name: Restore ~/.mx/cache
91+
uses: actions/cache@v2
92+
with:
93+
path: ~/.mx/cache
94+
key: mx-cache-build-native-${{ runner.os }}-${{ hashFiles('build/common.json') }}
95+
96+
- uses: ./build/.github/actions/setup-jvmci-graal
97+
98+
- name: Build TruffleRuby
99+
run: jt build --env native
100+
101+
- name: Create archive
102+
run: tar cf truffleruby-native.tar truffleruby-native
103+
working-directory: build/mxbuild
104+
- uses: actions/upload-artifact@v2
105+
with:
106+
name: truffleruby-native
107+
path: build/mxbuild/truffleruby-native.tar
108+
109+
fast_specs:
110+
name: fast specs
111+
needs: [build]
112+
runs-on: ubuntu-20.04
113+
steps:
114+
- name: Clone TruffleRuby
115+
uses: actions/checkout@v2
116+
- name: Setup system Ruby
117+
uses: ruby/setup-ruby@v1
118+
- name: Setup jt
119+
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH
120+
121+
- uses: actions/download-artifact@v2
122+
with:
123+
name: truffleruby-jvm
124+
- uses: ./.github/actions/setup-truffleruby
125+
126+
- run: jt test fast
127+
- run: jt test :next
128+
129+
all_specs:
130+
name: specs ${{ matrix.specs }}
131+
needs: [build]
132+
runs-on: ubuntu-20.04
133+
strategy:
134+
fail-fast: false
135+
matrix:
136+
specs:
137+
- :truffle # ~12min
138+
- :language :core # ~3min + ~9min
139+
- :library :cext :security :command_line # command_line ~5min, others < 2min
140+
steps:
141+
- name: Clone TruffleRuby
142+
uses: actions/checkout@v2
143+
- name: Setup system Ruby
144+
uses: ruby/setup-ruby@v1
145+
- name: Setup jt
146+
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH
147+
148+
- uses: actions/download-artifact@v2
149+
with:
150+
name: truffleruby-jvm
151+
- uses: ./.github/actions/setup-truffleruby
152+
153+
- run: jt test --timeout 180 ${{ matrix.specs }}
154+
155+
test_native:
156+
name: test native
157+
needs: [build_native]
158+
runs-on: ubuntu-20.04
159+
steps:
160+
- name: Clone TruffleRuby
161+
uses: actions/checkout@v2
162+
- name: Setup system Ruby
163+
uses: ruby/setup-ruby@v1
164+
- name: Setup jt
165+
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH
166+
167+
- uses: actions/download-artifact@v2
168+
with:
169+
name: truffleruby-native
170+
- uses: ./.github/actions/setup-truffleruby
171+
with:
172+
archive: truffleruby-native
39173

40-
- name: jt test fast
41-
run: tool/jt.rb test fast
174+
- run: jt test compiler
175+
# A subset of specs that are more likely to differ on native and run quickly
176+
- run: jt test :command_line
177+
- run: jt test :language
178+
# To catch slow :truffle specs which only apply to native
179+
- run: jt test fast :truffle
42180

43-
mri_specs:
44-
name: Run ruby/spec on CRuby ${{ matrix.ruby }}
181+
ruby_spec_cruby:
182+
name: ruby/spec on CRuby ${{ matrix.ruby }}
45183
strategy:
46184
fail-fast: false
47185
matrix:
@@ -53,4 +191,6 @@ jobs:
53191
with:
54192
ruby-version: ${{ matrix.ruby }}
55193
bundler: none
56-
- run: CHECK_LEAKS=true tool/jt.rb -u ruby mspec -fdot --timeout 30 spec/ruby
194+
- name: Setup jt
195+
run: echo "$PWD/bin" >> $GITHUB_PATH
196+
- run: CHECK_LEAKS=true jt -u ruby mspec -fdot --timeout 30 spec/ruby

bin/jt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
3+
SELF_PATH=$(cd "$(dirname "$0")" && pwd -P)/$(basename "$0")
4+
while [ -h "$SELF_PATH" ]; do
5+
DIR=$(dirname "$SELF_PATH")
6+
SYM=$(readlink "$SELF_PATH")
7+
SELF_PATH=$(cd "$DIR" && cd "$(dirname "$SYM")" && pwd)/$(basename "$SYM")
8+
done
9+
10+
root=$(dirname "$(dirname "$SELF_PATH")")
11+
12+
if [ -z "$SYSTEM_RUBY" ]; then
13+
SYSTEM_RUBY="ruby"
14+
fi
15+
16+
exec "$SYSTEM_RUBY" "$root/tool/jt.rb" "$@"

ci.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ local part_definitions = {
321321
"pip:pylint": "==1.9.0",
322322
"shellcheck": "==0.6.0",
323323
},
324-
run+: jt(["lint"]),
324+
run+: jt(["lint"]) + jt(["spotbugs"]),
325325
},
326326

327327
test_mri: { run+: jt(["test", "mri", "--no-sulong", "--", "-j4"]) },

bin/bundle renamed to exe/bundle

File renamed without changes.

bin/bundler renamed to exe/bundler

File renamed without changes.

bin/erb renamed to exe/erb

File renamed without changes.

bin/gem renamed to exe/gem

File renamed without changes.

bin/irb renamed to exe/irb

File renamed without changes.

0 commit comments

Comments
 (0)