首页 > 解决方案 > 如何在 Gitlab CI 上修复 'Rugged::ReferenceError: revspec 'origin/master' not found'

问题描述

我正在尝试为 Gitlab CI 设置 pronto,本地一切正常,但是当 pronto 在 Gitlab CI 上运行时“Rugged::ReferenceError: revspec 'origin/master' not found”错误引发

cache:
  paths:
    - vendor/

services:
  - name: mysql:8.0
    command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--default-authentication-plugin=mysql_native_password"]

variables:
  MYSQL_DATABASE: $MYSQL_DATABASE
  MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
  DB_USERNAME: $DB_USERNAME
  DB_HOST: $DB_HOST
  DISABLE_SPRING: 1


before_script:
  - cp config/database.yml.example config/database.yml
  - apt-get update -qq && apt-get install -y -qq cmake
  - gem install bundler --no-document
  - bundle check || bundle install --path vendor --jobs $(nproc)  "${FLAGS[@]}"

spec:
  script:
    - bundle exec rspec

pronto:
  script:
    - bundle exec pronto run -c origin/master --exit-code

Rugged::ReferenceError: revspec 'origin/master' not found
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/git/repository.rb:87:in `merge_base'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/git/repository.rb:87:in `merge_base'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/git/repository.rb:17:in `diff'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto.rb:62:in `run'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/cli.rb:66:in `block in run'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/cli.rb:64:in `chdir'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/lib/pronto/cli.rb:64:in `run'
  vendor/ruby/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
  vendor/ruby/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
  vendor/ruby/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
  vendor/ruby/2.6.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
  vendor/ruby/2.6.0/gems/pronto-0.10.0/bin/pronto:6:in `<top (required)>'
  vendor/ruby/2.6.0/bin/pronto:23:in `load'
  vendor/ruby/2.6.0/bin/pronto:23:in `<top (required)>'

我希望在没有例外的情况下在 gitlab 上运行 pronto

标签: ruby-on-railsrubygitlabgitlab-ci

解决方案


我不知道这是否是最好的解决方案,但这对我有用:

  • 在您的 gitlab 存储库中,转到设置 -> CI/CD
  • 在 General pipelines -> Git strategy for pipelines 部分中,标记选项git clone而不是git fetch git 克隆

  • 我还必须在调用git fetch上方添加一个命令:pronto

pronto:
  script:
    - git fetch
    - bundle exec pronto run -c origin/master --exit-code

推荐阅读