我有一个在创建请求请求时要运行的Ruby脚本。该请求请求验证了一系列条件,以确保可以合并请求请求。这是一个非常简单的脚本,没有外部的gem,只有标准的Ruby。
我正在尝试在运行步骤的作业上运行此脚本。问题是,我不确定文件的保存路径。
该脚本称为:validator.rb
。在我的本地计算机上,我可以使用以下命令运行脚本:
ruby -r ./validator.rb -e "Validator.new.validate_something 'One parameter'"
这在本地工作正常,但是当我将其推送到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}
正确的方法是什么?
答案 0 :(得分:1)
正如我在评论中提到的那样,您的工作流无法正常工作的原因是您忘记了检出存储库的关键步骤。默认情况下,除非您使用Checkout GitHub Action检出存储库,否则工作空间为空。
来自GitHub Action的自述文件:
此操作将检出
$GITHUB_WORKSPACE
下的存储库,以便您的工作流可以访问它。
这是一个例子:
- name: Checkout Repo
uses: actions/checkout@v2
(就是这样)
(注意:您不必为步骤指定名称。)
答案 1 :(得分:0)
对我来说,问题还在于文件的位置。 ruby脚本在存储库的根目录中运行,而不是在与工作流YAML相同的路径中(正如我期望的那样)。
我正在运行run: ruby -r ./my-file.rb
,其中my-file.rb
在工作流yaml旁边。
我通过添加以下步骤来实现这一点:
- run: ruby -e 'p `ls`.split("\n")'
将ls
的输出打印在红宝石数组中。
我固定使用:
run: ruby ./.github/workflows/my_file.rb