Xcode Cloudのwarning"The ci_post_clone.sh is not executable and..."への対応
事象
カスタムビルドスクリプトを設定した上で、Xcode Cloudを実行したときに、次のようなwarningがログに出力された。
The ci_post_clone.sh is not executable and was run using zsh (default shell on macOS). To make sure your script runs correctly, make the file executable using
chmod +x
and add an appropriate shebang line.
なお、ci_post_clone.shに限らず、他のカスタムビルドスクリプトの場合も同様の原因で起こりえます。
The ci_pre_xcodebuild.sh is not executable and ...
The ci_post_xcodebuild.sh is not executable and ...
原因
カスタムビルドスクリプトの実行権限がないこと。
解決方法
Apple公式ドキュメントに記載があった。
In Terminal, make the shell script an executable by running chmod +x $filename.sh.
このとおり、Terminalで対象のスクリプトファイルの実行権限を追加するコマンドを実行する。
chmod +x $filename.sh
// 例) カスタムビルドスクリプトとして、ci_post_clone.shを使っている場合
chmod +x ci_post_clone.sh
するとGitに次のような差分ができるので、これをpushする。
changed file mode 100644 → 100755
補足説明
コマンドの説明
chmod +x $filename.sh
の意味を説明する。
-
chmodコマンド:
chmodは「change mode」の略で、ファイルのアクセス許可を変更するためのコマンド。 -
+xオプション:
+xは「実行可能(executable)」という意味で、指定したファイルに実行権限を追加する。 -
$filename.sh:
$filename.shはスクリプトファイルの名前。カスタムビルドスクリプトを対象とする場合は、以下のいずれか。- ci_post_clone.sh
- ci_pre_xcodebuild.sh
- ci_post_xcodebuild.sh
引用元: https://developer.apple.com/documentation/xcode/writing-custom-build-scripts
つまり、 chmod +x $filename.sh
は、「$filename.shという名前のシェルスクリプトを実行可能にする」という意味。
Gitの差分で表示される数字の説明
Gitの差分で表示される100644と100755は、ファイルのパーミッション(アクセス権限)を示すモード。この数字はファイルの種類とアクセス権限を表現している。
-
100644:
- 100:通常のファイル
- 6:所有者(user)の読み取り・書き込み権限(rw-)
- 4:グループ(group)の読み取り権限(r--)
- 4:その他(others)の読み取り権限(r--)
-
100755:
- 100:通常のファイル
- 7:所有者(user)の読み取り・書き込み・実行権限(rwx)
- 5:グループ(group)の読み取り・実行権限(r-x)
- 5:その他(others)の読み取り・実行権限(r-x)
Discussion