GitLab 9.0 リリース

# GitLab 9.0 リリース
今月のリリースからメジャーバージョン (?) が一つ増えて 9.0 となりました! といっても、今までと同様の月次リリースで、大きく変わってはいないようです。

また、[9.0 リリースの公式ブログ](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/)で一年半前の 8.0 からどう成長してきたかが紹介されています。


## Gitter を買収
とても驚いたのですが、[GitLab 社が Gitter を買収すると発表しました](https://about.gitlab.com/2017/03/15/gitter-acquisition/)。([Publickey の記事](http://www.publickey1.jp/blog/17/gitlabslackgitter.html))

同じチャットの Mattermost とかどうするの? など、いろいろと思ったのですが、[Gitter is joining the GitLab Team](https://about.gitlab.com/2017/03/15/gitter-acquisition/) に答えが書いてありました。

* Gitter はオープンな用途 (利用者のサポートが主目的?) で使うためで、チーム内のコミュニケーションは今までどおり Mattermost となる
* GitLab の一部としてではなく、独立して提供される (Omnibus Package に同梱されるかまでは読み取れませんでした)

ということで、サポート用のチャットが新しく提供されるということのようです。ちなみに、Gitter + GitHub の組み合わせは今までどおり使えるそうです。


## 8.17.4, 8.16.8, 8.15.8 リリース
事前に [GitLab Critical Security Update Pre-Announcement ](https://about.gitlab.com/2017/03/17/gitlab-critical-release-preannouncement/) としてアナウンスされていたとおり、GitLab の重大な脆弱性をフィクスしたバージョンがリリースされています。

影響を受けるバージョンは以下のとおりですが、これより古いバージョンが影響を受けるかは分かりません。

* 8.7.0 through 8.15.7
* 8.16.0 through 8.16.7
* 8.17.0 through 8.17.3

[CVE-2017-0882](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0882) も割り当てられていますが、更新がまだのようです。

"We recommend installations running affected versions to upgrade immediately." と書かれていますので、早めの対処が推奨されています。なお、9.0 は修正済みとなっています。

また、ユーザートークンが漏洩するという脆弱性の特性上、アップデートだけでなく、トークンのリセットが必要となります。手順は [Rake Task for Resetting User Tokens](https://about.gitlab.com/2017/03/20/gitlab-8-dot-17-dot-4-security-release/#rake-task-for-resetting-user-tokens) に書いてあるとおりですが、`reset_token.rake` ファイルは自力で作る必要がありました。

英語が苦手ではっきりとは分からなかったのですが、二要素認証を使っているユーザーは一度二要素認証を解除して、再度有効にする必要があるようです。

## 変更点
[9.0](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/) の変更の中から、個人的に気になったものをピックアップします。

スクリーンショットは 9.0RC6 の時点のものです。もしかしたらちょっとだけ違うかもしれません。


### Reorder issue in issue board list
多分、今月イチオシの機能はこれじゃないでしょうか? [Issue Board に貼り付けた Issue の順番を入れ替えることができる](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#reorder-issues-in-board-list-ce-ee)ようになりました!

![reorder-board.png](https://qiita-image-store.s3.amazonaws.com/0/103982/c791e15f-36b6-5818-c5f5-3d533bea92e5.png)

[GIF アニメーション](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#reorder-issues-in-board-list-ce-ee)を見ると分かりやすいと思います。

より重要な Issue を上に配置できるのですごく便利です。KPT ボードの代わりにも使えそうですよね。


### Subgroups
ついに[サブグループが作れる](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#subgroups-ce-ee)ようになりました! 組織でグループを作ったり、大きなプロジェクトで責任を分割したいという時には非常に役に立つと思います。

グループの中にサブグループを作ることができますが、その下にさらにサブグループを作ることができます。ディレクトリのようですね。

![subgroup.png](https://qiita-image-store.s3.amazonaws.com/0/103982/763ee020-03f3-d019-7f98-68ddefba1dc1.png)

サブグループの導入に伴い、URL が `http://gitlab.example.com/group-a/group-b/project-ab` のようになります。今までと違って、URL を見ただけではグループかプロジェクトかの区別がつかなくなります。ほとんどの場合は問題にならないと思いますが、ツールを作っている方は要注意かもしれません

![subgroup-project.png](https://qiita-image-store.s3.amazonaws.com/0/103982/c9fd981c-fa85-b051-a02e-fc52772c7314.png)


### Mattermost Team
[GitLab でグループを作ったら、同じ名前で Mattermost のチームを作る](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#create-mattermost-team-when-creating-gitlab-group-ce-ee)ことができるようになりました。チームが作られるだけで、GitLab のグループのメンバーが追加されたりはしないのがちょっと残念です。

![group-mattermost.png](https://qiita-image-store.s3.amazonaws.com/0/103982/35812b13-da44-869f-b39a-52c8572777f8.png)

改善要望が出ていますので、楽しみです。

* [Jump to Mattermost channel from GitLab issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/26432) - Issue から GitLab チャンネルに飛ぶ
* [Sync GitLab group to Mattermost team](https://gitlab.com/gitlab-org/gitlab-ce/issues/29726) - GitLab グループと Mattermost チームの同期


### Export issues (EE Only)
[Issue を CSV でエクスポート](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#export-issues-ees)できるようになりました! でも Enterprise Edition のみです...

GitLab API を使えばいいだけなのですが、CSV で手軽にエクスポートできるのは正直羨ましいです。


### API v4
[GitLab API V4](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#api-v4-ce-ee) がリリースされました。V3 から全て刷新したというわけではなく、大きくは変わっていないようです。

詳しくは [https://docs.gitlab.com/ee/api/v3_to_v4.html](https://docs.gitlab.com/ee/api/v3_to_v4.html) が参考になるでしょう!

API v3 のサポートは "We will continue to support v3 of the API until August 2017" とありますので、9 月の 9.6 (?) から削除されるの可能性があります。API を呼び出している方はご注意を!


### GitLab CI
ビルド改めジョブで使う環境変数の名前が変更されました! 今までの `CI_BUILD_ID` という名前は `CI_JOB_ID` に、`CI_BUILD_REF` は `CI_COMMIT_SHA` に変わります。

当面は今までの名前も使えるようですが、非推奨となり、そのうち削除されるようです。


### Gitaly
Git リポジトリアクセスのために [Gitaly](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/#gitlab-ci-ce-ee) が導入されました!

GitLab Rails (ウェブアプリケーション部分)、GitLab Shell (Git SSH アクセス)、GitLab Workhorse (リバースプロキシ + HTTP Git アクセス) から利用されるようです。今までファイルシステムの Git リポジトリに直接アクセスしていましたが、これからは Gitaly 経由でアクセスすることになります。

GitLab の利用者は Gitaly を直接使うことはないそうです。

Omnibus Package では導入されているようです。マニュアルでインストールしている方は 9.0 へのアップグレード時に注意する必要があります。

[10. Optional: install Gitaly](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/8.17-to-9.0.md#10-optional-install-gitaly) を見ると、"If you want to save time
during your 9.0 upgrade you can skip this step." とあり、Gitaly をセットアップしなくても動くようです。


## 最後に
9.0 のリリースということですが、利用者から見てそれほど大きな違いはないようですが、Gitaly が入ったり、UI が変わっててまだちょっと混乱しています。

紹介した以外にも、パフォーマンスの向上や Prometheus の改善もありますので、[公式ブログ](https://about.gitlab.com/2017/03/22/gitlab-9-0-released/)も読んでみてください。

来月は [9.1](https://about.gitlab.com/direction/) のリリースです。

* [Support specifying a multi-level image name in Gitlab Container Registry](https://gitlab.com/gitlab-org/gitlab-ce/issues/17801) - Docker Image をプロジェクトで複数保持できるようになるらしい
* [Run CI/CD pipelines on a schedule](https://gitlab.com/gitlab-org/gitlab-ce/issues/2989) - CI/CD パイプラインの定時実行 (昔はできてたけど、今はできなくなってるので復活させるってことらしい)

来月も楽しみです!