オープンソースこねこね

Webプログラミングなどについてあれこれ。

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

ヽ(=´▽`=)ノ