Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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ツールに分配が上がる気がする。

参考記事

https://qiita.com/kurkuru/items/585ca5c83c48664273b2

rymansat
普段は宇宙開発に関わっていないサラリーマンが身近で誰でもできる宇宙開発を実現させることがリーマンサット・プロジェクト(Ryman Sat Project=rsp.)の目的です。キューブサットの開発をはじめ、宇宙を軸として様々なコミュニティやクリエイターとコラボレーションし、民間宇宙開発に関するネットワークを強化、拡張することを目指して活動しています。
https://www.rymansat.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした