Record the gem push credentials trap in ttg-publish-module
Publishing warp_engine hit it: a credentials key written as the host URL never matches --host, because RubyGems normalizes those keys. gem push then falls back to signing in against an endpoint Gitea does not have, and reports "404 page not found" — which points nowhere near the cause. Also notes that fixing a release pipeline means re-tagging: Woodpecker reads the config from the tagged commit, so a retry on the old tag would run the old, broken config. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,8 +39,22 @@ A Go-nál **nincs csomagtár**: a repo maga a terjesztés, a git tag a verzió.
|
||||
2. **`allowed_push_host`.** Pontosan egyezzen a `gem push --host` értékével. A forge orgonként külön registryt szolgál ki:
|
||||
`https://git.teletypegames.org/api/packages/<org>/rubygems`
|
||||
Ha csak a hosztnév van benne, a push visszautasításra kerül.
|
||||
3. **Van-e már pipeline.** Nézd meg a repo `.woodpecker.yaml`-ját: lehet, hogy a publikálás már meg van írva és csak sosem futott. Ilyenkor **ne kézzel pusholj** — javítsd a pipeline-t (org-hivatkozások!) és tedd ki a tagot, amire figyel (a `warp_engine`-nél `warp_engine-v*`, nem `v*`).
|
||||
4. **Ellenőrzés.** `tea api --login ttg "/packages/<org>?limit=20"`. Ha üres marad, a Woodpecker naplója kell: indít-e buildet a tag-esemény, és van-e a CI tokennek `package:write` joga.
|
||||
3. **A credentials kulcs neve.** A RubyGems **normalizálja** a `~/.gem/credentials` kulcsait — a pontokból `__` lesz, és záró perjelet kap —, ezért egy hoszt-URL alakú kulcs **soha nem 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, és a hibaüzenet félrevezetően `404 page not found`. Használj **nevesített kulcsot**:
|
||||
```
|
||||
---
|
||||
:gitea: Bearer <token>
|
||||
```
|
||||
```sh
|
||||
gem push --key gitea --host https://git.teletypegames.org/api/packages/<org>/rubygems <név>-<ver>.gem
|
||||
```
|
||||
Kétség esetén ellenőrizd: `ruby -e 'require "rubygems/config_file"; p Gem::ConfigFile.new([]).api_keys.keys'`.
|
||||
4. **Van-e már pipeline.** Nézd meg a repo `.woodpecker.yaml`-ját: lehet, hogy a publikálás már meg van írva és csak sosem futott. Ilyenkor **ne kézzel pusholj** — javítsd a pipeline-t (org-hivatkozások!) és tedd ki a tagot, amire figyel (a `warp_engine`-nél `warp_engine-v*`, nem `v*`).
|
||||
**Ha a pipeline-t javítod, a tagot is újra kell húzni:** a Woodpecker a tag commitjából olvassa a konfigot, tehát a javítás előtti tagra futtatott újrapróba is a régi configot használná. Kiadatlan verziónál a tag törlése és újratűzése tiszta megoldás.
|
||||
5. **Ellenőrzés.** `tea api --login ttg "/packages/<org>?limit=20"`, majd valódi fogyasztással:
|
||||
```sh
|
||||
bundle lock # Gemfile: source "<registry>" do gem "<név>" end
|
||||
```
|
||||
A Gitea a **compact indexet** szolgálja ki (`/versions`, `/info/<név>`); a RubyGems.org-féle `/api/v1/versions/<név>.json` nála 404, ez nem hiba.
|
||||
|
||||
**Korlát:** a `tea api` csak JSON törzset küld, bináris feltöltésre nem alkalmas — kézi `gem push`-hoz nyers token kell, amit a `tea` titkosítva tárol, tehát a felhasználónak kell megadnia.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user