結論
"Debugging with tmate" を使う。
使い方
使い方は公式ドキュメントに詳しく書かれています。
以下の画像のような感じで SSH の接続情報が表示されるので、コピペして ssh コマンド を実行すればログインできます*1。
実際にどう書くか
実際には以下の内容を追記すればいいと思います。
1. on: の箇所に workflow_dispatch: を書く
workflow_dispatch
を指定することで、手動発火を契機に SSH接続 をすることができるようになります*2。
2. Step に以下を追加する
Step
として以下を追記します。追記する場所で CI の実行が止まるので、差し込む場所は適宜考慮します。if:
の部分も適宜変更します。
- name: Setup tmate session uses: mxschmitt/action-tmate@v3 if: ${{ github.event_name == 'workflow_dispatch' }} timeout-minutes: 15 with: sudo: true limit-access-to-actor: true
実際にどう実行するか
上記の内容を追記したならば Actions
のメニューに入ってからアクションを選択した際に、dispatch
用の実行ボタンが表示されているはずです。Run workflow
ボタンを押して実行します。
その後、前述したように SSH の接続情報が表示されるので、それを用いてログインします。
各種カスタマイズなど
以下の点がカスタマイズ項目になります。詳しくは公式ドキュメントを参照してください。
- 他に
workflow_dispatch
がある場合には、Debugging with tmate の実行の際に特定の引数を与えることで分岐を制御する timeout-minutes
with: sudo: (true|false)
- CI 実行時に permission で怒られる場合にはここをいじる
limit-access-to-actor
- GitHub に登録してある公開鍵に対応する鍵で SSH する
セキュリティ
tmate.io
を経るため、実際のプロダクトで使えるかと言われると難しいかもしれません。公式で SSHデバッグ の方法を用意してほしいです。