GitLab 9.4 リリース

# GitLab 9.4 リリース
今月も GitLab のマイナーアップデート [9.4 がリリース](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/)されました。今月の目玉はなんと言っても日本語ロケールが入ったことでしょうか? これで、英語だから使ってもらえないという悩みが解消されますね!


## GitLab 9.3.9, 9.2.9, 9.1.9, 9.0.12, 8.17.7 セキュリティリリース
日本時間の 7/20 (木) の AM10:00 ごろ、重大なセキュリティホールを修正した [GitLab がリリース](https://about.gitlab.com/2017/07/19/gitlab-9-dot-3-dot-8-released/)されました。

ですが、このバージョンには Sidekiq のジョブが無限ループに陥ることのあるバグがあり、メモリリソースを食い尽くして非常に重くなります。(というか、なりました)

翌日にこのバグを解消した [GitLab がリリース](https://about.gitlab.com/2017/07/20/gitlab-9-dot-3-dot-9-released/)されました。こちらを当てると良いでしょう。

> We strongly recommend that all affected GitLab installations be upgraded to one of these versions immediately.

直ちにアップグレードをすることを強く推奨するとありますので、皆さんアップデートを!

この Sidekiq がメモリリソースを枯渇させる問題で初めて知ったのですが、GitLab では [Sidekiq MemoryKiller](https://docs.gitlab.com/ce/administration/operations/sidekiq_memory_killer.html) が搭載されていて、Omnibus Package の場合はデフォルトで有効になっているようです。既定値は 1GB ですので、それを超えると自動で Sidekiq を再起動するようです。


## 変更点
今月も個人的に気になった新機能を紹介します。


### [Improved Internationalization](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#improved-internationalization)
GitLab 9.4 では日本語ロケールがついに追加されました! 日本語ロケールは GitLab.JP の方々が [Slack](https://gitlab-jp.herokuapp.com/) の方で翻訳を進めています。感謝!

私が GitLab を使い始めた頃は、日本語のマイルストーンは作れるけど、マイルストーン一覧画面が 500 Internal Server Error になるとか、ちょっと日本語の扱いに難がありました。

それが今では、日本語を使っていてもほとんど困らなくなり、GUI も全てではありませんが日本語化されました。やはり日本語で表示されるとちょっと感動しますね!

![](https://pbs.twimg.com/media/DFUTFQZV0AAiqVh.jpg)

日本語にするには右上の自分のアイコンから `Settings` -> `Profile` -> `Preferred language` で変更できます。


### [Related Issues](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#related-issues) EE Only
EE のみですが、Issue を他の Issue と関連付けられるようになりました。

今でも、[Special GitLab References](https://docs.gitlab.com/ee/user/markdown.html#special-gitlab-references) を使えばできるのですが、一つの Issue にたくさんの関連が付けられてしまい、管理が難しくるなることが有ります。それの対処のために導入したそうです。


### [New Navigation](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#new-navigation)
GitLab は毎月のように新機能を投入していてありがたいのですが、機能が増えるに従って UI がごちゃごちゃしてきました。その解消のためか、新しいナビゲーション UI が追加されました。

新しい UI はサイドメニューを採用し、かなりスッキリとした印象を受けます。

![gitlab1.png](https://qiita-image-store.s3.amazonaws.com/0/103982/4635dc77-d320-f654-f4ab-2e7b6b0bb273.png)

混乱を招かないように、デフォルトは今までの UI のままです。右上のアバターアイコンをクリックして `Turn on new nav` をクリックして、新しい UI に変更してください。

なお、新 UI はこれからフィードバックを受けて調整していくそうで、頻繁に変わるのが好ましくない方はしばらくは旧 UI の方がいいと思います。


### [Web Application Monitoring](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#web-application-monitoring)
個人的な今回の目玉機能です。GitLab 9.0 から DevOps 向けの機能を強化していくと宣言していましたが、その一環です。

Kubernetes にデプロイしたアプリの CPU 使用率やメモリ使用率のグラフを GitLab で見ることができました。[9.1 リリース](http://qiita.com/masakura/items/4cbf0d5ab93c9c97a28a#application-monitoring-ux-improvements-) を参照。

今回から、Kubernetes だけでなく、ロードバランサーとウェブサーバーの情報も表示できるようになりました! 今のところ、[Amazon Cloud Watch](Amazon Cloud Watch)か [nginx-module-vts](https://github.com/vozlt/nginx-module-vts) を有効にした nginx のみとなります。

[Prometheus Metrics library](https://docs.gitlab.com/ee/user/project/integrations/prometheus_library/metrics.html) を見ながら nginx で試してみましたが、うまくいきませんでした。どなたかうまくいった方がいたらぜひ教えてください!

実際には公式ブログにあるように、nginx のエラー率やスループットにレイテンシを表示できます。

![](https://about.gitlab.com/images/9_4/prometheus_monitoring.png)

スクリーンショットは公式ブログのものです。


### グループの強化
グループ関係の機能強化が多かったんでまとめました!

* [Group-level Secret Variables](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#group-level-secret-variables) - CI ジョブ用の Secret Variables がプロジェクトだけではなく、グループにも設定できるようになりました!
* [Group Milestones](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#group-milestones) - グループにマイルストーンが作れるようになりました! 複数のプロジェクトを束ねて管理したいというのはどこでも悩みの種のようで、[GitLab Meetup Tokyo #3](https://gitlab-jp.connpass.com/event/57152/) でも [プロジェクトをまたいだ Issue 管理](https://speakerdeck.com/kazumax1218/puroziekutowomataidaissueguan-li) という発表がありました。グループマイルストーンの登場で、よりやりやすくなるのではないでしょうか? (Issue は今までどおり、いづれかのプロジェクトに所属します)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103982/02bfa7cd-a5ac-29e8-41a1-d25a9b39ff3a.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103982/3e2b243b-aa24-8917-9b85-c99efe1b3d14.png)



### Secret Variables の強化
Secret Variables の設定ができる場所が増えました!

* [Group-level Secret Variables](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#group-level-secret-variables) - 先程の紹介の通り、グループに設定してプロジェクト間で共有することができます。
* [Variables in Pipeline Schedules]()https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#variables-in-pipeline-schedules - スケジュールパイプラインでも設定できるようになりました!
* [Environment-Specific Secret Variables](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#environment-specific-secret-variables) - EEP のみですが、Environment 毎に設定できるようになりました! 通常、ステージングと本番ではデプロイ時のトークンが異なります。そういったときにすごくすごく便利だと思うのですが、EEP のみです。使いたい...


### [Upcoming Omnibus Package Signing](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#upcoming-omnibus-package-signing)
GitLab 9.5 から、deb と rpm の両パッケージが署名されるようです。9.4 や 9.3 も来月以降署名されるようです。


### [GitLab Mattermost 4.0](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#gitlab-mattermost-4.0)
Omnibus Package に同梱される Mattermost のメジャーバージョンが一つ上がります。ご注意を!

[What's new in Mattermost 4.0?](https://about.mattermost.com/mattermost-4-0/) にどう変わったかが書かれています。

* ルック & フィールが新しくなった
* モバイルアプリが新しくなった
* Mattermost API v4 の導入
* イタリア語のサポート


### [New Cache Policy for CI/CD Configuration](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#new-cache-policy-for-ci/cd-configuration)
GitLab CI でキャッシュの新しいポリシー設定ができるようになりました。

今までは、ジョブの頭でキャッシュを必ずダウンロードし、ジョブの最後でキャッシュを必ずアップロードしていました。これを制御できます。

[マニュアルの cache-policy](http://docs.gitlab.com/ee/ci/yaml/#cache-policy) に書かれているような、`prepare` ジョブで gems をダウンロードしておいて、`rspec` でそれを使う場合は非常に便利です。今までは `rspec` ジョブでもキャッシュにアップロードされていてました。ですが、`rspec` ジョブでは gems は変更されていないため、このアップロードは無駄な処理です。`policy: pull` とすることで、余計なキャッシュのアップロードを防ぐことができます。


### [GitLab Runner 9.4](https://about.gitlab.com/2017/07/22/gitlab-9-4-released/#gitlab-runner-9.4)
Gitlab Runner 9.4 がリリースされました!

`gitlab-runner unregister --all` は Ansible とかで自動化している人にはとても便利です。

と、個人的にかなり困ってた `gitlab-runner register` コマンドで VirtualBox/Parallels の Runner を追加する際のバグを修正をしまして、それを取り込んでもらえました!


## 最後に
9 系になってから、誰でも使うようなところの機能追加は減った気がしますが、その代わり DevOps 向けの機能強化がすごいですね。

来月は 9.5 です。[GitLab Direction](https://about.gitlab.com/direction/) を読むと面白そうなのがいくつかありますね!

* [Make a PoC for job's details page](https://gitlab.com/gitlab-org/gitlab-ce/issues/34696) - Travis like な CI 設定ができるようになる? (よく分からなかった...)
* [Online visualization of HTML artifacts for public projects](https://gitlab.com/gitlab-org/gitlab-ce/issues/34102) - Public プロジェクト専用っぽいですが、CI の成果物の HTML の表示ができるようになるみたいです。ユニットテストやその他レポートを視覚的に表示できるのでとても便利ですね。
* [Group level issue boards](https://gitlab.com/gitlab-org/gitlab-ee/issues/928) - 9.4 でグループマイルストーンが使えるようになりましたが、Issue Board もグループで使えるようです。ただし、EEP Only だそうです...

また、9.5 では GitLab API v3 が削除されます。それに伴い、GitLab Runner v1 系が使えなくなりますのでご注意ください。

来月も楽しみですね。