search
LoginSignup
2

More than 5 years have passed since last update.

posted at

updated at

Organization

Drone.ioのOSS版をAWS ECSに構築(ALB+SSL)

この記事はWHITEPLUS Advent Calendar 2016 3日目になります。

インターネットから申し込める宅配クリーニングサービスの開発基盤やインフラをよく触っているkai-zoaです。

いままで、私がいる開発チームではCircleCIを使ってきましたが、ワケあって今drone.ioの利用を検討しています。

今回のCIサーバーの要件

なぜいまdrone.ioかってのは微妙なところですが‥、今回の要件は下記。

  1. 当然だけど単体テストを実行できる
  2. 開発時と同じバージョンの環境でビルドとテストを行う
  3. テスト完了後に本番にデプロイする

3つめがワケあってと書たところで、デプロイの処理はAWS上の本番と同じVPC内で行のがベストでした。

そこでOSS版が公開されていて好きな環境に構築できるdrone.ioに目をつけました。
また、drone本体やプラグインのほとんどが普段読み書きしてるGoで実装されているので、なにかあればコード読めるところが導入に前向きな理由だったりもします。

公式のCloudformationテンプレートを使用してECSに構築する

下記に公式のテンプレがあるので実はこれを使えば瞬殺です。
https://github.com/drone-demos/drone-on-ecs

githubと連携する場合の例です。
あらかじめOAuthアプリケーションとして登録しておいてクライアントIDとシークレットをパラメーターに指定します。

git clone https://github.com/drone-demos/drone-on-ecs.git
cd drone-on-ecs
cat <<EOF > params.json
[
    {
        "ParameterKey": "VPC",
        "ParameterValue": "vpc-hoge"
    },
    {
        "ParameterKey": "Subnets",
        "ParameterValue": "subnet-hoge,subnet-piyo"
    },
    {
        "ParameterKey": "KeyName",
        "ParameterValue": "aws-hoge"
    },
    {
        "ParameterKey": "DroneRemoteDriver",
        "ParameterValue": "github"
    },
    {
        "ParameterKey": "DroneRemoteConfig",
        "ParameterValue": "https://github.com?client_id=...&client_secret=..."
    },
  {
    "ParameterKey": "DroneInstanceType",
    "ParameterValue": "t2.small"
  },
  {
    "ParameterKey": "IncomingHttpCidr",
    "ParameterValue": "0.0.0.0/0"
  }
]
EOF

aws cloudformation create-stack --stack-name drone-ci \
        --template-body file://template.json \
        --parameters file://params.json \
        --capabilities CAPABILITY_IAM

はいできました。

コンテナに割り当てるメモリーサイズが既定値の場合、インスタンスタイプがt2.small相当以上の必要がありました。

ALB対応してSSLを使う

これで終わるのも寂しいので…ちょっとテンプレをいじります。

公式のテンプレだと、ELBはいわゆるClassic LoadBalancerを構築するのでこれをALBにして、リスナーもHTTPSにしてCertificateManagerの証明書を利用するようにしてみました。
https://github.com/WHITEPLUS/advent-calendar2016-drone-on-ecs

変更の差分はこちら

参考にしたテンプレ

そして

でもまだテストを実行してません!(続くかも

明日の4日目はデザイナーのnimoni373です。

ホワイトプラスではエンジニアを募集しています

ホワイトプラスでは、新しい技術にどんどん挑戦したい!という技術で事業に貢献したいエンジニアを募集しております。!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2