[7] 
[DFN[Drone CI]]
は、
[[CI]]
[[ソフトウェア]]の1つです。

[REFS[
-
[1] [CITE@en[[[Drone CI]] – Automate Software Testing and Delivery]], [TIME[2022-03-22T03:11:49.000Z]] <https://www.drone.io/>
]REFS]

* 版

[28] [[OSS]] だと思って使ってたらいつの間にか [[OSS]] 版と非 [[OSS]] 版にわかれていた。困ったものだ、要注意。

* インストール

** 環境変数 [VAR[○○]] が効かない

[8] 
[CODE[DRONE_OPEN]],
[CODE[DRONE_ORGS]],
[CODE[DRONE_ADMIN]],
[CODE[DRONE_SECRET]],
[CODE[DRONE_GITHUB]]
が反映されない
→ 
その[[環境変数]]は古い。最新のドキュメントを読みましょう。

** 環境変数 [CODE[DRONE_DATABASE_DRIVER]] が効かない

[33] ドキュメントに明記されておらずわかりにくいですが、
[CODE[DRONE_DATABASE_DRIVER]]
で [[MySQL]] や [[PostgreSQL]]
が使えるのは Enterprise Edition ([[独占ソフトウェア]]) の話。
Community Edition ([[OSS]])
では
[[SQLite]] 固定です。

** サーバーが起動しない、エラーも何も表示されない

[9] 
[[MySQL]] データベースを指定していて、
ネットワーク的に接続不可なとき、
エラーも何も表示されず先に進まない (起動しない) ことがある模様。

** 管理者ユーザーでログインしたはずなのに一般ユーザーと同じ画面しか見えない

[10] 
[[環境変数]]
[CODE[DRONE_ADMIN]]
は古い。
[CODE[DRONE_USER_CREATE]]
で設定しましょう。

* アクセス権限について

** GitHub 側でアクセス権限が取消されたリポジトリーはどうなるのか?

[11] 
[[GitHub]] 側のアクセス権限がある状態で表示できていた[[リポジトリー]]が、
その後 [[GitHub]] 側でアクセス権限が取消されたとき、
[[Drone CI]] 側ではどうなるのか。

[12] 
直後には何も起きません。そのまま表示・操作できる状態です。

[13] 
自分で「SYNC」ボタンを押すと [[GitHub]] と状態が同期されるようで、
そのリポジトリーが表示できなくなります。
(管理権限を使って API 経由で SYNC させても同じことができる?)

** 管理者ユーザーは何でも見れるのか?

[14] 
管理者ユーザーはどの[[リポジトリー]]にもアクセス出来る模様。
リポジトリー一覧はないが、
[[GitHub]] リポジトリーの [[URL]] を知っていれば、
自分で [[URL]] を推測して直接アクセスできる。

[15] 
そこから設定ページを開いて、管理者ユーザーだけが変更できる設定項目も書き換え可能。

** 2回目のログインですが、初回のような登録画面が出てきます

[16] 
なんでか知らんけどそうなります。利用に支障はないようですので気にしないのが吉。

* 設定

** 組織の秘密を登録したいが画面がない

[23] 
組織の秘密の設定は、リポジトリーの設定ページにあります。
「組織の設定ページ」のようなものがないので見つけにくいですね。

** [CODE[DRONE_RUNNER_CAPACITY]]

[26] 
runner
実行時の[[環境変数]]
[CODE[DRONE_RUNNER_CAPACITY]]
は実行環境の [[CPU]] コア数くらいにするのが良いなどと説明されています。

[27] 
ビルドの処理内容次第、たとえばテストするサーバープロセスの個数などを踏まえて、
実際上はそれよりももっと少ない個数の方が良いのかもしれません。


* 実行

** 1時間ちょうどで自動キャンセルされてしまいます

[17] 
リポジトリーごとの設定ページにタイムアウト設定があります。デフォルトが1時間です。

** 実行タイムアウトがなぜか変更できません

