apm publish
コマンドでAtomパッケージを公開するときにエラーが発生してハマったので解決方法を共有したいと思います。
GitHubに2段階認証を設定していると公開時にコケる
- ローカルリポジトリでリリースタグを付与
- リモートリポジトリにプッシュ
- パッケージ更新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を見ると解決策が載っていたりするので困ったときはそちらを参照するのが良いかと思います。