5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

drone.io 1.0を使ってみる

Last updated at Posted at 2019-04-08

drone.io 1.0を使ってみる

githubのprivateレポジトリのCI/CDにdroneio0.8を利用していたのですが、1.0が出たということで移行できるか簡単に検証しました。
Upgrading (Important)を元に変更点を見つつ実際に動かします。
また、cronjobsというナイトリービルドを行うための機能が1.0では設定できるようなので、そちらも検証します。

droneサーバ立ち上げまで

GitHub連携、Single Machineで立ち上げます (https://docs.drone.io/installation/github/single-machine/)。
OAuth Application作成手順はほぼ変わっていないので省略します。

注意点としては、サーバに与えるパラメータが大きく変わっているので、一から見直して設定する必要あります (https://docs.drone.io/reference/)。
以下がhttpかつ特定ユーザの利用に縛ったdocker-compose.ymlです。
DRONE_USER_FILTER で連携できるユーザまたはOrganizationを制限できます。

version: '3'
services:
  drone:
    image: drone/drone:1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/drone:/data
    ports:
      - "80:80"
      - "443:443"
    environment:
      - DRONE_GITHUB_SERVER=https://github.com
      - DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
      - DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
      - DRONE_SERVER_PROTO=http
      - DRONE_USER_FILTER=${DRONE_USER_FILTER}

docker-compose up -d コマンドでサーバを起動すれば、GitHub連携ののちdroneのWebインタフェースが確認できます。
何か問題が起きた場合には、環境変数に DRONE_LOGS_DEBUG=true を与えて docker-compose logs -f drone でログを追えます。

成功するとリポジトリ一覧が表示され、アクティベーションすると次のようなフィード一覧が表示されます。

repository.png

pipelineの記述

構文はMigration from 0.8にも書いてあるとおり、一部変わっているので移行時には要注意です。
Railsプロジェクトの一例を載せておきますdrone-rails-example

kind: pipeline
name: default

steps:
- name: spec
  image: ruby:2.6.1
  environment:
    DATABASE_HOST: 'db'
    DATABASE_PORT: 3306
  commands:
    - bundle install
    - bundle exec rubocop -R -fs app spec
    - bundle exec rspec

- name: notify-slack
  image: plugins/slack
  settings:
    webhook:
      from_secret: webhook

services:
- name: db
  image: mysql:5.7
  environment:
    MYSQL_DATABASE: 'drone_example_test'
    MYSQL_USER: 'drone_example_test'
    MYSQL_PASSWORD: 'drone_example'
    MYSQL_RANDOM_ROOT_PASSWORD: true
    TZ: 'Asia/Tokyo'

Web UIも一新されているようで、きれいで見やすくなっています。

commit.png

cronjobs

1.0から新しく入った機能としてcronjobsが挙げられます。現時点ではドキュメント上に記載はないですが、設定を行うことは可能です。
次のようにjob名とどの程度の頻度でビルドを行うかを指定できます。
cronとついていますが、指定時刻での実行は現時点では仕様としてできないと言及されていました (リンク)。

cronjobs.png

注意: 1時間に1度pipelineが実行されることを確認しましたが、上記の .drone.yml だと1時間に1度Slack通知が来てしまうのでconditionなどによる工夫が必要です。
現時点でstepのconditionにcronjobsを指定してexcludeする機能はないようなので、改善を待つしかなさそうです (Issue)。

参考

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?