概要
Github Actionsにてテストのために8084番ポートでプロセスを起動しようとした際、すでにポートが使用されている趣旨のエラーが発生した。
調査してみるとubuntu-latest(22.04)では8084番ポートはデフォルトで使用されていることがわかった。
発生したエラー
以下のようなワークフローを実行しようとした。
8084番ポートにてPub/Subエミュレーターを起動してテストをするというものである。
unit-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup gcloud
uses: google-github-actions/setup-gcloud@v1
with:
install_components: 'beta,pubsub-emulator'
- name: Start PubSub emulator
run: gcloud beta emulators pubsub start --project=hogehoge --host-port=localhost:8084 &
...
すると、以下のようなエラーが発生した。すでにポートが使用されているらしい。もちろんPub/Subエミュレータ起動より前に明示的にプロセスを起動したりはしていない。
[pubsub] Exception in thread "main" java.net.BindException: Address already in use
調査
lsofコマンドにて8084番ポートを使用しているプロセスを調査したところ、mono
というプロセスが起動していた。
実行結果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mono 762 www-data 5u IPv4 23433 0t0 TCP *:8084 (LISTEN)
なので、Pub/Subエミュレータを8084番ポート以外を指定して起動したら問題なく起動できた。
ちなみに8084番ポート以外の808x番ポートを調査したがデフォルトで使用されているものはなかった。
まとめ
GithubActionsで808x番ポートを利用する際、8084番ポートはデフォルトで使用されていることに注意したい。