概要
Mac Book Air (M1 2020)
macOS Big Sur 11.2.2
【M1 BigSur】Jenkins導入編
こちらで書かせたいただいた記事の続きです。
この記事を残しておきたかったのでついでにJenkins導入を書いた次第です。
JenkinsからGitでチェックアウトができればいいので別にUnityでなくてもいいですが今回は確認のために利用しています。
一連の流れを記事にしましたが割と困るのが
BigSurでのgit-lfs filter-process: git-lfs: command not found
エラーの回避方法だと思います。
追記
git lfsのエラーerror: external filter 'git-lfs filter-process' failed
の追記しました。(2021/03/25)
git-lfs filter-process: git-lfs: command not foundのエラーの回避方法の別パターンの提案(未検証)(2022/03/03)
準備
Github
Githubで作成したリポジトリーを使っているのでアカウントは作成しておきましょう。
unityのインストール
・とりあえずUnityはインストールしておいてください。
今回はUnity2020.3.0f1
で試しています。
GitのSSHキー(作っていない場合)
$ ssh-keygen
いろいろ聞かれるみたいですがすべて空白ままエンターして続けました。
生成場所は
Users/[ユーザー名]/.ssh/
に作られるのでこちらを使用してGithubからSSHを登録します。
GithubのアカウントからSettings>SSH and GPC keys
を選択してNew SSH Key
を選択する。
設定 | 内容 |
---|---|
Title | これは好きに入力してください。 |
Key | ここは先ほど作成したUsers/[ユーザー名]/.ssh/id_rsa.pub の中をコピーして貼り付けてください。 |
このように作られます。
JenkinsのUnityプラグインを導入
インストール後に再起動してもらうためにDownload now and install after restart
を選択しました。
インストールできました。
設定したら保存しましょう。
インストールディレクトリにはjenkinsをインストールしたUnityのパスを設定しますが
FinderでUnityからoptionを押しながらするとパスをコピーできます。
ジョブを作成
最初なので
ジョブ名:unity_test
お好きな名前
フリースタイル・プロジェクトのビルド
で作成します。
認証情報を追加します。
追加した認証情報を選択して保存します。
これでプロジェクトの設定はできました。
Unityのビルドをしてみる
リポジトリーの準備ができたのでunityに対してビルドしてみます。
適当にビルドするものを用意して試してみました。
BuildTest.cs(ビルドの確認)
using UnityEngine;
namespace Build
{
/// <summary>
/// ビルドのサンプル
/// </summary>
public class BuildTest
{
public static void HelloWorld()
{
Debug.Log("Hello World!");
}
}
}
Invoke Unity3d Editor
を選択して
ビルドの確認のために作ったビルドをjenkinsから呼び出してみます。
-quit -batchmode -projectPath /Users/[ユーザー名]/.jenkins/workspace/[githubのプロジェクトパス] -executeMethod Build.BuildTest.HelloWorld
/Users/[ユーザー名]/.jenkins/workspace/[githubのプロジェクトパス]
を設定してビルド実行
してみましょう。
ビルド時のエラー
git-lfs filter-process: git-lfs: command not found
GitLFSをインストールしているか確認してなければインストール
% git lfs version
git: 'lfs' is not a git command. See 'git --help'.
git-lfs/2.13.2 (GitHub; darwin amd64; go 1.15.6)
git-lfsをインストール
% brew install git-lfs
追記(2022/03/03)
自分はすでにマウントの設定をして回避しているので未検証ですがjenkins>システム設定>グローバルプロパティの環境変数に
キー
PATH
値
$PATH:/usr/local/bin
こちらを行うだけでlfsの設定を回避できるかもしれないので、一度試してみてもよいかもしれないです。(マウントは面倒なので)グローバルプロパティの設定をしてもダメな場合は素直に下記のマウントを行いましょう。
BigSurではCatalinaと違って読み取り専用な/usr/bin/
などを一時的に無効にしてシンボリックリンクを作成できないみたいなので、Appleの公式の書かれている書き込み可能なマウントパスに設定してgit-lfsのシンボリックリンクを作成します。
・リカバリモードで再起動して実行します(M1の場合は電源ボタンを長押ししてリカバリーモードに入ります。)
セキュリティの確認をします。
% csrutil status
System Integrity Protection status: enabled.
enabledの場合は無効に
% csrutil disable
% csrutil authenticated-root disable
MacOSに再起動します。
ここからgit-lfsのシンボリックリンクを作成するためにマウントフォルダーを作成してディスクをマウントします。
% mkdir ~/mount
% sudo mount -o nobrowse -t apfs /dev/[デバイス] ~/mount
[デバイス]
はディスクユーティリティの値を見ます。
あなたのルートを検索-あなたのルートは/dev/disk1s2s3であればmount実行し、最後のを切り落とす、例えば、あなたは/dev/disk1s2をマウントします
Appleの公式に書かれているの通りにdisk3s1s1
の場合はdisk3s1
でマウントします。
% sudo ln -s /usr/local/bin/git-lfs ~/mount/usr/bin/
% sudo bless --folder ~/mount/System/Library/CoreServices --bootefi --create-snapshot
そのまま再起動
% sudo reboot
error: external filter 'git-lfs filter-process' failed
こちらのエラーはジョブの設定から
ソースコードの管理で追加のGit LFS pull after checkout
を選択をしてください。
参考リンク
【Jenkins】GitのSSH接続をするための認証情報を設定する【GitHub】
JenkinsでUnityプロジェクトをビルドする
Unityコマンドライン引数
「macOS Big Sur 」でgit-lfs filter-process: git-lfs: command not foundに対応する