major rewrite #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |