GithubHelp home page GithubHelp logo

isabella232 / setup-ruby Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ruby/setup-ruby

0.0 0.0 0.0 993 KB

An action to download a prebuilt Ruby and add it to the PATH in 5 seconds

Home Page: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby

License: MIT License

JavaScript 92.40% Ruby 7.38% Shell 0.22%

setup-ruby's Introduction

setup-ruby

This action downloads a prebuilt ruby and adds it to the PATH.

It is very efficient and takes about 5 seconds to download, extract and add the given Ruby to the PATH. No extra packages need to be installed.

Compared to actions/setup-ruby, this actions supports many more versions and features.

Supported Versions

This action currently supports these versions of MRI, JRuby and TruffleRuby:

Interpreter Versions
Ruby 2.1.9, 2.2, 2.3.0 - 2.3.8, 2.4.0 - 2.4.10, 2.5.0 - 2.5.8, 2.6.0 - 2.6.6, 2.7.2, head, debug, mingw, mswin
JRuby 9.1.17.0, 9.2.9.0 - 9.2.13.0, head
TruffleRuby 19.3.0 - 20.2.0, head

ruby-debug is the same as ruby-head but with assertions enabled (-DRUBY_DEBUG=1).
On Windows, mingw and mswin are ruby-head builds using the MSYS2/MinGW and the MSVC toolchains respectively.

Preview and RC versions of Ruby might be available too on Ubuntu and macOS (not on Windows). However, it is recommended to test against ruby-head rather than previews, as it provides more useful feedback for the Ruby core team and for upcoming changes.

Only versions published by RubyInstaller are available on Windows. Due to that, Ruby 2.2 resolves to 2.2.6 on Windows and 2.2.10 on other platforms. And Ruby 2.3 on Windows only has builds for 2.3.0, 2.3.1 and 2.3.3.

Note that Ruby ≤ 2.4 and the OpenSSL version it needs (1.0.2) are both end-of-life, which means Ruby ≤ 2.4 is unmaintained and considered insecure.

Supported Platforms

The action works for all GitHub-hosted runners.

Operating System Recommended Other Supported Versions
Ubuntu ubuntu-latest (= ubuntu-18.04) ubuntu-20.04, ubuntu-16.04
macOS macos-latest (= macos-10.15) macos-11.0
Windows windows-latest (= windows-2019) windows-2016

The prebuilt releases are generated by ruby-builder and on Windows by RubyInstaller2. mingw and mswin builds are generated by ruby-loco. ruby-head is generated by ruby-dev-builder, jruby-head is generated by jruby-dev-builder and truffleruby-head is generated by truffleruby-dev-builder. The full list of available Ruby versions can be seen in ruby-builder-versions.js for Ubuntu and macOS and in windows-versions.js for Windows.

Usage

Single Job

name: My workflow
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.6 # Not needed with a .ruby-version file
        bundler-cache: true # runs 'bundle install' and caches installed gems automatically
    - run: bundle exec rake

Matrix

This matrix tests all stable releases and head versions of MRI, JRuby and TruffleRuby on Ubuntu and macOS.

name: My workflow
on: [push]
jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu, macos]
        ruby: [2.5, 2.6, 2.7, head, debug, jruby, jruby-head, truffleruby, truffleruby-head]
    runs-on: ${{ matrix.os }}-latest
    continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
    steps:
    - uses: actions/checkout@v2
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}
        bundler-cache: true # runs 'bundle install' and caches installed gems automatically
    - run: bundle exec rake

See the GitHub Actions documentation for more details about the workflow syntax and the condition and expression syntax.

Supported Version Syntax

  • engine-version like ruby-2.6.5 and truffleruby-19.3.0
  • short version like 2.6, automatically using the latest release matching that version (2.6.5)
  • version only like 2.6.5, assumes MRI for the engine
  • engine only like truffleruby, uses the latest stable release of that implementation
  • .ruby-version reads from the project's .ruby-version file
  • .tool-versions reads from the project's .tool-versions file
  • If the ruby-version input is not specified, .ruby-version is tried first, followed by .tool-versions

