drone.io でsshしてあれやこれやする

この記事は drone.io Advent Calendar 2017 - Adventar の9日目の記事です。

drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。

github.com

droneはテストを走らせるのが主な機能ですが、簡易的ではありますがデプロイを行うこともできます。

drone-ssh plugin

まずはデプロイ用の鍵を作成します。パスフレーズ入れられないので、パスフレーズなしで作成してください。

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

公開鍵はデプロイ先に仕込んでください。秘密鍵はdroneに設定します。 リポジトリの画面から「Secrets」を開いてSecret Namessh_key、 Secret Value秘密鍵をコピペして保存してください。

f:id:ashphy22:20171206233734p:plain

さて SSH | Plugins | Drone の設定を.drone.ymlに追加しましょう。

pipeline
  deploy:
    image: appleboy/drone-ssh
    host: example.com
    username: 'root'
    port: 22
    secrets: [ ssh_key ]
    script:
      - echo hello
    when:
      branch: master

secrets: [ ssh_key ]秘密鍵を指定します。 scriptには実行したいコマンドを書きますが、複数行書けるのであとはなんでもできます。

whenでmasterブランチへの変更時にのみに設定すればプルリクエストをマージしたときに自動でデプロイをする設定も実現できます。