Jenkins Blogななめ読み: Jenkins macOS native installer deprecation

## はじめに

みなさまこんにちは。
こちらは[Jenkins Advent Calendar](https://qiita.com/advent-calendar/2019/jenkins) 2日目の記事になります。

Jenkinsには、過去大変お世話になったのですが、最近キャッチアップできておらず...。
またいつか、ユーザとして、1ファンとして関わりたいなと思っていたところ、下記のTweetを発見しました。

<blockquote class="twitter-tweet"><a href="https://twitter.com/jenkinsci/status/1185264348366823430" /></blockquote>

作者の[川口さん](https://twitter.com/kohsukekawa)が、この継続的インテグレーションツールを作り始めたのが**2004年**。
前身のHudsonの時代を含め、15年にもなるんですね！

Jenkinsのコミュニティやカンファレンスといったものには参加できず、詳しいことは語れない1ユーザではありますが、この機会に、Jenkinsの公式のブログを斜め読みしてご紹介してみようと思います。
（なんとか理解できるもののみですが...）

12月の間で、いくつか取り上げできそうであれば、アドベントカレンダーに他に記載していこうと思います。

## 今回のななめ読み

今回は、[Oleg Nenashev](https://jenkins.io/blog/authors/oleg_nenashev/)さんからの記事を眺めてみます。

### 11/25: Jenkins macOS native installer deprecation

- https://jenkins.io/blog/2019/11/25/macos-native-installer-deprecation/

Jenkinsは、WARファイル、Dockerイメージ、そしてOSのネイティブのインストーラで提供されています。これらは、週1回の最新版リリースと、[LTS](https://jenkins.io/download/lts/)という12週（およそ3ヶ月）に1回の安定版リリースがあります。

#### MacOS版ネイティブインストーラー提供の取りやめについて

この記事では、MacOS版のネイティブインストーラー提供を取りやめるとのアナウンスになっています。また、その代替手段の提供についても触れられています。

> In this blog post, we announce the upcoming deprecation of the macOS native installer. We will review the replacement options and the rollout plan.

#### Why?

取りやめの理由や流れについては、こんな感じです。

- 各種のインストラーを提供するのは大変な労力がかかること
    - テストや環境の用意といった点で大変
- そのインストーラーを必要としているユーザが少なくなってきたら、取りやめるか3rdパーティにお願いして提供してもらうかのどちらかになる
- MacOSに関してはGUIのネイティブインストーラと、[Homebrew](https://brew.sh/) での提供の2つがある
    - 現在の主流はHomebrewとなっており、ネイティブインストーラーは取りやめるのが妥当との判断になった

**なぜこのタイミングで取りやめ？**

- 端的に言うと、Jenkinsのリリースパイプラインを、**Microsoft Azure**上のKubernetesを利用するように進めているから
    - この環境ではMacOSマシンとインストーラを提供することができない
    - このあたりの件は、12/5開催の[Jenkins World 2019 Europe in Lisbon] (https://devopsworldjenkinsworld2019lisbo.sched.com/event/Uara) でお話があるよ、とのこと
- MacOSだけ別のプラットフォームを用意したり、メンテナンスするのは非常にコストがかかるので、取りやめの方向で 
- [Developer向けのJenkinsメーリングリスト](https://groups.google.com/forum/#!topic/jenkinsci-dev/xc-lDVsr0bQ)でお話が決まった模様

#### Replacing native installers

- MacOSのネイティブインストーラの代替手段としては、手動でサービスを起動させるか、Homebrewを使うかのどちらか
- ネイティブインストーラを使っている場合は、バックアップを行ってからの移行するように呼びかけ

それぞれの詳細や留意点は、以下に続きます。

##### Managing Jenkins with WAR file on macOS

ネイティブインストーラがすでに入っていて、Jenkinsも稼働しているならば、アップデートは WARファイルを差し替えるだけで良いとのこと。
（/Applications/Jenkins/jenkins.war を差し替え）

##### Managing Jenkins with Homebrew

Homebrewを使う場合は、Weeklyリリース版と、LTSリリース版の2つがあるので、それぞれ別のFormulaeを使う形になるとのこと。

- https://formulae.brew.sh/formula/jenkins (jenkins)
- https://formulae.brew.sh/formula/jenkins-lts (jenkins-lts)

上記は、Homebrewコミュニティによる3rdパーティからの提供の位置付けになるので、Jenkinsのメインのリリースのタイミングとは少し遅れる可能性はあるとのことです。

**ネイティブインストーラからHomebrew版への移行の注意点**

バックアップが強く推奨されています。
現時点で利用しているバージョンと、Homebrewでインストールされる新しいバージョンとの間で、自動での移行ツールは提供されないので、最悪JENKINS_HOME/ 以下の設定などが壊れる可能性があるから、とのこと。

Homebrewを使っての移行の手順は、Jenkins公式サイトでは提供しないようですが、以下のようなサンプルコマンドが提示されています。

- Install the latest Weekly version: brew install jenkins
- Install a specific Weekly version: brew install jenkins@YOUR_VERSION
- Start the Jenkins service: brew services start jenkins
- Restart the Jenkins service: brew services restart jenkins
- Update the Jenkins version: brew upgrade jenkins

##### Rollout plan

提供の停止は、Jenkinsのリリースフローが切り替わり次第とのことです。

1.  Jenkins 2.206とJenkins LTS 2.204.1から、MacOS版インストーラーはDeprecatedになる旨を提示する
2.  Jenkinsの新しいリリースフローが整い次第、Weekly版のインストーラーは提供が停止される
    - 過去分のリリースに関してはアーカイブから取得できる
3.  LTS版についても、Jenkinsの新しいリリースフローが整い次第提供停止になる
    - 同じく、過去分のリリースに関してはアーカイブから取得できる

#### Questions and feedback

メーリングリストのスレッドを参照の上、[プラットフォーム毎の専用のSIG](https://jenkins.io/sigs/platform/) (special interest group)でやりとりを、とのことです。
MacOS以外にも、インストーラーの見直しが将来ありそうです。

### ななめ読みの雑感

久しぶりにJenkinsの公式サイトを覗いてみましたが、「Jenkinsのリリースパイプラインとして、**Microsoft Azure**上のKubernetesを利用する」といったあたりに、知らぬは自分ばかりなり、な感想でした。

確かに、公式サイトのコミュニティサポーターのロゴに、一番最初にMicrosoft (Azureへのリンク）が貼られています。
気がついたら、Azure Kubernetes Service(AKS)でのJenkinsの利用についてのドキュメントも、たくさん出ているのですね....。

さて、この次ですが、テクニカルな内容は追いつける自身がないのですが、ドキュメンテーションやプラグイン情報について、また斜め読みしてご紹介できたらと思います。

ともあれ、**Jenkins 15years**、すごいことですね！