はじめに
GitLab 12.0が2019年6月22日にリリースされました!
本記事では新機能についてまとめようと思います。
内容は正確を期するよう注意を払っておりますが、あくまで個人の備忘録のようなものですので、以下のGitLabの公式ページもご確認ください。
無料範囲での新機能
Git integration for JupyterHub
GitLabと連携しているkubernetesクラスタにJupyterHubがインストールされている場合、JupyterLabのgit拡張機能が自動で設定されます。
※JupyterHubは、PythonなどをWEB IDEでコーディングできるJupyterLabを複数人で使うためのものです。
Multiple extends support in .gitlab-ci.yml
extendsに複数のエントリ名を指定できます。
変数の値は記載した順にマージされ、同一のキーであれば上書きされていくようです。
.only-important:
only:
- master
- stable
tags:
- production
.in-docker:
tags:
- docker
image: alpine
rspec:
extends:
- .only-important
- .in-docker
script:
- rake rspec
上記を実行するとrspecジョブは以下のようになります。
rspec:
only:
- master
- stable
tags:
- docker
image: alpine
script:
- rake rspec
Collapsible job logs
CIパイプラインのジョブは、実行ログをGitLabの画面上から確認できますが
そのログの内容をセクションごとに折りたたんだり、展開することができるため、ログが見やすくなります。
Group-specific notification email addresses
グループごとに通知のメールアドレスを設定できます。
Email notifications for broken master builds
CIパイプラインが失敗した場合に、メール通知する機能があります。
これまでは、全ての失敗で通知が行われていましたが
デフォルトブランチでの失敗の場合のみに通知するようにできます。
Improved support for passing variables to downstream pipelines
CIパイプラインで別のプロジェクトのパイプラインをトリガーする機能が11.8で追加されています。
これまでは変数のみを下流のパイプラインに渡せましたが、環境変数も渡すことができるようになりました。
Faster shallow clones by default for all new projects in GitLab CI/CD
CIパイプラインでは、GIT_DEPTHを定義することでshallow cloneする深度を指定可能でしたが
プロジェクトにこの深度を設定できるようになりました。なおデフォルト値があり、50が指定されているようです。
※shallow cloneは最新の履歴だけcloneすることで、cloneを高速に完了することができるものです。
Developers now can delete tags from the Container Registry via API
これまでGitLabコンテナレジストリのイメージタグは、画面上から削除していましたが、APIで削除できるようになりました。
Git object deduplication (Beta)
この機能はBeta版です。プロジェクトをforkすることで、あるプロジェクトにマージリクエストを出す前に、forkしたプロジェクトで色々な検証をしてからマージリクエストを出すということはよく行われることですが、有名なプロジェクトになると、forkされたプロジェクトによって、サーバ側のストレージを圧迫することがあります。
この機能がインスタンスの管理者によって有効にされると、Gitオブジェクトの重複を削減して、ストレージを節約できます。
Enabled Git bitmap hash cache to speedup repacking
リポジトリはbitmap indexという方式で管理されていますが、性能向上のために、bitmap indexにハッシュキャッシュが保存されます。
Validate Kubernetes credentials provided at cluster creation
既存のKubernetes clusterとGitLabを連携する際、いくつかの設定をGitLabに入力しますが、入力した設定に不備があるとエラーが発生します。
エラーの原因を切り分けやすくするために、Kuberenetesのエンドポイントへの到達チェック、トークンと証明書の検証を行い、問題があれば画面にエラーを表示するようになりました。
Use GitLab Serverless with existing Knative installations
これまでは、GitLabを通したKnativeの構築をすることだけが可能でしたが、既存のKnativeと連携可能になります。
Link and access a Zoom meeting from an issue
GitLabのIssueからZoomの電話会議へ参加しやすくなりました。
GitLabのIssueにZoomの電話会議へのリンクを貼り付けると、GitLabはZoomへのリンクを検知して、「Join Zoom meeting」ボタンを表示します。
Link to external dashboards from environment dashboards
GitLab内のMonitoringのページに、外部の監視ダッシュボード(例:Zabbix,Grafana)へのリンクボタンをつけることができます。
Issue API now responds with task completion statistics
Issueに紐づけたタスクの進捗状況をAPIで取得可能になりました。
New threaded discussion design
マージリクエストやissues内のdiscussionのデザインが改善されます。
Additional issue stats from the issues API
issuesの統計(クローズ数、オープン数など)をAPIで取得可能になりました。
Support for AsciiDoc include directive
AsciiDocのincludeが使えるようになりました。includeで同じブランチ、タグ内のテキストファイルを表示できるようになります。
※AsciiDocはmarkdownのようなマークアップ言語で、markdownとの違いは表に強い等
GitLab Runner 12.0
GitLab Runner 12.0が利用可能になりました。
主要な変更は以下です。
- Docker Credentials helper support
- Add configuration of access_level for runners on registration
- Allow configuration of Pod Security Context by Kubernetes Executor
- Make PowerShell default for new registered Windows shell executors
- Support windows docker volumes configuration
有料範囲での新機能
Visual Reviews
GitLabで開発しているアプリケーションの画面に対して、フィードバックコメントを残すことができます。
Project dependency list
プロジェクトで使用している依存パッケージのリストを表示します。
Restrict access by IP address
グループにアクセス可能なIPアドレスを設定することで
特定のコンテンツにアクセス可能なIPアドレスを限定することができます。
File syncing to Web Terminal
WEB IDEでのファイルの変更をWEB Terminalに反映することができます。
※WEB Terminalは、WEB画面からRunnerと対話する機能です。
Sequential merge trains
masterまたはreleaseのブランチを正しい状態に保つための機能です。
マージリクエストの複数のパイプラインを、キューに入れて順番に処理することによって実現します。
Vulnerability database available for viewing and accepting contributions
Gemnasiumの脆弱性データベースで、自分が関心のある脆弱性がチェックの対象かを確認できます。
※Gemnasiumは、プロジェクトで使用しているライブラリに問題がないかといったチェックをするサービスでしたが、GitLabに2018年に買収されました。既存のGemnasiumのユーザはGitLabへ移行するように案内されています。
Add a reason when dismissing vulnerabilities
プロジェクトで見つかった脆弱性の修正を却下した場合、
レビューに役立てるために、その却下理由を記載できます。
Lock all memberships to LDAP
LDAPでユーザを管理している場合、LDAP以外でユーザの権限を変更できないようにできます。
Prevent non-admins from deleting projects
adminユーザ以外がプロジェクトを削除するのを防止できます。
GitLab Insights
issuesがクローズされるまでの時間やマージリクエストがマージされるまでの時間などの確認することができます。
Dependency proxy is enabled per-group by default
Dependency proxyがグループごとにデフォルトで有効になります。
Dependency proxyは11.11で導入されました。Dockerイメージをキャッシュし高速に利用可能になる機能です。
Maven template now automatically pushes to the Maven Repository
Maven.gitlab-ci.ymlを変更することで、CI/CDパイプラインからJava dependenciesを、11.3から導入されたGitLab Maven Repositoryに簡単にアップロードできます。
Add ability to query epics in GraphQL
GraphQL APIで、epicsをクエリできるようになります。
GraphQL APIは無料範囲の機能ですが、epicsのみ有料範囲の機能になります。
※epicsはあるテーマについて、複数のissuesをプロジェクトを跨いで管理することが可能な有料機能です。
※GraphQL APIは、Facebookにより開発されたオープンソースのAPIのための言語です。RESTAPIが概念的なものだったのに対し、型決めされた仕様をもつことが特徴です。
Enhancements for system notes for adding and removing epic relationships
epicの親子関係が追加・削除されたときにsystem notesとして保存されるようになりました。
Add and remove child epics via quick actions
GitLabのquick actions機能で、”/child_epic”と”/remove_child_epic”を使用して、子epicを素早く追加・削除できるようになりました。
※quick actionはepicだけでなく、マージリクエストなどでも使用可能なテキストショートカットです。
No longer require Docker in Docker for DAST
Dynamic Application Security Testing (DAST) の機能はこれまで、Docker in Dockerを使う必要がありましたが、不要になりました。
※DASTは、CI/CIパイプラインの延長で、アプリケーションに脆弱性が存在するかチェックして、教えてくれる有料機能です。