【M1 BigSur】Jenkins導入編

# 概要

Mac Book Air (M1 2020)
macOS Big Sur 11.2.2

初めてのjenkinsの導入がM1 MacのBigSurだったの自分なりにjenkinsの導入についてまとめてみました、導入するだけならあまりM1やBigSurだからみたいなものはなさそうでした。
bashで行うものが多いみたいですがデフォルトのターミナル設定zshで実行しています。


# 準備 Homebrewインストール

なんにしてもbrewを使わないといけないのでHomebrewをインストールしないといけません。

armでの実行など分かれていますが今回はRosettaを使用します。

<img width="500" alt="rosetta" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/e8301481-3b33-7c6d-feff-8464972e4591.png">


チェックをするとターミナルの情報を見るからRosettaを使用して開くにしてターミナルを再起動する必要があります。

念のため確認してみましょう。

```:ターミナル：-zsh
$ uname -m
```

```:結果
x86_64
```

チェックが入っているとx86_64とでます。

Homebrewがインストールされているか念のため確認

```:ターミナル：-zsh
% brew -v
```

```:失敗
zsh: command not found: brew
```

なければインストール

```:ターミナル：-zsh
% /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
パスワードをを聞かれたら入力してインストールされるのを待ちます。

```:ターミナル：-zsh
% brew -v
```

```:結果
Homebrew 3.0.7
```

バージョンが表示されたら入力済みです。

# jenkinsのインストール

```:ターミナル：-zsh
% brew install jenkins
```
ダウンロードされるのを待ちます。

# jenkinsを起動から登録

インストールできらたjenkinsを起動します。

```:ターミナル：-zsh
% brew services start jenkins
```
```:成功
==> Successfully started `jenkins` (label: homebrew.mxcl.jenkins)
```
ローカルでアクセスしてみましょう
http://localhost:8080/

<img width="500" alt="jenkins01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/f85baeff-7b06-f386-1bbb-ae1e69745d5e.png">

```:ターミナル：-zsh
% sudo cat /Users/im0039kp/.jenkins/secrets/initialAdminPassword
```
赤文字で入力されているパスのファイルを確認します。
`/Users/[ユーザー名]/.jenkins/secrets/initialAdminPassword`
と自分画面に表示されているパスにしてください。

<img width="500" alt="jenkins02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/77270b12-4f8f-a3fa-7860-0d09f80b6707.png">

とりあえずデフォルトプラグインでインストールします。

<img width="500" alt="jenkins03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/8619c4bf-0e2b-4f7b-775b-e4c35372c3a3.png">

完了するまで待ちます。

<img width="500" alt="jenkins04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/44fccbde-9ace-6948-e47a-dcf16b3d05d3.png">

最初のadminユーザーを作成しましょう。

その後は特に入力するなくそのまま続けます。
<img width="500" alt="jenkins05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/da29b748-7170-2ec2-4651-a5ade12c17a6.png">

<img width="500" alt="jenkins06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/667473c2-919a-2f50-1b15-46dc18a0eada.png">

|<img width="500" alt="jenkins07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/881e6a1a-ad5c-6c3a-a225-84e756937b59.png">
|:--|

jenkinsに接続できました。

# 同じネットワーク上の別のPCからjenkinsにアクセスする

jenkinsに別のPCからアクセスしたいので設定します。

まずはjenkinsのバージョンを確認します

```:ターミナル：-zsh
% jenkins --v
```

```:結果
Running from: /usr/local/Cellar/jenkins/2.284/libexec/jenkins.war
```

調べたバージョン（2.284）をつかってplistを編集します。

```:ターミナル：-zsh
% vi /usr/local/Cellar/jenkins/2.284/homebrew.mxcl.jenkins.plist
```

`% vi /usr/local/Cellar/jenkins/[バージョン]/homebrew.mxcl.jenkins.plist`
[バージョン]には自身のjenkinsバージョンにしてください。


viエディターで編集していますが。`<string>--httpListenAddress=0.0.0.0</string>`にします。
（今回は制限なしの0.0.0.0にしています。）

<img width="500" alt="jenkins08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/c041704d-8d3a-2d2f-0c1a-9877a099be89.png">

一応設定の再読み込みをしておきます。jenkins管理から設定の再読み込みをします。

<img width="300" alt="jenkins10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/f381fa53-76ef-1edc-1811-56d2dbcc2677.png">
<img width="300" alt="jenkins11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/c43ab6ca-c603-2db2-82d6-86b0b34c271e.png">


別PCから接続
jenkinsのインストールされているPCのIPアドレスを確認します。
システム環境設定...のネットワークから確認できます。

```:サイト
http://[IPアドレス]:8080
```
[IPアドレス]は先ほどネットワーク設定で確認したものです。

同じLANのPCから`http://[IPアドレス]:8080`に接続してみましょう

|<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/c2ed49dc-db08-478c-5e6e-ef8cd3840ea6.png">
|:--|

最初はパスワードを聞かれるのでjenkinsで登録したユーザーとパスワードで接続します。
これで別のPCから接続できるようになりました。
（WindowsのPCからアクセスしています。）

接続できなければjenkinsを再起動してみてください。

```:ターミナル：-zsh
% brew services restart jenkins
```

# 接続が切れるとき

別PCから接続しているときにアクセスできない場合はスリープになっている可能性があるので
ディスプレイがオフになった時にスリープにしないようにしましょう。

システム環境設定...>省エネルギー(バッテリー)からディスプレイがオフのときにコンピューターを自動でスリープさせないにしましょう。
<img width="500" alt="jenkins12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/f16f029a-74e2-62ea-d3c7-fde2526df8c8.png">

# Jenkinsの管理で「リバースプロキシーの設定がおかしいようです。」と出る

リバースプロキシーの設定がおかしいようです。と出ることがあります。

|<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/274b1811-1ea9-4ead-c89e-6bc785a1f830.png">
|:--|

[公式リバースプロキシ-問題 ](https://www.jenkins.io/doc/book/system-administration/reverse-proxy-configuration-troubleshooting/#jenkins-says-my-reverse-proxy-setup-is-broken)

こちらを読んでも特に何かをした覚えがなかったので。

jenkinsの管理からシステムの設定で

|<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/dea59e2a-e753-6e5b-4976-933a312ac282.png">
|:--|

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175167/47dfba41-46e3-fde8-5e28-f991e6a17230.png)
|:--|

ここを別のPCから接続したIPアドレスを設定して保存すると警告が出なくなると思います。

# 最後に

Homebrewの位置がx86_64とarm64で違い全然brewが実行されないなどと思っていました。
RosettaにしておくとiTunesのインストールなどで困ることがあるみたいです。



# 参考リンク

[Apple SiliconにおけるHomebrewのベストプラクティス](https://qiita.com/yujiod/items/56002a7cef5b5a3be3fb)
[Jenkinsインストールと初期設定メモ](https://qiita.com/yuuman/items/622347f86e444b8218b3)
[Jenkins を Mac にインストールして LAN内の PC から接続するまで](https://qiita.com/enuesutea/items/45527625362e5f3cc17b)
[Macのスリープ/スリープ解除を設定する
](https://support.apple.com/ja-jp/guide/mac-help/mchle41a6ccd/mac)