GitLab CE 10.8リリースノート (レポジトリPushミラーリング)

日本人唯一の[GitLab Core Team](https://about.gitlab.com/core-team/)の @tnir です。GitLab.JP/GitLab Tokyoオーガナイザとして[日本語圏でのマーケティングも注力](https://gitlab-jp.connpass.com/)しています。

統合開発ツールチェイン環境GitLab CE [10.8が2018年5月22日にリリース](https://about.gitlab.com/2018/05/22/gitlab-10-8-released/)されました :tada:

![](https://about.gitlab.com/images/tweets/gitlab-10-8-released.png)

↑背景画像はイタリアのブライエス湖（山に囲まれた透明度の高い湖）の写真でした。

GitLabには、大きく分けてCommunity Edition (CE) とEnterprise Edition (EE) とありますが、本記事はCEで使えるCore機能のみにフォーカスしています。

## 2018年4・5月のGitLabトピック(一部)

その1. GitLab, Inc.がコペンハーゲンで開催されていた[KubeCon + CloudNativeCon EU 2018](https://events.linuxfoundation.jp/events/kubecon-cloudnativecon-europe-2018/)に出展していました。私も現地にいたので、ブースでGitLab Team(社員)と少し話をしました。が、終始来客が絶えなかったので、手短に済まさざるを得ませんでした。 :sob:

その2. 私自身もGitLab CE 10.8において[CEに6件](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests?state=merged&author_username=tnir&milestone_title=10.8)のMRを入れてみました。
GitLabはまだまだUI/UX/機能/パフォーマンスが不十分なため、ご興味のある方はぜひコントリビューションにご参加ください。:bow:

その3. [GNOMEプロジェクトでGitLabを全面導入することになっていましたが、完全移行が完了した](https://www.gnome.org/news/2018/05/gnome-moves-to-gitlab-2/)ようです。 :tada:

その4. [GitLab.JPにQiita支部](https://qiita.com/organizations/gitlab-jp)が誕生しました。[GitLab.JPメンバーの方でQiita記事を投稿している方](https://qiita.com/tags/gitlab)はGitLab.JP Slackにて参加表明ください :bow:

## レポジトリPushミラーリングがCore(OSS)に (Push Mirroring now open source)

![](https://about.gitlab.com/images/10_8/push_mirroring.png)

[gitlab-org/gitlab-ce#42099](https://gitlab.com/gitlab-org/gitlab-ce/issues/42099)

レポジトリミラーリング機能はGitレポジトリをあるGitLabインスタンスから別のGitLabインスタンスに移行する機能です。そのため、複数のGitLabインスタンス持っていて、自社と顧客のGitLabインスタンス間をレポジトリミラーリングしたい場合に有効です。レポジトリPushミラーリング機能はGitLab上のレポジトリからその他のGitレポジトリへ定期的に自動で行なわれます。

これまではGitLab Starter (EE) でのみ利用可能でしたが、今回からCore (旧CE) でも使えるようになりました。

実際、GitLab.comではこれまでも利用できていましたので、[GitHub.comとGitLab.comのリポジトリをミラーリングする](https://qiita.com/hiroponz/items/b888ca49ebfee63f289e)のように使えていました。

**関連ドキュメント**

- [Push Mirroringのドキュメントをもっと読む](https://docs.gitlab.com/ee/workflow/repository_mirroring.html#pushing-to-a-remote-repository)



## Web IDEでファイルのあいまい検索 (Fuzzy file finder in the Web IDE)

![](https://about.gitlab.com/images/10_8/web_ide_fuzzy.png)

[gitlab-org/gitlab-ce#44841](https://gitlab.com/gitlab-org/gitlab-ce/issues/44841)

Web IDEであいまい検索を使ってファイルを開けるようになりました。ファイルのあいまい検索は `Cmd + p`/`Ctrl + p` キーボードショートカットで利用できます。

これまではディレクトリツリーからのみファイルを開くことができました。

**関連ドキュメント**

- [Web IDEのドキュメントをもっと読む](https://docs.gitlab.com/ee/user/project/web_ide)



## Web IDEでのステージングとコミット (Stage and commit by file in the Web IDE)

![](https://about.gitlab.com/images/10_8/web_ide_staging.png)

[gitlab-org/gitlab-ce#44842](https://gitlab.com/gitlab-org/gitlab-ce/issues/44842)

Web IDEで変更したファイルをそのままステージできるようになりました。これにより、Web IDEにおいても変更をより小さなコミットに分割しやすくなりました。変更を加えたファイルは未ステージ変更リストに加えられ、そのリストからコミットに含めたいファイルを選択してステージすることができます。

Web IDEでの作業がより[Git本来の操作](https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E5%9F%BA%E6%9C%AC)に近くなりました。

**関連ドキュメント**

- [Web IDEのドキュメントをもっと読む](https://docs.gitlab.com/ee/user/project/web_ide)



## GitLab Prometheusメトリクスの正式リリース (GitLab Prometheus service metrics now GA, on by default for new installations)

![](https://about.gitlab.com/images/10_8/gitlab_dashboard.png)

[gitlab-org/gitlab-ce#43660](https://gitlab.com/gitlab-org/gitlab-ce/issues/43660)

GitLabは組織内のソフトウェアデリバリライフサイクルのコアになることが多くなっています。そのため、GitLabのリライアビリティ（正常動作、速度安定）は重要です。これまでも、GitLab内部で利用するRedisやPostgreSQL、そして[実験的GitLabメトリクス（9.3でベータ導入）](https://about.gitlab.com/2017/06/22/gitlab-9-3-released/#additional-gitlab-service-metrics)などを導入してきました。

それ以降も、多くのコードを実装するとともに負荷を削減し、現在ではこのPrometheusメトリクスはGitLab.comの運用でも利用されています。

10.8では、GitLab Prometheus Monitoringは一般利用可能(GA)となり、新規インストールではデフォルトで有効となりました。これと同時に、簡単にメトリクスを取得できるように、[サンプルのGrafanaダッシュボードテンプレート](https://grafana.com/dashboards/5774)を公開しています。

**関連ドキュメント**

- [Monitoring GitLab with Prometheusのドキュメントをもっと読む](https://docs.gitlab.com/ee/administration/monitoring/prometheus/gitlab_metrics.html)



## 利用規約の同意を必須に (Enforce terms of service acceptance)

[gitlab-org/gitlab-ce/merge_requests/18570](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18570)

[GitLab.comとそのユーザに対するGDPR対応](https://about.gitlab.com/2018/05/01/new-gitlab-com-terms-of-service/)の一環で、GitLab.comユーザに対して、更新された利用規約の確認と再同意を求めました。これを一度切りの使い捨ての実装とするのでなく、GitLabの機能として実装することにしたので、自前ホスティングにおいても同様の施策を実施することが可能になりました。

GitLabインスタンス管理者はこの機能を有効化すると、ユーザは利用し続ける前に利用規約を確認し再同意するように求められます。同意/再同意するまでは、ウェブ、API、Git全ての通信がブロックされるようになります。

このメッセージは管理者設定で[GitLab-flavored Markdown](https://docs.gitlab.com/ee/user/markdown.html#gitlab-flavored-markdown-gfm)形式で変更可能なので、詳細な情報を確認させるため、外部ページにリンクすることが可能です。

この同意はデータベースに記録されるので、あらゆるコンプライアンスに準拠するための監査証跡として利用可能になります。

**関連ドキュメント**

- [Enforce terms of service acceptanceのドキュメントをもっと読む](https://docs.gitlab.com/ee/user/admin_area/settings/terms.html)



## ディスカッションAPI (Discussions in API)

[gitlab-org/gitlab-ce#43557](https://gitlab.com/gitlab-org/gitlab-ce/issues/43557)

ディスカッション（スレッド化されたコメント）はGitLabウェブUIのIssues, Merge Requests、Epics、Snippets、コミットで利用可能です。10.8リリースでは、これをGitLab APIとして提供開始することで、より柔軟なワークフローが実現可能になります。

**関連ドキュメント**

- [Discussions in APIのドキュメントをもっと読む](https://docs.gitlab.com/ee/api/discussions.html)



## 手動パイプライン実行向け変数 (Specify variables for manual pipelines)

![](https://about.gitlab.com/images/10_8/manual-pipeline-variables.png)

[gitlab-org/gitlab-ce#44059](https://gitlab.com/gitlab-org/gitlab-ce/issues/44059)

しばしば、特定のケースの挙動を確認するため、一度限りの設定値でCIを実行する必要がありました。例えば、デプロイ戦略を一時的に有効にしたり、アプリケーションビルド時に特定のジョブを実行するなどというケースです。

GitLab 10.8では、手動パイプライン実行時に一度限りの変数を指定することが可能になりました。これにより、一度限りの実行のため、プロジェクト全体の変数設定を変更する必要がなくなり、柔軟性を維持したまま、非標準なテスト実行が可能になります。

**関連ドキュメント**

- [running pipelinesのドキュメントをもっと読む](https://docs.gitlab.com/ee/ci/pipelines.html)



## Merge Requestウィジェットでのmerge commit機能 (Merge commit in merge request widget)

![](https://about.gitlab.com/images/10_8/merge-commit-sha.png)

[gitlab-org/gitlab-ce#43557](https://gitlab.com/gitlab-org/gitlab-ce/issues/43557)

GitLabでは、ユーザエクスペリエンスを少しずづ変更し大きな改善を続けています。この機能はよい例です。プロジェクト設定においてmerge commitを利用するようにしている場合、MRがマージされたあと、merge commitのリンクがMRウィジェットに表示されるようになります。そのリンクをすることで、merge commit自体に遷移することが可能です。

多くのワークフローにおいて、merge commitへの動線は有効です。例えば、あるチームがmerge commitを抽出して、リリースブランチやタグに追加するケース（訳注：GitLab Flow利用時）です。この変更により、デプロイされたターゲットブランチにMerge Requestの変更内容が含まれているかをひと目で確認できるようになります。

**関連ドキュメント**

- [Merge requestsのドキュメントをもっと読む](https://docs.gitlab.com/ee/user/project/merge_requests/)



## 長いコミットメッセージの表示改善 (Improved display of long commit messages)

![](https://about.gitlab.com/images/10_8/long_commit.png)

[gitlab-org/gitlab-ce#41283](https://gitlab.com/gitlab-org/gitlab-ce/issues/41283)

一般的に、その変更がなぜ必要だったかをコミットメッセージに含めることで、より小さく、アトミックなコミットに分割することを可能になり、コントリビュータがコミットログを読みやすくなります。GitLabでは長いコミットメッセージが読みやすくなるように改善しました。


## Snippetエンベッドサポート (Embedded Snippets support)

[gitlab-org/gitlab-ce#8088](https://gitlab.com/gitlab-org/gitlab-ce/issues/8088)

Snippetはコード断片についての会話を始めるのに便利な機能で、外部のウェブサイト上で一般公開されたSnippetをエンベッドできるようになりました。これはドキュメント、コード例を含むブログ記事、個人サイトなどに最適です。

この機能は[Haseeb](https://gitlab.com/haseebeqx)によるコミュニティコントリビューションです。ありがとうございます。

**関連ドキュメント**

- [Snippetsのドキュメントをもっと読む](https://docs.gitlab.com/ee/user/snippets.html#embedded-snippets)



## プロジェクトプログラミング言語API (Project languages API)

[gitlab-org/gitlab-ce#40236](https://gitlab.com/gitlab-org/gitlab-ce/issues/40236)

この新しいプログラミング言語APIを使うことで、プロジェクトのプログラミング言語に関する統計を取得でき、分析や調査が可能になります。あなたの組織やGitLab.com上でホストされているOSSプロジェクトで、どのプログラミング言語が使われているかを調べることができます。

この機能は[Roger](https://gitlab.com/rroger)によるコミュニティコントリビューションです。ありがとうございます。

**関連ドキュメント**

- [Projects APIのドキュメントをもっと読む](https://docs.gitlab.com/ee/api/projects.html#languages)



## グループ向けGitLab Runner (GitLab Runners for groups)

![](https://about.gitlab.com/images/10_8/group-runners.png)

[gitlab-org/gitlab-ce#10244](https://gitlab.com/gitlab-org/gitlab-ce/issues/10244)

GitLab Runnersは2種類の設定があります。GitLabインスタンス全体で利用可能なshared、あるいは、プロジェクト別ので利用可能なspecificです。しかし、時には、グループ外からはアクセスできないが、あるグループの全てプロジェクトからのみアクセスできるRunnerを用意したいケースがありました。例えば、GitLab.comではGitLabグループと組織の間に厳密な関係があるので、これがうまく適用できました。

GitLab 10.8からは、GitLab Runner (specific)を特定のグループにアサインすることができ、そのグループ全てのプロジェクトにおいてそのRunnerが使えるようになりました。そのグループ以下の新規プロジェクトでもそれをすぐに使えるようになります。

この機能は[Alexis](https://gitlab.com/koffeinfrei)によるコミュニティコントリビューションです。ありがとうございます。

**関連ドキュメント**

- [Configuring GitLab Runnersのドキュメントをもっと読む](https://docs.gitlab.com/ee/ci/runners/#shared-specific-and-group-runners)



## Auto DevOpsにおけるステージング環境ポリシー (Staging environment policy support for Auto DevOps)

![](https://about.gitlab.com/images/10_8/autodevops-staging.png)

[gitlab-org/gitlab-ce#38549](https://gitlab.com/gitlab-org/gitlab-ce/issues/38549)

Auto DevOps機能はこれまで `master` ブランチ上のパイプラインのたびに自動で `production` 環境への適用するという継続的デプロイモデルを適用していました。これは便利ではあったものの、アプリケーションの成熟度や `production` 環境の安定性の重要度の兼ね合いから `staging` 環境が使いたいというケースがしばしばあります。手動のチェックを経たのち `production` に手動でデプロイできるケースです。この挙動は既にAuto DevOpsテンプレートでサポートされていたものの、標準では有効になっていなかったので、既存プロジェクトでこの機能を利用したい場合は `.gitlab-ci.yml` を明示的に作る必要があります。

GitLab 10.8からは標準のAuto DevOpsテンプレートで環境変数を通じて `staging` が利用可能になります。 `STAGING_ENABLED` 変数を、グループ全体、特定のプロジェクト、個別のパイプラインのいずれかで設定することができます。これにより当該パイプラインでは `production` 環境へのデプロイは任意のタイミングで手動実行できるようになります。

**関連ドキュメント**

- [Auto DevOps deployment policiesのドキュメントをもっと読む](https://docs.gitlab.com/ee/topics/autodevops/#deploy-policy-for-staging-and-production-environments)



## プロジェクトテンプレートのAuto DevOps連携 (Project templates now work with Auto DevOps)

![](https://about.gitlab.com/images/10_8/project-template-autodevops.png)

[gitlab-org/gitlab-ce#36762](https://gitlab.com/gitlab-org/gitlab-ce/issues/36762)

GitLabはプログラミング言語ごとのプロジェクトのテンプレートを用意することで簡単にAuto DevOpsができるようにしてきました。各言語向けにプロジェクトテンプレートを増やしていくことで、簡単に新しいアプリケーションを立ち上げて要件に合うようにカスタマイズできるようになります。

GitLab 10.8では、Ruby on Rails、Spring Boot、Express (Node.js)のテンプレートを改善し、新プロジェクトで[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/)機能が使えるようになりました。これらの改善されたテンプレートを用いれば、アイデアをプロダクションに持っていくのは1時間もかからず実現できるでしょう。

**関連ドキュメント**

- [Creating project-based templatesのドキュメントをもっと読む](https://docs.gitlab.com/ee/gitlab-basics/create-project.html)



## GitLab Runner 10.8

今月もGitLab本体と同時にGitLab Runner 10.8をリリースしています。GitLab RunnerはCI/CDのジョブを実行し結果をGitLab本体に返すエージェントのOSSです。

##### 主な変更点

* [タイムゾーン情報が含まれていない `gitlab/gitlab-runner` イメージ（ubuntu:16.04ベースなど）を使っていて `OffPeakPeriods` を指定した場合にエラーが発生する問題を解消](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/897)
* [ジョブ要求およびAPI利用に関するPrometheusメトリクスを追加](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/886)
* [Fedora 27および28のサポート追加およびFedora 25のサポート終了](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/883)
* [Ubuntu 18.04サポート追加およびUbuntu 17.04サポート終了](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/887)
* [RunnerのドキュメントライセンスをDCOからCC BY-SA 4.0に変更（GitLab本体と同様）](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/893)

全ての変更点はGitLab Runnerの[CHANGELOG](https://gitlab.com/gitlab-org/gitlab-runner/blob/v10.8.0/CHANGELOG.md)に列挙されています。

**関連ドキュメント**

- [GitLab Runnerのドキュメントをもっと読む](https://docs.gitlab.com/runner)



## Omnibusパッケージの改善

RPM/deb形式で最も手軽に利用できるOmnibus GitLabの配布形式の主要なアップデートです。

- [Mattermost 4.9](https://about.mattermost.com/releases/mattermost-4-9/)へのアップグレード: [オープンソースのSlack代替](https://about.mattermost.com/)の最新版でミュートチャンネル、チームアイコンなど多数の機能強化が含まれています。
- HTTP圧縮(gzip)を[デフォルトで有効化](https://docs.gitlab.com/omnibus/settings/nginx.html#disabling-gzip-compression)し、サイトの高速化およびネットワーク帯域幅の削減を実現しました。無効化するには `nginx['gzip_enabled'] = false` を追加設定してください。
- GitLab [Mattermost 4.9.1](https://docs.mattermost.com/administration/changelog.html#release-v4-9)により、パフォーマンス改善と新しい権限システムの不具合を修正しています。
- `ruby` は2.3.7へ `rubygems` は2.6.14へ、それぞれアップデートされています。
- `git` は2.16.3へ `openssl` は1.0.2oへ、それぞれアップデートされています。
- `libxslt` は1.1.32へ `libxml2` は2.9.8へ `rsync` は3.1.3へ `curl` は7.59.0へ、それぞれアップデートされています。
- `unzip` および `bzip2` はCVE対応のためパッチが適用されています。
- 後方互換性を減らして新しい機能追加のため、GitLabパッケージはアップグレードの歳、古くなった設定が削除されているかを確認するようになりました。削除されていない場合はアップグレードする前に古い設定を更新するよう求められます。
- Prometheusの[Alert Manager](https://prometheus.io/docs/alerting/alertmanager/)が標準で同梱されるようになりました（積極的な通知は今後導入される予定です）。
- `reconfigure` している間のGitLab artwork表示は赤から黄色に変わりました（障害でなくメンテナンスであることを明らかにするため）。


**関連ドキュメント**

- [Omnibus GitLabのドキュメントをもっと読む](https://docs.gitlab.com/omnibus/)



## パフォーマンス改善 (Performance improvements)

GitLab 10.8におけるパフォーマンス改善のうち、特筆すべきものは以下です。

* [Diffノートがより高速に表示されます](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18657)
* [メール通知がWeb UIから非同期になります](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18535)
* [MR作成時にブランチが非同期的に読み込まれるようになります](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18315)


**関連ドキュメント**

- [GitLab 10.8における全てのパフォーマンス改善の一覧](https://gitlab.com/groups/gitlab-org/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&label_name%5B%5D=performance&milestone_title=10.8)



---

#### 本ドキュメントのライセンス

- [カバーイメージ](https://unsplash.com/photos/T7K4aEPoGGk): [Unsplash free license](https://unsplash.com/license)
- [その他](https://about.gitlab.com/2018/05/22/gitlab-10-8-released/): [![](https://about.gitlab.com/images/by-sa.svg)](https://creativecommons.org/licenses/by-sa/4.0/) CC BY-SA 4.0

---

#### お知らせ

本リリースがGitLab 10系最後となり、次リリースは6/22に11.0となります。

#### 追記: #movingtogitlab

[@movingtogitlab](https://twitter.com/movingtogitlab)や[#movingtogitlab](https://twitter.com/hashtag/movingtogitlab?src=hash)が盛り上がり始めましたが、それはまた別の機会に。


#### 過去分

- [GitLab CE 10.7リリースノート (Web IDE一般公開)](https://qiita.com/tnir/items/66501667f12cf29f3ba8)
- [GitLab CE 10.6リリースノート (GitLab CI/CD for GitHub)](https://qiita.com/tnir/items/ee991101a7c948a84f7e)
- [GitLab CE 10.5リリースノート](https://qiita.com/tnir/items/479f9616a8bcad17880a)