やっと重い腰をあげて、まずはテスト環境を構築できるようにしました。
RoadworkerのテストにはAWS環境が必要
RoadworkerはRoute53を管理できる構成管理ツールで、Codenize.toolsの1つです。
多くの企業で導入実績があり、また、十分なテストが書かれているので安心して利用ができます。当然のようにTravisCIによるCIも回っています。
では、そのテストはどのように実行されているかというと、作者である id:winebarrel さんのAWS環境で実行されています。
.travis.yml をみてわかるとおり、最低限必要なAWSリソースとして
- まっさらな Route53 ( RoadworkerがRoute53のHostedZoneから管理するツールのため )
- VPC
- ELB
- CloudFront
があります。特にELBの月額費用は月額18USDと馬鹿にならない料金です。
それらを用意してもらっているので、PullRequestベースなら自前でテストAWS環境を用意しなくてもテストが可能です。感謝。
それでも自前の環境でテストを実行したい
とはいえ、新しい機能を追加したいときや、ちょっとした修正をPullRequestをしたいとき、事前にテストを実行したいものです。
無駄にPullRequestを出してテストを回しまくるわけにもいかず、TravisCIの順番待ちもちょっと効率が悪いです。
できれば自前の環境でもテストを実行したいです。
RoadworkerのテストAWS環境を構築するTerraformコード
というわけで、RoadworkerのテストAWS環境を構築するTerraformコードを作成しましたので共有します。
Test environment for Roadworker
使い方
必ずRoute53を利用していないAWSアカウントで実行してください
$ ls roadworker.tf $ terraform apply # Terraformを実行してAWS環境を構築 $ terraform output # Terraformのoutputを確認 AWS_REGION = ap-northeast-1 TEST_AWS_ACCESS_KEY_ID = XXXXXXXXXXXXXXXXXXX TEST_AWS_SECRET_ACCESS_KEY = XXXxxxxXXXXxXXXXXXXXXXxxxxxxxXXXXX TEST_CF = dxxxxxxxxxxxxx.cloudfront.net. TEST_DELAY = 0.3 TEST_ELB = roadworker-test-000000000000.ap-northeast-1.elb.amazonaws.com. TEST_INTERVAL = 3 TEST_VPC1 = vpc-x0x0x0xxx TEST_VPC2 = vpc-00x0x0x0 TEST_VPC_REGION = ap-northeast-1 $ eval $(terraform output | sed 's/ //g' | sed 's/^/export /') # outputの結果を利用して環境変数をセット $ cd /path/to/roadworker $ bundle exec rake # Roadworkerのテストを実行
テスト環境が必要なくなったら terraform destroy
で作成したAWSリソースを削除できます。
テスト環境を作成した経緯
実は、つい先日まで私が codenize-tools/roadworker に実質放置していたPullRequestがありました。
自分の環境で該当箇所のテストだけ実施して、いざPullRequestを出してみると他のテストでエラーになりました(この時点でマズいPRの出し方でした)。
しかし(プライベートなAWS環境は既にRoute53を使っていたので)テストを回すための環境がなかなか用意できず、エラーの検証もなかなかできず今に至っていました。
今回、やっとRoudworker用テストAWS環境を用意し、テストを利用して試行錯誤して、やっと「自分の修正の筋が悪そうだ」ということに気づけてCloseしました(すみません)。
やっとテスト環境を手に入れたので
またじっくり検証してみます。