Working Directory

The working-directory input can be set to resolve .ruby-version, .tool-versions and Gemfile.lock if they are not at the root of the repository, see action.yml for details.

Bundler

By default, if there is a Gemfile.lock file (or $BUNDLE_GEMFILE.lock or gems.locked) with a BUNDLED WITH section, the latest version of Bundler with the same major version will be installed. Otherwise, the latest compatible Bundler version is installed (Bundler 2 on Ruby >= 2.4, Bundler 1 on Ruby < 2.4).

This behavior can be customized, see action.yml for details about the bundler input.

Caching bundle install automatically

This action provides a way to automatically run bundle install and cache the result:

    - uses: ruby/setup-ruby@v1
      with:
        bundler-cache: true

Note that any step doing bundle install (for the root Gemfile) or gem install bundler can be removed with bundler-cache: true.

This caching speeds up installing gems significantly and avoids too many requests to RubyGems.org.
It needs a Gemfile (or $BUNDLE_GEMFILE or gems.rb) under the working-directory.
If there is a Gemfile.lock (or $BUNDLE_GEMFILE.lock or gems.locked), bundle config --local deployment true is used.

To perform caching, this action will use bundle config --local path vendor/bundle.
Therefore, the Bundler path should not be changed in your workflow for the cache to work (no bundle config path).

Windows

Note that running CI on Windows can be quite challenging if you are not very familiar with Windows. It is recommended to first get your build working on Ubuntu and macOS before trying Windows.

  • The default shell on Windows is not Bash but PowerShell. This can lead issues such as multi-line scripts not working as expected.
  • The PATH contains multiple compiler toolchains. Use where.exe to debug which tool is used.
  • For Ruby ≥ 2.4, MSYS2 is prepended to the Path, similar to what RubyInstaller2 does.
  • For Ruby < 2.4, the DevKit MSYS tools are installed and prepended to the Path.
  • JRuby on Windows has a known bug that bundle exec rake fails.

Versioning

It is highly recommended to use ruby/setup-ruby@v1 for the version of this action. This will provide the best experience by automatically getting bug fixes, new Ruby versions and new features.

If you instead choose a specific version (v1.2.3) or a commit sha, there will be no automatic bug fixes and it will be your responsibility to update every time the action no longer works. Make sure to always use the latest release before reporting an issue on GitHub.

This action follows semantic versioning with a moving v1 branch. This follows the recommendations of GitHub Actions.

Using self-hosted runners

This action might work with self-hosted runners if the virtual environment is very similar to the ones used by GitHub runners. Notably:

  • Make sure to use the same operating system and version.
  • Make sure to use the same version of libssl.
  • Make sure that the operating system has libyaml-0 installed
  • The default tool cache directory (/opt/hostedtoolcache on Linux, /Users/runner/hostedtoolcache on macOS, C:/hostedtoolcache/windows on Windows) must be writable by the runner user. This is necessary since the Ruby builds embed the install path when built and cannot be moved around.
  • /home/runner must be writable by the runner user.

In other cases, please use a system Ruby or install Ruby manually instead.

History

This action used to be at eregon/use-ruby-action and was moved to the ruby organization. Please update if you are using eregon/use-ruby-action.

Credits

The current maintainer of this action is @eregon. Most of the Windows logic is based on work by MSP-Greg. Many thanks to MSP-Greg and Lars Kanis for the help with Ruby Installer.

setup-ruby's People

Contributors

eregon avatar msp-greg avatar vecerek avatar ioquatix avatar headius avatar scottjacobsen avatar dependabot[bot] avatar finetralfazz avatar deivid-rodriguez avatar greghuc avatar meineerde avatar sonicdoe avatar jwillemsen avatar juanitofatas avatar linuxbozo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.