600なファイルがあるとcircleci local executeでcheckoutが失敗する

600なファイルがあるとcircleci local executeでcheckoutが失敗することについて書きました

CircleCIのジョブをローカルで実行しようとする。

circleci local execute

このように表示されてジョブの実行に失敗することがある。

cp: cannot open '/tmp/_circleci_local_build_repo/./.git/TAG_EDITMSG' for reading: Permission denied

表題のとおり、権限が600なファイルが存在するとcircleci local execute は確実に失敗する。

今回は、 TAG_EDITMSG というファイルが良くなかった。

akira@x1yoga:~/sandbox/project1/.git$ ls -la
total 80
drwxrwxr-x  8 akira akira  4096 12月 13 10:18 .
drwxrwxr-x 10 akira akira  4096 12月 12 12:10 ..
drwxrwxr-x  2 akira akira  4096 11月 30 18:14 branches
-rw-rw-r--  1 akira akira   703 12月 12 17:19 config
-rw-rw-r--  1 akira akira    73 11月 30 18:14 description
-rw-rw-r--  1 akira akira  5369 12月 13 09:21 FETCH_HEAD
-rw-rw-r--  1 akira akira    33 12月 12 11:59 HEAD
drwxrwxr-x  2 akira akira  4096 11月 30 18:14 hooks
-rw-rw-r--  1 akira akira 14213 12月 12 17:19 index
drwxrwxr-x  2 akira akira  4096 11月 30 18:14 info
drwxrwxr-x  3 akira akira  4096 12月  6 13:02 logs
drwxrwxr-x 87 akira akira  4096 12月 13 10:17 objects
-rw-rw-r--  1 akira akira    41 12月 12 11:59 ORIG_HEAD
-rw-rw-r--  1 akira akira  2680 11月 30 18:14 packed-refs
drwxrwxr-x  5 akira akira  4096 12月  6 14:34 refs
-rw-------  1 akira akira    82 12月 13 10:18 TAG_EDITMSG

このファイルができた経緯について。git tag -a v1.0.0 した際にタグのメッセージを編集するためエディタが開く。ここで何も入力せずにエディタを閉じる。このとき、権限が 600TAG_EDITING というファイルが残る。

今回のケースで circleci local execute を成功させるためには単に TAG_EDITMSG を削除すれば良い。