GitLab 10.4 リリース

# GitLab 10.4 リリース
毎月の定例リリース [GitLab 10.4](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/) がリリースされました。

今月も気になった変更点を紹介します。


## [GitLab Security Release: 10.3.4, 10.2.6, and 10.1.6](https://about.gitlab.com/2018/01/16/gitlab-10-dot-3-dot-4-released/)
日本時間の 1/17 (水) に、GitLab のセキュリティリリースが公開されました。事前に告知ありのクリティカルセキュリティアップデートなので、まだ適用されていない方はお早めに!

GitLab は二つ前のマイナーバージョンまではセキュリティパッチリリースを提供します。最新のバージョンはちょっと... という方は 10.1.6 や 10.2.6 をご利用ください。


## 気になった変更点
### [Dynamic Application Security Testing (DAST)](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#dynamic-application-security-testing-dast) (EEU)
[GitLab 10.3 で SAST](https://qiita.com/masakura/items/4d518043be987838a451#static-application-security-testing-sast-eeu) というセキュリティのための静的検査機能が入りました。

10.4 では [OWASP Zed Attack Proxy](https://github.com/zaproxy/zaproxy) を用いた動的検査もできるようになりました。

Review Apps でデプロイしたアプリケーションに対して、ZAP で検査するような使い方を想定しているそうです。

[Dynamic Application Security Testing with GitLab CI/CD ](https://docs.gitlab.com/ee/ci/examples/dast.html#example) のサンプルを見ると、`/zap/zap-baseline.py -J gl-dast-report.json -t $website` を実行しているようです。

ZAP の検査結果を Merge Request に表示してくれますので非常に便利ですね。

GitLab 10.4.1 でこの DAST が Auto DevOps に入るそうです。


### [SAST for Docker Containers](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#sast-for-docker-containers) (EEU)
GitLab 10.3 の SAST でのセキュリティ静的コード検査ですが、ソースコードではなく、Docker Image 内に配置されたアプリケーションに対して行えるようになったっぽいです。


### [Web IDE Editor (Beta)](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#web-ide-editor-beta) (EEU)
[以前 multi-file editor](https://qiita.com/masakura/items/1523816bb99706cd5c7f#%E6%9C%80%E5%BE%8C%E3%81%AB) を紹介しました。それがようやくベータ公開になった! と喜んでいたらちょっと違うようです。

* multi-file editor は複数のファイルを同時に修正する機能しかない
* Web IDE Editor は Koding の代替を目指す (ベータなのでどこまで実装されてるかは不明です)
    * multi-file editor
    * Git Push
    * Web Terminal
* multi-file editor は CE でも使えるけど、Web IDE Editor は EEU のみ

Web IDE Editor はファイルを修正するだけでなくて、開発環境自体を提供する感じですね。これは欲しいんですが、EEU のみなんですよね...

なお、有効にするには GitLab の右上の自分のアイコンから、`Settings` -> `Preferences` の中にある `Web IDE` を変更する必要があります。

### [Rebase and fast-forward in CE](Rebase and fast-forward in CE )
EE では以前からあった機能が CE でも使えるようになったようです。

Merge Request をマージするときの戦略は開発チームごとに違うと思います。Rebase して Fast Forward マージをする方法がとれるようになりました。

設定はプロジェクト設定の `General` -> `Merge method` から `Fast-forward merge` を選んでください。

こういうのは流派がありますので選べるようになったのはいいですね。


### [Improved environment performance dashboard](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#improved-environment-performance-dashboard)
GitLab の CD の機能の一つ、デプロイされたアプリのモニタリングにスループットグラフが追加されたようです。

![](https://about.gitlab.com/images/10_4/performance_new_ux.png)

画像は GitLab の blog からの引用です。

この機能試してみたいんですけど、相変わらずうまくいきません...


### [Clear the Runner cache](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#clear-the-runner-cache)
個人的に、今月一番のお気に入りがこれです。CI のジョブのキャッシュを削除できるようになりました!

ジョブがキャッシュが原因でうまくいかなかったり、逆にキャッシュなしでジョブが実行できるか試したいときにかなり大変だったのでとてもありがたいです。

また、キャッシュが貯まり続けることでジョブの実行時間が少しずつ伸びていきますので、定期的にリフレッシュするといいかもしれません。


### [GitLab Clusters now Generally Available](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#gitlab-clusters-now-generally-available)
今の時点では Google Kuberenetes Engine 専用っぽいですが、Kubenetes クラスターを適当に作ってくれる機能がつきました。

クラスターを組むだけでなく、以下のアプリケーションもインストールしてくれます。つまり、Auto DevOps にちょうどいいクラスターを組んでくれるってことですね。

* [Helm Tiller](https://docs.helm.sh/)
* [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) - リバースプロキシ
* [Prometheus](https://prometheus.io/docs/introduction/overview/) - モニタリング

今まで Auto DevOps などの機能を動かすための Kubernetes の設定がそこそこ面倒で、私みたいな初心者には敷居が高かったのですが、それが解消されているようです。

時間があるときに試してみたいと思います。


### [GitLab Runner 10.4](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#gitlab-runner-104)
GitLab Runner には、ジョブで利用する Docker Image を制限する機能があります。この設定で glob (**) を使えるようになりました。

例えば、チームで管理している Docker Image のみを使えるようにするには以下のように設定します。

```toml:config.toml
  allowed_images = ["registry.gitlab.com/myteam/*/*:*"]
```

以前はこれでよかったのですが、[Subgroups](https://qiita.com/masakura/items/762e48aa876397c3e3c5#subgroups) や [Projects with Multiple Docker Images](https://qiita.com/masakura/items/4cbf0d5ab93c9c97a28a#projects-with-multiple-docker-images) が使えるようになって、サブグループ内のプロジェクトや名前付き Docker Imageなどの許可したい Docker Image まで禁止されてしまいます。

* [NG] registry.gitlab.com/myteam/subgroup/build-ruby:2.1
* [NG] registry.gitlab.com/myteam/project/builds/ruby:2.1

こんな感じで glob を使って設定できるようになりました。

```toml:config.toml
  allowed_images = ["registry.gitlab.com/myteam/**/*:*"]
```

この機能は私が Merge Request を投げたのですが、プロダクションコードの修正はほぼ一行です。(テストコードはさすがに...)

https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/721/diffs#7a056729f6a9c4b323621c1ee3ee2894be489989

もし GitLab に貢献したいという方で、大きな修正はちょっと無理というかたは、こういったところから始めてみてはいかがでしょうか?


## 注意点
### [GitLab API V3](https://about.gitlab.com/2018/01/22/gitlab-10-4-released/#api-v3)
気が付かなかったのですが、GitLab API V3 の廃止は延期されていたんですね。(現行は API V4)

意外と API V3 のリクエストが多いので延期したけど、GitLab 11.0 では廃止するからね? それまでに何とかしてね! ということのようです。


## 終わりに
[GitLab Direction](https://about.gitlab.com/direction/) を見ると結構延期になってますね...

* [先月紹介した Let's encrypt 対応](https://qiita.com/masakura/items/4d518043be987838a451#%E7%B5%82%E3%82%8F%E3%82%8A%E3%81%AB)は next Next 2-3 months に
* [Shared CI runners for groups](https://gitlab.com/gitlab-org/gitlab-ce/issues/10244) - CI Runner をグループで登録できるようになるんでしょうか? CI Runner をプロジェクトで共有しまくって、混乱することが多いのでとても助かります。

ここのところ EEU 向けの強化が多く、ちょっと寂しいですが来月も楽しみにしようと思います。