CircleCI сообщает, что ваш пакет не может быть найден ни в одном из источников, перечисленных в вашем Gemfile

Ошибка установки зависимостей CircleCI:

Your bundle is locked to my_cool_gem (0.7.2), but that version could not be
found in any of the sources listed in your Gemfile. If you haven't changed
sources, that means the author of my_cool_gem (0.7.2) has removed it. You'll
need to update your bundle to a version other than my_cool_gem (0.7.2) that
hasn't been removed in order to install.

Скриншот вывода CircleCI:

CircleCI не может найти гем, который я опубликовал в пакетах GitHub, но у меня нет такой проблемы в локальной разработке.

У меня есть подходящие версии RubyGems и Bundler, согласно документации GitHub — https://docs.github.com/en/free-pro-team@latest/packages/guides/configuring-rubygems-for-use-with- github-packages - и я полагаю, что следовал инструкциям по публикации и использованию указанных опубликованных драгоценных камней... и, опять же, использование работает локально, но не работает в CircleCI...

Версия RubyGems:

-bash> gem --version
3.0.9

Версия бандлера:

-bash> bundle --version
Bundler version 1.17.3

Gemfile:

source 'https://rubygems.org'                                                   
source 'https://rubygems.pkg.github.com/my_cool_org'

gem 'my_cool_gem', '0.7.2'

Обратите внимание, что я также пробовал:

source 'https://rubygems.org'                                                   
source 'https://rubygems.pkg.github.com/my_cool_org'

source 'https://rubygems.pkg.github.com/my_cool_org' do
  gem 'my_cool_gem', '0.7.2'
end

🤔 А знаете ли вы, что...
Ruby on Rails также может использоваться для разработки не только веб-приложений, но и API и микросервисов.


2
897
6

Ответы:

Попробуйте запустить bundle update my_cool_gem, если он изменяет Gemfile.lock, это должно исправить.


Вы проверили, что он действительно все еще доступен в источнике? Я знаю, вы сказали, что это работает локально, но это может быть из-за локальных кешированных версий драгоценного камня. Bundle не будет пытаться установить то, что уже есть.

Вы можете проверить это, удалив его локально и снова запустив пакетную установку.


Решено

Убедитесь, что вы правильно установили переменную среды для аутентификации с помощью rubygems.pkg.github.com.

(Хотя переменная может быть установлена, значение может быть неправильным - как это было со мной.)


Интересно, похоже на баг изображения. Что произойдет, если вы попытаетесь перечислить все доступные версии вашего драгоценного камня? gem search ^gem_name$ --all?

Вы пытались принудительно обновить заранее? sudo gem update --system


Для меня проблема заключалась в том, что токены доступа были разными на локальной машине и на CI. И ключ на CI был действителен, но у него не было разрешения на конкретный репозиторий, содержащий запрошенный гем.

Несмотря на то, что Github предоставляет единый реестр для каждой организации, драгоценные камни связаны с репозиториями компании. И пакеты в реестре будут видимыми или невидимыми в зависимости от разрешений для этих репозиториев, которые имеют токены доступа. Например, пользователь может иметь доступ к некоторым репозиториям организации и не иметь доступа к другим — при использовании токена личного доступа этого пользователя будут видны только драгоценные камни, связанные с разрешенными репозиториями. Другие будут скрыты, поэтому ошибка «эта версия не может быть найдена».


Я снова столкнулся с этим, и на этот раз я не смог решить это с помощью решения, которое использовал в прошлый раз , и никакое другое решение также не сработало, поэтому вместо этого я решил временно обойти проблему, поместив копию драгоценного камня в вопрос непосредственно в моем приложении (процесс, известный как «вендоризация»; см. это , это и это):

gem unpack my_cool_gem # note, I actually had to specify the version with -v 0.12.1

mkdir vendor/gems/

mv my_cool_gem-0.12.1 vendor/gems/

В Gemfile используйте параметр :path, а не :source:

gem 'my_cool_gem', '0.12.1', path: 'vendor/gems'

Затем сгенерируйте Gemfile.lock:

bundle install