The push prompted for credentials and then died with "404 page not found". Both are the same fault: RubyGems normalizes the keys in ~/.gem/credentials — dots become __ and a trailing slash is appended — so a key written as the host URL can never match the --host value. Finding no key, gem push falls back to signing in against the RubyGems sign_in endpoint, which Gitea does not implement; that is the 404. A named key is stored verbatim and is matched by --key, so the lookup succeeds. Verified against Gem::ConfigFile with both formats. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+7
-2
@@ -48,10 +48,15 @@ steps:
|
||||
- gem build warp_engine.gemspec
|
||||
- mkdir -p ~/.gem
|
||||
- TOKEN="$$(printf '%s' "$${FORGE_TOKEN}" | tr -d '[:space:]')"
|
||||
# Nevesített kulcs, nem a hoszt-URL: a RubyGems a credentials fájl
|
||||
# kulcsait normalizálja (a pontokból __ lesz, záró perjelet kap), így egy
|
||||
# URL-kulcs sosem egyezik a --host értékével. Ilyenkor a gem push
|
||||
# bejelentkezni próbál a RubyGems sign_in végpontján, amit a Gitea nem
|
||||
# ismer — ez adta a "404 page not found"-ot.
|
||||
- |
|
||||
printf -- '---\n:https://git.teletypegames.org/api/packages/engines/rubygems: Bearer %s\n' "$${TOKEN}" > ~/.gem/credentials
|
||||
printf -- '---\n:gitea: Bearer %s\n' "$${TOKEN}" > ~/.gem/credentials
|
||||
- chmod 600 ~/.gem/credentials
|
||||
- gem push --host https://git.teletypegames.org/api/packages/engines/rubygems warp_engine-*.gem
|
||||
- gem push --key gitea --host https://git.teletypegames.org/api/packages/engines/rubygems warp_engine-*.gem
|
||||
when:
|
||||
- event: tag
|
||||
ref: refs/tags/warp_engine-v*
|
||||
|
||||
Reference in New Issue
Block a user