GitLab 9.1 リリース

# GitLab 9.1 リリース
GitLab 9.1 がリリースされました!

気になるニュースがいくつかありましたのでそちらも合わせて紹介します。


## [Introducing paid subscriptions on GitLab.com](https://about.gitlab.com/2017/04/11/introducing-subscriptions-on-gitlab-dot-com/)
5/1 から [GitLab.com](https://gitlab.com) への課金が始まるようです。と言っても無料プランもきちんと用意されていて、ほとんどの場合は困ることはなさそうです。

> For the past few years, we've run GitLab.com as our free SaaS offering, featuring unlimited public and private repositories, unlimited contributors, and access to key features, like issue tracking, code review, CI, and wikis. None of those things are changing! We're committed to providing an integrated solution that supports the entire software development lifecycle at a price where everyone can contribute.

プライベートプロジェクトや CI も含めて、主要機能を無料で提供するという約束は続けていくとのことです。無料プランで、現状から制限されるのはこの二点のようです。

* プライベートリポジトリの Shared Runner が月 2,000 分までに制限されます (グループで合計してのようです)
* GitLab CE の機能しか使えなくなる?

後者はちょっと確証はないのですが、

> As always, everyone will be able to access GitLab Community Edition features for free.

とあるので、EE の機能が欲しければ Bronze Plan (月 $4) を契約してねっていう風に読めます。

[GitLab.com の料金プラン](https://about.gitlab.com/gitlab-com/)に料金とサービスが書かれています。

* パブリックプロジェクトでは、Shared Runner の利用制限はなし
* プロジェクト専用の Runner はプライベートでも利用制限はなし
* リポジトリやグループは今までどおりたくさん作れる

ってことですね。


## [How GitLab 9.0 Boosts Collaboration Through Visibility, Accountability, and Measurement](https://about.gitlab.com/2017/04/14/enterprise-story-9-0/)
GitLab 8.0 - 8.17 の間は "Idea to Production" がモットーでしたが、9.0 からは "Your DevOps toolchain" に変わったようです。Subgroups の導入もその一環なんだとか。

Microservices も視野に入っているようで、おそらく複数のプロジェクトを CI で連携させるというのも対応してくるんでしょうか? ちょっと楽しみですね。


## 変更点
今回も個人的に気になる変更点を紹介したいと思います。


### Gitaly の設定変更
おそらく、Omnibus Package でインストールされている方は関係ないと思うのですが、Gitaly の設定方法が変更されたようです。

> If you installed Gitaly in GitLab 9.0 you need to make some changes in gitlab.yml, and create a new config.toml file.

ソースインストールしていて 9.0 で Gitaly を導入した方はアップグレード時は要注意です。

詳しくは、[9.1 へのアップグレードマニュアル](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/9.0-to-9.1.md#10-optional-install-gitaly)をご覧ください。

なお、Gitaly は 9.1 でもまだオプション扱いで、必ずインストールしなければならないというわけではないようです。


### [Service Desk (EEP Only)](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#service-desk-eep)
簡単に言うと、機能を有効にするとサービスデスク専用のメールアドレスが発行され、そこに顧客がメールをすると Issue に投入される機能、らしいです。返信は Issue のコメントとして書くんだそうです。



### [Canary Deployments (EEP Only)](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#canary-deployments-eep)
CE の機能ではないのですが、ちょっと気になります。

Google Chrome Canary のような安定ベータ版 (?) のリリースをサポートする機能のようですが、説明を読んでもよく分かりませんでした...

どうでもいいのですが、Canary って、炭鉱に連れて行ったカナリア (カナリアが息絶えたら酸欠になるからみんな逃げる) なんですね。ちょっと悲しい。


### [Burndown Charts (EES Only)](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#burndown-charts-ees)
バーンダーンチャートが付きました! これは素晴らしい変更です!

でも、EES なので CE では使えません!

![](https://about.gitlab.com/images/9_1/burndown_chart.png)

画像は公式ブログより引用しています。


### [Protected Tags](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#protected-tags-ce-ee)
今までは Protected Branches という、ブランチへのプッシュを制限する機能はありました。例えば、master ブランチはリリース用なので Master ロールのメンバーしかプッシュできないなどです。

今回から、タグも同様に制限できるようになりました。

![protected-tags.png](https://qiita-image-store.s3.amazonaws.com/0/103982/bf94a073-eaba-2a2b-f1f6-40b9f87021a1.png)

`v0.9` とか `v1.0` とかのタグはリリースタグとしておいて、Master ロールのメンバーしかリリースできないという制限ができます。GitLab CI/CD と組み合わせ、あやまって Developer ロールのメンバーがリリースしてしまうのを防ぐことができます。


### [Discussions in Merge Requests and Issues](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#protected-tags-ce-ee)
Issue と Merge Requests でスレッドがサポートされました。Issue の粒度が大きいと、どうしても会話が分散してしまいます。そういうときは Issue を分割すればよいのでしょうけど、それも面倒だなあというときに役に立ちそうです。

![discussion.png](https://qiita-image-store.s3.amazonaws.com/0/103982/61c4813c-72c5-0fdb-9e7e-ca7fd014627c.png)

コメントにスレッドをつけるというのはできないようで、コメントを投稿する際にコメントとして投稿するかディスカッション (スレッド) として投稿するかを選ばないといけないようです。


### [Resolve Merge Request Discussion with New Issue](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#resolve-merge-request-discussion-with-new-issue-ce-ee)
Merge Requests にあるディスカッションは、原則として、全て解決してからマージする必要があります。ただし、今は決められないので後で考えることにするという結論になることもあります。

そういうときのための、ディスカッションから Issue を作る機能がつきました。

右下の方にある `Resolve this discussion in a new issue` ボタンをクリックすると、Issue が作られます。

![resolve-and-new-issue.png](https://qiita-image-store.s3.amazonaws.com/0/103982/bf777e03-4aa2-9d23-9c7e-2e8dafba5fd2.png)

![new-issue.png](https://qiita-image-store.s3.amazonaws.com/0/103982/c99b4a90-8e7e-8398-9853-8b0d7f32ec0b.png)


### [Microsoft Teams Integration](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#microsoft-teams-integration-ce-ee)
GitLab プロジェクトの通知 (プッシュされた、Issue が追加された、等) を Office 365 経由で通知する機能のようです。


### [Issue Title Auto Update](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#issue-title-auto-update-ce-ee)
~~Issue のタイトルは最初からよくなかったり (例: 「動きません」) 会話する中であまり適切ではないことが分かったりします。そういうのを検出して、自動で変更してくれる機能でしょうか?~~

---

@toricls さんから指摘をもらいました。

> まだ触ってないので単なる予想でしかないんですが、イシューとかMRでタブ開きっぱなしでも他ユーザーによるコメントとかが自動的に表示される機能のイシュータイトル版かな、と思いました。

流石に自動で書き換えてくれるとか夢見すぎですよね! (笑)

手元の GitLab CE 9.1 で試した限り、他のウインドウやタブにタイトルの変更に追従されることはなかったので、これからでしょうか?

---

> Many parts of the issue page and GitLab as a whole need improvements in this regard, and we plan to do work on these in the coming releases.

近いうちに動くようになるよってだけで、今回のリリースには含まれていない、なんでしょうか?


### [Application Monitoring UX Improvements ](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#application-monitoring-ux-improvements-ce-ee)
おそらく、Kubernetes と GitLab プロジェクトを連携させているときだけだと思うのですが、GitLab CD でデプロイしたアプリの CPU/Memory の使用率が GitLab から見れるようになったみたいです。

個人的に非常に気になるので試してみたいのですが、Kubernetes のセットアップがなかなかうまくいかず試せてません。


### [Notifications for Successful Pipeline now Off by Default](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#notifications-for-successful-pipeline-now-off-by-default-ce-ee)
既定でビルドが成功したときはメールによる通知が行われなくなる、だそうです。


### [Usage Ping](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#usage-ping-ce-ee)
EE から CE に導入された機能です。自分は初めて知ったので詳細はわからないのですが、[Usage ping](https://docs.gitlab.com/ee/user/admin_area/settings/usage_statistics.html#usage-ping) の利用状況レポートっぽいです。

[こういう感じ](https://gitlab.com/gitlab-org/gitlab-ce/issues/31192)らしいです。


### [Projects with Multiple Docker Images](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#projects-with-multiple-docker-images-ce-ee)
個人的な今月の一押し機能です。

GitLab Container Registry は今までプロジェクトに付き一つの Docker Image しか持てませんでした。CI 用・アプリリリースと Docker Image が必要な場合、タグで区別する必要がありました。

* registry.gitlab.com/group1/project1:v1.0.0 - アプリのイメージ
* registry.gitlab.com/group1/project1:forbuild-170420 - CI ビルド用イメージ

9.1 では複数のイメージを持てるようになりました。

* registry.gitlab.com/group1/project1:v1.0.0 - アプリのイメージ
* registry.gitlab.com/group1/project1/forbuild:170420 - CI ビルド用イメージ

特に、マイクロサービスでたくさんの Docker Image が欲しいときに活躍しそうです。


### [Auto-cancel Redundant Pipelines](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#auto-cancel-redundant-pipelines-ce-ee)
CI を回していると、無駄なジョブが実行されてるなあと思うことがあります。

ありがちなのが、プッシュして CI ジョブが実行された後で「あ、間違い発見!」です。この場合、間違いに気がついたジョブはあまり意味はありません。ですが、このジョブはパイプラインを塞いでしまい、全体のパフォーマンスが低下します。

特に、GitLab CE/EE のような巨大なプロジェクトでは問題になっていたんでしょうね。新しいパイプラインが実行されたら、古いパイプラインの実行を自動でキャンセルし出来るようになりました。

プロジェクトの CI 設定の `Auto-cancel redundant, pending pipelines` で変更できます。デフォルトはオフです。(オートキャンセルしない)


### [Scheduled Pipelines Triggers](https://about.gitlab.com/2017/04/22/gitlab-9-1-released/#scheduled-pipelines-triggers-ce-ee)
スケジュールパイプラインが復活しました! (experimenal ってなってますけど)

CI/CD Pipeline Trigger から設定できます。

![trigger.png](https://qiita-image-store.s3.amazonaws.com/0/103982/964fccf3-6a18-f01b-356e-4668f39dbe5b.png)


## 最後に
来月は 9.2 のリリースです。[GitLab direction](https://about.gitlab.com/direction/) より。

* パイプラインのスケジュール実行がかっこよくなるようです
* Prometheus 周りの追加が多いようです

来月も楽しみです!