Как запустить скрипт Ruby в Github Workflow - PullRequest
1 голос
/ 26 марта 2020

У меня есть Ruby скрипт, который я хочу запустить при создании pull-запроса. Этот pull-запрос проверяет ряд условий, чтобы убедиться, что pull-запрос может быть объединен. Это очень простой скрипт без внешних гемов, просто стандартный Ruby.

Я пытаюсь запустить этот скрипт на задании в шаге выполнения. Проблема в том, что я не уверен, куда следует сохранять файл.

Сценарий называется: validator.rb. С моего локального компьютера я могу запустить скрипт, используя:

ruby -r ./validator.rb -e "Validator.new.validate_something 'One parameter'"

Локально это работает, но когда я делаю sh это на GitHub, это не получается. Я сохранил свой сценарий как .github/workflows/ruby-scripts, поэтому моя работа выглядит следующим образом:

jobs:
  title:
    name: "Title"
    runs-on: ubuntu-latest
    steps:
      - run: ruby -r ./ruby-scripts/validator.rb -e "Validator.new.validate_something '${{ github.event.pull_request.title}}'"

И я получаю:

Run ruby -r ./ruby-scripts/validator.rb -e "Validator.new.validate 'Create README.md'"
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:10: warning: constant Gem::ConfigMap is deprecated
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:10: warning: constant Gem::ConfigMap is deprecated
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:29: warning: constant Gem::ConfigMap is deprecated
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:30: warning: constant Gem::ConfigMap is deprecated
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:10: warning: constant Gem::ConfigMap is deprecated
/usr/local/lib/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- ./ruby-scripts/validator.rb (LoadError)
  from /usr/local/lib/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'
##[error]Process completed with exit code 1.

Я пытался использовать все возможные комбинации путей, и каждый время.

Выполнено pwd и ls возвращено:

 - run: pwd => /home/runner/work/repo-name/repo-name
 - run: ls => shell: /bin/bash -e {0}

Как правильно это сделать?

1 Ответ

1 голос
/ 29 марта 2020

Как я уже упоминал в комментариях, причина, по которой ваш рабочий процесс не работает, заключается в том, что вы забыли важный шаг, который проверяет ваш репозиторий. По умолчанию рабочая область пуста, если вы не извлекаете хранилище с помощью действия Checkout GitHub .

Из README действия GitHub:

Это действие проверяет из вашего хранилища под $GITHUB_WORKSPACE, чтобы ваш рабочий процесс мог получить к нему доступ.

Вот пример:

- name: Checkout Repo
  uses: actions/checkout@v2

(Вот и все)

( Примечание. Вам не нужно указывать имя шага.)

...