LoginSignup
7
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-03

この記事は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です。

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

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

7
2
0

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
  3. You can use dark theme
What you can do with signing up
7
2