はじめに
droneでcloneしてくれたソースでテストをしようとしたら権限エラーで怒られて失敗するトラブルにあった。
rootで動くdockerイメージは必要だが、最低限に留める方法を確立したの共有します。
ちなみに本件をググっても出てこない。困ってる人がいない模様?
droneサーバ側の設定で解決する方法がありそうな気がします。
それかrootユーザでやっちゃえって感じなのでしょうか。でも、ケースによってはdockerイメージを用意する必要がありそう。
原因
droneのデフォルトcloneはroot権限で行われownerがrootになってることが原因です。
ちなみに、デフォルトcloneを無効化し自分で実施してもワークスペース(デフォルト:/drone/src)フォルダの所有者がrootでモードが755のため、一般ユーザがclone(書き込み)ができないです。
解決策
kind: pipeline
type: docker
name: default
steps:
- name: chown
image: centos:centos7
commands:
- chown -R 本来のユーザUID:本来のグループUID . # 例 chown -R 1000:1000
- name: 本来やりたいこと
image: 本来のユーザで動くdockerイメージ
commands:
- ~~~~
rootで動くイメージでchownするってだけですね。
事情がわかってないと意外と行き着くまでに時間がかかりました。
余談
デフォルトのcloneを無効化した上で、最初のstepで空のワークスペースのownerを一般ユーザに変更、次のステップで一般ユーザによるcloneを実施しようとしたところ権限不足で失敗しました。
どうやら、ワークスペースになにもない場合は、次のstepでワークスペースが再作成されてるようです。