[18] 
リポジトリーの設定ページのタイムアウトを変更して保存すると、成功したと表示されるのに、
タイムアウト時間がデフォルトの1時間に戻っています。何度繰り返しても同じです。

[19] 
管理者ユーザーでログインして変更すると、ちゃんと変更が反映されます。不思議ですね。

[20] 
管理者ユーザーしか変更できない設定項目は一般ユーザーには表示されないみたいなので、
タイムアウトは本来一般ユーザーでも変更可能のはずなのですが。。。

** タイムアウトでキャンセルされると、失敗時の手順が実行されません

[21] 
[CODE[.drone.yml]] 側で失敗時に実行する step を書いていても、
タイムアウトによるキャンセルは時間経過による強制中断で、
失敗時の処理もすべて無視してしまいます。

[22] 
回避するには Drone のタイムアウトを使わないで自前でタイムアウトを実装するしかなさそうです?

** artifacts は?

[25] 
[[artifacts]] の機能 (ビルド中に作成したファイルにビルド終了後アクセスできるようにするもの)
は
[[Drone CI]] の標準の機能にはなく、やりたければビルド内に自前で実装する必要があります。 
[SRC[>>24]]

[REFS[
-
[24] 
[CITE@en[How to access the built artifacts - Support - Drone]], [TIME[2022-04-07T03:27:54.000Z]] <https://discourse.drone.io/t/how-to-access-the-built-artifacts/1148/5>
]REFS]

* メモ

[6] [CITE[Install On Linux | Drone]], [TIME[2022-03-22T04:20:59.000Z]] <https://docs.drone.io/runner/docker/installation/linux/>

[3] [CITE@ja[OSS Drone CI の 構築方法 - Qiita]], [TIME[2022-03-22T03:17:11.000Z]] <https://qiita.com/kurkuru/items/585ca5c83c48664273b2>

[2] [CITE@ja[Drone CI で手軽に Docker コンテナで並列にジョブをぶん回す環境を構築した - シンクロ・フード エンジニアブログ]], [TIME[2022-03-22T03:11:57.000Z]] <https://tech.synchro-food.co.jp/entry/2018/09/18/184426>

[4] [CITE[Database | Drone]], [TIME[2022-03-22T03:29:58.000Z]] <https://docs.drone.io/server/storage/database/>

[5] [CITE@en[Usage of DRONE_USER_FILTER - Support - Drone]], [TIME[2022-03-22T03:47:52.000Z]] <https://discourse.drone.io/t/usage-of-drone-user-filter/5810/2>

([CODE[DRONE_USER_FILTER]] は初回登録時に適用されるが、以後のログイン時には検査されない。)


[29] [CITE@en[GitHub - harness/harness: Harness Open Source is an end-to-end developer platform with Source Control Management, CI/CD Pipelines, Hosted Developer Environments, and Artifact Registries.]], [TIME[2024-10-11T02:58:48.000Z]] <https://github.com/harness/harness>



>Harness Open Source represents a massive investment in the next generation of Drone. Where Drone focused solely on continuous integration, Harness adds source code hosting, developer environments (gitspaces), and artifact regestries; providing teams with an end-to-end, open source DevOps platform.
>
The goal is for Harness to eventually be at full parity with Drone in terms of pipeline capabilities, allowing users to seemlessly migrate from Drone to Harness.
>
But, we expect this to take some time, which is why we took a snapshot of Drone as a feature branch drone (README) so it can continue development.


[30] なんかややこしいことになってるな

[31] [CITE@en[GitHub - harness/harness at drone]], [TIME[2024-10-11T03:00:11.000Z]] <https://github.com/harness/harness/tree/drone>


[32] [CITE@en[harness/BUILDING_OSS at drone · harness/harness · GitHub]], [TIME[2024-10-11T03:01:14.000Z]] <https://github.com/harness/harness/blob/drone/BUILDING_OSS>



[SEE[ [[Woodpecker CI]] ]]