Droneで終わらないビルドをキャンセルする

なぜかDroneでいつまでたっても終わらないビルドが発生したので、キャンセルしようとしたところ、
キャンセルに失敗するというどうしようもない状況になりましのたで、そのときのメモです。

フォーラムを見ると、テーブルのレコードを書き換えるという荒技でした。

https://discourse.drone.io/t/cant-cancel-builds-with-pending-state/783/4

update builds set build_status = 'error'
where build_status='pending'

Drone + Nginx + GitLabの連携

droneの手前でNginxをおいた途端、GitLabの認証がうまくいかなくなり、だいぶハマってしまいました。

発生したエラーはこれだけ。

The redirect URI included is not valid.

GitLab側で見えるエラーなので、それ以上確認のしようがありません。

何度もドキュメントを確認していたら、ちゃんと書いてありました。

erver {
  listen 443;
  server_name your.server.domain;

  location / {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_pass http://drone;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_buffering off;

    chunked_transfer_encoding off;
  }
}

upstream drone {
  server drone-server:8000;
}
~

参考:
http://docs.drone.io/setup-with-nginx/

Droneでデータの永続化を行う

volumesを設定する

結論としては、.drone.ymlにvolumesを書くことで実現できます。

リポジトリをTrustedに変更

ただし、設定状況によってはauthorizeでエラーが発生します。

ホストOSにアクセスすることになるので、リポジトリをTrustedにする必要があるとのことです。

リポジトリの画面から
[Settings] -> [Project Settings] -> [Trusted]
で設定を行います。

admin権限も必要

私の場合はここでもエラーが発生しました。

drone.ioのフォーラムを見ていると、adminユーザーでないと変更できないとのこと。

以下はDRONE_ADMINにユーザをadminとして設定する方法です。

  • docker-compose.yml

docker-compose.yml
DRONE_ADMIN=user_name,username@gmail.com

まとめ

だいぶ端折ってますが、Dockerがわかっていないとつらいです。

しかし、逆にいえばDockerに依存しているので、知っている人には簡単かもしれません。