10
7

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.

JenkinsおじさんがDrone CI オンプレ版 使ってみた

Posted at

はじめに

Drone CIは、クラウド版とオンプレ版があるコンテナベースのCIツール。
職場ではJenkinsおじさんをしているが、Jenkinsから卒業したいので味見含めて、オンプレ版のDroneCIを触ってみた。

環境

Linux Mint 19

起動

下準備

  • docker,docker-composeのインストール
  • ngrokのインストール 参考

ローカルでDroneCIを動かす場合に、パブリックからアクセスする必要があるので、ngrokの利用が必要。
公式だとアカウント作成が手順に含まれるが、そこは割愛して問題ない。

drone ci 起動

ngrokの起動

適当にポートを指定してngrokを起動させておく。

ngrok http 9999

githubアカウントとの連携

ここは参考記事を参照。
oauthに必要なclient,secretなどをコピーしておく。

.envファイルの作成

DRONE_GITHUB_URL=https://github.com
DRONE_GITHUB_CLIENT=ここはgithubから取得
DRONE_GITHUB_SECRET=ここはgithubから取得
DRONE_SECRET=abcdefg
DRONE_HOST=https://849403dd.ngrok.io

DRONE_SECRETは、任意のランダム文字列
DRONE_HOSTは、ngrok実行時に表示されるURL。このホストにアクセスすると、ローカルPC上で動作するDroneCIにフォワードする。

docker-compose.ymlの作成

公式に記載してあるサンプルをそのままコピーして作れば良い。
drone-serverのportのみngrokと整合性を取る必要がある。今回の場合

ports:
 - 9999:8000
 - 9000

になる。

起動

docker-compose.ymlとenvファイルを同じフォルダに配置して、

docker-compose up

起動確認は、https://849403dd.ngrok.io/login にアクセスして、認証ページに飛べばOK。
droneciでログインすると自分のレポジトリの一覧が見えるはず。

お試しビルド

レポジトリに下記の.drone.ymlというビルドスクリプトを追加してビルド。

.drone.yml
pipeline:
        # ステップは順に実行
        gradle-sample:
                # ステップごとにベースとなるdockerイメージを指定
                image: openjdk
                # コマンド一覧
                commands:
                        - ./gradlew hello
        gradle-hello:
                image: openjdk
                commands:
                        - ./gradlew hello

githubのレポジトリ:
https://github.com/yohachiSuga/gradle-sample

.drone.ymlの記法は公式が詳しい。
Droneのポータル>Settingsでビルドトリガーを変更可能。

プラグイン

drone.ioのプラグインは全てDockerコンテナ
マーケットプレイスは公式から。

Jenkinsのジョブを実行するプラグインもある。
特別なジョブ(UIテストやマルチプロセスのテスト等)をJenkins側で定義してdroneから呼び出したり、Jenkinsからの移行の初手に使いそう。
http://plugins.drone.io/appleboy/drone-jenkins/

所感

  • Jenkinsと違ってコンテナベースなので、同じパイプラインでもステップごとに携帯性があるのが特徴的。
  • Jenkinsだと、分散ビルドを行おうとすると、各プラグインが対応しているよね?とか色々確認がいる。一方でコンテナベースはそれが不要みたいで、簡単にスケールできそう。
  • Jenkinsはpipeline as codeは任意だけど、droneはそれを強制化できるのがgood。
  • Jenkinsは自由度やプラグインの多彩さがメリットだけど、管理コストを考えると、個人的にはコンテナベースのCIツールに分配が上がる気がする。

参考記事

10
7
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
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?