Skip to content

major rewrite

major rewrite #25

Workflow file for this run

name: Build Ruby for GitHub Actions
on:
push:
env:
ruby: '3.1.2'
tmpdir: '~/tmp'
jobs:
# Build stable releases
build:
runs-on: self-hosted
steps:
- name: Setup rbenv
run: |
sudo dnf install rbenv
rbenv init
# https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
- name: Install rbenv build environment
run: dnf install -y autoconf gcc rust patch make bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
# https://github.com/rbenv/ruby-build#readme
- name: install ruby-build as rbenv plugin
run: |
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
- name: Set PREFIX
run: |
arch=$(node -e 'console.log(os.arch())')
echo arch=$arch
echo "PREFIX=$RUNNER_TOOL_CACHE/Ruby/${ruby#ruby-}/$arch" >> $GITHUB_ENV
- name: Show PREFIX
run: |
echo PREFIX=$PREFIX
rm -rf $PREFIX
- name: Set RUBY_CONFIGURE_OPTS
run: echo 'RUBY_CONFIGURE_OPTS=--enable-shared --disable-install-doc' >> $GITHUB_ENV
# https://github.com/rbenv/ruby-build/discussions/1961#discussioncomment-4031745
- name: Build Ruby
run: sudo ruby-build --verbose $ruby $PREFIX
env:
CPPFLAGS: "-DENABLE_PATH_CHECK=0" # https://github.com/actions/virtual-environments/issues/267
# TMPDIR: = $tmpdir
- name: Create archive
run: tar czf ${{ steps.ruby.outputs.archive }} -C $(dirname $PREFIX) $(basename $PREFIX)
- name: Install Bundler if needed
run: |
if [ ! -e $PREFIX/bin/bundle ]; then
export PATH="$PREFIX/bin:$PATH"
gem install bundler -v '~> 1' $NO_DOCUMENT
fi
- run: echo "$PREFIX/bin" >> $GITHUB_PATH
- run: ruby --version
- run: ruby -ropen-uri -e 'puts URI.send(:open, %{https://rubygems.org/}) { |f| f.read(1024) }'
- name: Install JSON gem
run: gem install json -v '2.2.0' $NO_DOCUMENT
- run: bundle --version
- run: bundle install
- run: bundle exec rake --version
- run: ruby test_subprocess.rb
- name: Upload Built Ruby
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: gh release upload "toolcache" "${{ steps.ruby.outputs.archive }}"
# createPullRequest:
# name: Create PR to setup-ruby
# needs: [build]
# if: startsWith(github.event.head_commit.message, 'Build ')
# runs-on: ubuntu-latest
# steps:
# - name: Set versions
# id: versions
# env:
# COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
# run: |
# commit_message="$COMMIT_MESSAGE"
# if [[ "$commit_message" =~ ^Build\ * ]]; then
# versions=${commit_message#* }
# echo "versions=$versions" >> $GITHUB_OUTPUT
# else
# exit 2
# fi
# - uses: ruby/ruby-builder/.github/actions/create-pr-to-setup-ruby@master
# with:
# versions: ${{ steps.versions.outputs.versions }}
# title: Add ${{ steps.versions.outputs.versions }}
# token: ${{ secrets.CHECK_NEW_RELEASES_TOKEN }}