本文說明在 Artifact Registry 存放區中使用 Ruby Gem 時,可能會發生哪些錯誤,以及這些情況的可能解決方法。
推播憑證已過期
您發出推送要求,但收到下列錯誤訊息:
Pushing gem to https://LOCATION-ruby.pkg.devPROJECT/REPOSITORY..
The request does not have valid authentication credentials.
如要重新整理憑證,請執行下列指令來產生新權杖:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
bundle config $HOST $GEM_HOST_API_KEY
其中:
- LOCATION 是存放區的區域或多區域位置。
- PROJECT 是專案 ID。如果省略這個標記,系統會使用目前的或預設專案。
- REPOSITORY 是存放區的 ID。如果您已設定 預設 Artifact Registry 存放區,則從指令中省略這個標記時,系統會使用該預設存放區。
推送時顯示登入提示
您發出推送要求,但收到要求提供 ruby.pkg.dev 憑證的訊息:
Enter your https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME credentials.
Don't have an account yet? Create one at https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME/sign_up
Email:
請嘗試執行下列指令:
GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
提取憑證已過期
您提出提取要求,但收到下列錯誤訊息:
Unable to download data from https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ - bad response Unauthorized 401 (https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/latest_specs.4.8.gz)
如要重新整理憑證,請從 gem sources 移除過期的憑證來源。接著,執行下列指令來產生新權杖:
export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
bundle config $HOST $GEM_HOST_API_KEY
其中:
- LOCATION 是存放區的位置。
- PROJECT 是專案 ID。如果省略這個標記,系統會使用目前的或預設專案。
- REPOSITORY 是 Artifact Registry 中的存放區名稱。
提取要求錯誤:Could not fetch specs
您提出提取要求,但收到下列錯誤訊息:
Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ due to underlying error <bad response Not Found 404 (https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/specs.4.8.gz)>
即使提取要求成功,系統也可能錯誤顯示這項錯誤。使用 verbose 指令驗證提取要求是否成功,例如 bundle install --verbose。