Git
GitHub
ATOM

apm publishコマンドでAtomパッケージが公開できないときのトラブルシューティング

apm publishコマンドでAtomパッケージを公開するときにエラーが発生してハマったので解決方法を共有したいと思います。

GitHubに2段階認証を設定していると公開時にコケる

  1. ローカルリポジトリでリリースタグを付与
  2. リモートリポジトリにプッシュ
  3. パッケージ更新APIを叩いて、新バージョンがリリースされたことを通知

まず、Atomパッケージを公開するときはapm publishコマンドを実行しますが、そのときの処理は上記のとおり行われているようです。

$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.5.0 tag Username for 'https://github.com': kentaro-m
Password for 'https://kentaro-m@github.com':
✗
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/kentaro-m/coverage-markers/'

今回は2番目のリモートリポジトリへのプッシュで認証がうまく行かずにこけてしまいました。

解決方法は2つ

手動リリース: Gitタグをプッシュして、タグ指定して公開

$ git push origin vX.Y.Z

一度apm publishを実行すると、ローカルリポジトリではリリースタグが付与されているので、そのタグをリモートにプッシュします。

$ apm publish --tag vX.Y.Z

リモートにプッシュしたタグを指定して、apm publishを実行するとパッケージが公開できます。

自動リリース: パーソナルアクセストークンで認証して公開

$ apm publish minor
Preparing and tagging a new version ✓
Pushing v0.5.0 tag Username for 'https://github.com': kentaro-m
Password for 'https://kentaro-m@github.com': <repo権限をもったパーソナルアクセストークン>

apm pubslishコマンド実行時の認証で、GitHubログイン時に使用しているパスワードの代わりにパーソナルアクセストークンを使用すると問題なく認証できます。

パーソナルアクセストークンの設定画面

パーソナルアクセストークンはGitHubの設定ページから作成できます。権限はrepoを付与します。

さいごに

Atomパッケージ公開のトラブルシューティングについて紹介しました。このようなAtomパッケージ開発時のトラブルはGitHubのAtom Organization配下のIssueを見ると解決策が載っていたりするので困ったときはそちらを参照するのが良いかと思います。