Skip to content

Commit 14b070e

Browse files
authored
Merge pull request #76 from Shopify/rwstauner/test-new-versions
Build new definitions in CI
2 parents 8c092d1 + 565900f commit 14b070e

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Build changed definitions
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'rubies/**'
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
name: Build changed definitions
12+
steps:
13+
- uses: actions/checkout@v6
14+
with:
15+
fetch-depth: 0
16+
17+
- name: Detect changed definitions
18+
id: changed
19+
run: |
20+
files=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- rubies/)
21+
defs=$(echo "$files" | sed 's|^rubies/||' | grep -v '^truffleruby' | grep -v '^$' || true)
22+
if [ -z "$defs" ]; then
23+
echo "No CRuby definitions changed"
24+
echo "has_definitions=false" >> "$GITHUB_OUTPUT"
25+
else
26+
echo "Changed definitions:"
27+
echo "$defs"
28+
echo "has_definitions=true" >> "$GITHUB_OUTPUT"
29+
echo "$defs" > /tmp/changed-definitions.txt
30+
fi
31+
32+
- name: Install build dependencies
33+
if: steps.changed.outputs.has_definitions == 'true'
34+
run: |
35+
sudo apt-get update
36+
sudo apt-get install -y --no-install-recommends \
37+
autoconf bison build-essential \
38+
libssl-dev libyaml-dev libreadline-dev libffi-dev libgdbm-dev libncurses-dev zlib1g-dev
39+
40+
- name: Install ruby-build
41+
if: steps.changed.outputs.has_definitions == 'true'
42+
run: |
43+
git clone --depth 1 https://github.com/rbenv/ruby-build.git /tmp/ruby-build
44+
sudo /tmp/ruby-build/install.sh
45+
46+
- name: Build definitions
47+
if: steps.changed.outputs.has_definitions == 'true'
48+
run: |
49+
failed=0
50+
while IFS= read -r def; do
51+
echo "::group::Build $def"
52+
if RUBY_BUILD_DEFINITIONS=$GITHUB_WORKSPACE/rubies \
53+
ruby-build "$def" "/tmp/ruby-$def"; then
54+
"/tmp/ruby-$def/bin/ruby" --version
55+
else
56+
echo "::error::Build failed for $def"
57+
failed=1
58+
fi
59+
echo "::endgroup::"
60+
done < /tmp/changed-definitions.txt
61+
exit "$failed"

0 commit comments

Comments
 (0)