TravisCIでSSHクライアントのテストをする。
AltaxというPHPで並列SSHするデプロイツールを作っているのですが、 これのSSH接続部分のテストは当然SSHサーバが必要で、そのへんをTravisでどーやるのかわからず、ずっと悩んでいました。
で、調べていたら、
https://github.com/libgit2/libgit2/pull/1774
が検索に引っかかって、これを見ながらやってみたらうまくできたので、メモしておきます。
やり方
以下のようなシェルスクリプトを用意します。
setup_ssh_server.sh
#!/bin/sh
sudo apt-get update -qq
sudo apt-get install -qq libssh2-1-dev openssh-client openssh-server
sudo start ssh
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "" -q
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
ssh-keyscan -t rsa localhost >>~/.ssh/known_hosts
export SSH_PRIVATE_KEY="$HOME/.ssh/id_rsa"
export SSH_PUBLIC_KEY="$HOME/.ssh/id_rsa.pub"
apt-getでSSHサーバ入れて起動して、ssh-keygenで鍵を作っているわけです。
あとはこれを.travis.yml
でbefore_scriptとかに設定してテスト前に実行するようにすれば、
SSHサーバがローカルホストで起動するので、SSH接続のテストができるようになります。
.travis.yml
language: php
php:
- 5.3
- 5.4
- 5.5
before_script:
- sh setup_ssh_server.sh
script:
- php vendor/bin/phpunit
ヽ(=´▽`=)ノ