GitLab 10.3 リリース

# GitLab 10.3 リリース
この記事は [GitLab Advent Calendar 2017](https://qiita.com/advent-calendar/2017/gitlab) の 23 日目の記事です。一日遅れでごめんなさい。

[先月の 10.2](https://qiita.com/masakura/items/47d1e91ec6f8483397fd) は気になるものはほとんどなかったのですが、[今月の 10.3](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#flow-charts-sequence-diagrams-and-gantt-diagrams-in-gitlab-flavored-markdown-gfm-with-mermaid) はその反動か気になるものがたくさんあります!


## よもやま
### GitLab Meetup Kagoshima #1
12/11 (月) に [GitLab Meetup Kagoshima #1](https://gitlab-jp.connpass.com/event/72372/) が開催されました。鹿児島では GitLab のイベントを毎年開催しており、これで三回目となります。(GitLab Meetup としての開催は一回目)

なんと、参加者の中には東京からこのイベントのためだけに鹿児島まで来たという方も。ありがとうございます。

また、鹿児島で GitLab を仕事で使っている会社の方々が発表したこともあり、自分としても大変ためになりました。登壇してくださった皆様、ありがとうございます。

* [GitLabを社内に浸透させるためにやっていること](https://speakerdeck.com/megos/gitlab-meetup-kagoshima-number-1-lt)
* [GitLab CI](https://qiita.com/masakura/private/9fe330b1170f238539a7)


## 気になる変更点
今月は気になる変更点が多いのですが、EEP/EEU などの大規模向けの有償版への機能追加が多く、ちょっともやもやします。

ちょっと[製品ごとの価格](https://about.gitlab.com/products/)をまとめてみました。

| 製品 | 一人あたりの年額
| ---- | ---:
| Community Editiion (EE) | 0
| Enterprise Edition **Starter** (EES) | $39
| Enterprise Edition **Premium** (EEP) | $199
| Enterprise Edition **Ultimate** (EEU) | ~~$999~~

Ultimate は Early Adopter となっており、応相談です。また、社内に複数の GitLab を立ち上げていて、一人がそれぞれの GitLab にアカウントを持っていても、アカウントは一人分の価格で済む場合があるようです。

GitLab.com は一か月単位でのサブスクリプション制となっています。

| サブスクリプション | 一人当たりの月額 | 年額換算 | 対応する製品 (多分)
| ---- | ---: | --: | ----
| Free Plan | 0 | 0 | CE
| Broze Plan | $4 | $48 | EES
| Silver Plan | $19 | $228 | EEP
| Gold Plan |  $99 | $1,188 | EEU


### [Static Application Security Testing (SAST)](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#static-application-security-testing-sast) (EEU)
ソースコードを静的解析して、脆弱性をレポートしてくれるようです。

詳しい使い方は [Static application security testing with GitLab CI/CD ](https://docs.gitlab.com/ee/ci/examples/sast.html) を見ていただくとして、対応している言語は現時点では余り多くありません。

| 言語 | スキャンツール
| ---- | ----
| JavaScript | [Retire.js](https://retirejs.github.io/retire.js/)
| Python | [Bandit](https://github.com/openstack/bandit)
| Ruby | [bundler-audit](https://github.com/rubysec/bundler-audit)
| Ruby on Rails | [Brakeman](https://brakemanscanner.org/)

基本的に、脆弱性のあるライブラリが使われていないかの検査が中心で、Ruby on Rails だけはソースコードまで検査しているようです。

脆弱性検査は保険として少しあるだけでもかなり助かります。使いたいんですけど、EEU なんですよね...

もちろん、これらの脆弱性スキャナーを自力で CI で動かせばいいだけなんですけど、Merge Request にレポートを表示してくれるのはうらやましいです。


### [Browser Performance Testing](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#browser-performance-testing) (EEP)
SAST と似たような機構をつかって、ブラウザーでのパフォーマンステストを行うようです。

検査には [Sitespeed.io](https://www.sitespeed.io/) が使われているので、(Merge Request へのレポートはともかく) 自力でやろうと思えばできます。

### [Customize branch name when creating merge request from issue](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#customize-branch-name-when-creating-merge-request-from-issue)
今回の個人的な一押しです。

GitLab には Issue から作業用の Merge Request を作る機能があります。このとき、ブランチ名が `{Issue の番号}-{Issue のタイトルからアルファベットや数字などを除外した文字列}` と自動で付けられます。英語圏の人は便利だと思うのですが、日本語を使って Issue を書いているとブランチ名が `55-` のようにどういうブランチかわからない名前になってしまいます。

今回、これが解消され、ブランチ名を変更できるようになりました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103982/ab27adfe-2f59-4f82-87ca-422dfb0c5a38.png)

なんですが、GitLab.com で試してみても、`Branch name` に入力したブランチ名になりませんでした。[既知のバグ](https://gitlab.com/gitlab-org/gitlab-ce/issues?label_name%5B%5D=bug&page=2&state=opened)を見ても見つからず。うーん。


### [Flow charts, sequence diagrams, and Gantt diagrams in GitLab Flavored Markdown (GFM) with Mermaid](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#flow-charts-sequence-diagrams-and-gantt-diagrams-in-gitlab-flavored-markdown-gfm-with-mermaid)
タイトル長いですね。要は GitLab Flaver Markdown で [mermeid](https://mermaidjs.github.io/) が使えるようになったということです。

詳しくは[[Ystk Log] GitLab 10.3で追加される機能が楽しみ！](https://ystklog.com/720) で紹介されています。

mermaid を使うと、こういう図をテキストで書くことができます。

* [フローチャート](https://mermaidjs.github.io/flowchart.html)
* [シーケンス図](https://mermaidjs.github.io/sequenceDiagram.html)
* [ガントチャート](https://mermaidjs.github.io/gantt.html)

[デモ](https://mermaidjs.github.io/demos.html) を見ると何ができるかわかりやすいです。

Markdown が使えるところならどこでも使えるので、Issue にフローチャートやシーケンス図を埋め込んだり、マイルストーンにガントチャートを埋め込んだり、ディレクトリの README にパッケージ内の構成図を埋め込んだりできそうです。

余談ですが、GitLab は [PlantUML](https://qiita.com/masakura/items/9d8edd8269b358dce538#add-plantuml-support-for-markdown) にも対応しています。ですが、こちらは別途 [PlantUML Web Server](https://github.com/plantuml/plantuml-server) が必要になります。このためか、GitLab.com では有効にされていませんし、オンプレミスの GitLab でも使えないことが多いでしょう。mermaid は標準で使えるようです。


### [Restricted deletion of CI/CD job logs](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#restricted-deletion-of-cicd-job-logs)
GitLab CI のジョブのログを削除できる権限が変更になりました。

* プロジェクトの `Matster`
* ジョブの実行のきっかけになった人


### [Git push and pull on project redirects](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#git-push-and-pull-on-project-redirects)
プロジェクトの名前 (パス) の変更は URL が変更になるため、慎重になる必要があります。とはいえ、正しくない名前を続けるのはよくないことです。

いつからかはわからないのですが、GitLab では古い名前のプロジェクトにアクセスした場合、新しい名前にリダイレクトをします。10.3 から、これが `git push` や `git pull` でも動作するようになったようです。

> Please note, to avoid pulling from or pushing to an entirely incorrect repository, the old path will be reserved.

これも以前からかもしれませんが、古い名前 (パス) は予約されるようです。


### [Total issue time spent in milestone](https://about.gitlab.com/2017/12/22/gitlab-10-3-released/#total-issue-time-spent-in-milestone)
以前から Issue には見積もり時間と実際の作業時間を入力できました。ですが、これを活用する UI がほとんどありませんでした。

マイルストーンページにこれらのサマリが表示されるようになりました!

こういうのがどんどん増えていくといいですねぇ。


## 終わりに
今月も [Create official Grafana dashboards](https://gitlab.com/gitlab-org/gitlab-ce/issues/35062) は提供されなかったようで少し寂しいです。

来月ですが [GitLab Direction](https://about.gitlab.com/direction/) を見ると、この辺りが気になりますね。

* [Instant SSL for GitLab via Let's Encrypt](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2617) - 社内のオンプレミスで鵜と化しているとあまり関係がありませんが、Let's Encrypt に対応するそうです
* [Create a docker image and chart per GitLab service](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2420) - 現在の all in one な Omnibus Package を使った Docker Image とは別に、サービスごとに起動できる Docker Image が提供されるようです

では、皆さんよいお年を!