日本人唯一のGitLab Core Teamの @tnir です。GitLab.JP/GitLab Tokyoオーガナイザとして日本語圏でのマーケティングも注力しています。
統合開発ツールチェイン環境GitLab CE 10.8が2018年5月22日にリリースされました
↑背景画像はイタリアのブライエス湖(山に囲まれた透明度の高い湖)の写真でした。
GitLabには、大きく分けてCommunity Edition (CE) とEnterprise Edition (EE) とありますが、本記事はCEで使えるCore機能のみにフォーカスしています。
2018年4・5月のGitLabトピック(一部)
その1. GitLab, Inc.がコペンハーゲンで開催されていたKubeCon + CloudNativeCon EU 2018に出展していました。私も現地にいたので、ブースでGitLab Team(社員)と少し話をしました。が、終始来客が絶えなかったので、手短に済まさざるを得ませんでした。
その2. 私自身もGitLab CE 10.8においてCEに6件のMRを入れてみました。
GitLabはまだまだUI/UX/機能/パフォーマンスが不十分なため、ご興味のある方はぜひコントリビューションにご参加ください。
その3. GNOMEプロジェクトでGitLabを全面導入することになっていましたが、完全移行が完了したようです。
その4. GitLab.JPにQiita支部が誕生しました。GitLab.JPメンバーの方でQiita記事を投稿している方はGitLab.JP Slackにて参加表明ください
レポジトリPushミラーリングがCore(OSS)に (Push Mirroring now open source)
レポジトリミラーリング機能はGitレポジトリをあるGitLabインスタンスから別のGitLabインスタンスに移行する機能です。そのため、複数のGitLabインスタンス持っていて、自社と顧客のGitLabインスタンス間をレポジトリミラーリングしたい場合に有効です。レポジトリPushミラーリング機能はGitLab上のレポジトリからその他のGitレポジトリへ定期的に自動で行なわれます。
これまではGitLab Starter (EE) でのみ利用可能でしたが、今回からCore (旧CE) でも使えるようになりました。
実際、GitLab.comではこれまでも利用できていましたので、GitHub.comとGitLab.comのリポジトリをミラーリングするのように使えていました。
関連ドキュメント
Web IDEでファイルのあいまい検索 (Fuzzy file finder in the Web IDE)
Web IDEであいまい検索を使ってファイルを開けるようになりました。ファイルのあいまい検索は Cmd + p
/Ctrl + p
キーボードショートカットで利用できます。
これまではディレクトリツリーからのみファイルを開くことができました。
関連ドキュメント
Web IDEでのステージングとコミット (Stage and commit by file in the Web IDE)
Web IDEで変更したファイルをそのままステージできるようになりました。これにより、Web IDEにおいても変更をより小さなコミットに分割しやすくなりました。変更を加えたファイルは未ステージ変更リストに加えられ、そのリストからコミットに含めたいファイルを選択してステージすることができます。
Web IDEでの作業がよりGit本来の操作に近くなりました。
関連ドキュメント
GitLab Prometheusメトリクスの正式リリース (GitLab Prometheus service metrics now GA, on by default for new installations)
GitLabは組織内のソフトウェアデリバリライフサイクルのコアになることが多くなっています。そのため、GitLabのリライアビリティ(正常動作、速度安定)は重要です。これまでも、GitLab内部で利用するRedisやPostgreSQL、そして実験的GitLabメトリクス(9.3でベータ導入)などを導入してきました。
それ以降も、多くのコードを実装するとともに負荷を削減し、現在ではこのPrometheusメトリクスはGitLab.comの運用でも利用されています。
10.8では、GitLab Prometheus Monitoringは一般利用可能(GA)となり、新規インストールではデフォルトで有効となりました。これと同時に、簡単にメトリクスを取得できるように、サンプルのGrafanaダッシュボードテンプレートを公開しています。
関連ドキュメント
利用規約の同意を必須に (Enforce terms of service acceptance)
gitlab-org/gitlab-ce/merge_requests/18570
GitLab.comとそのユーザに対するGDPR対応の一環で、GitLab.comユーザに対して、更新された利用規約の確認と再同意を求めました。これを一度切りの使い捨ての実装とするのでなく、GitLabの機能として実装することにしたので、自前ホスティングにおいても同様の施策を実施することが可能になりました。
GitLabインスタンス管理者はこの機能を有効化すると、ユーザは利用し続ける前に利用規約を確認し再同意するように求められます。同意/再同意するまでは、ウェブ、API、Git全ての通信がブロックされるようになります。
このメッセージは管理者設定でGitLab-flavored Markdown形式で変更可能なので、詳細な情報を確認させるため、外部ページにリンクすることが可能です。
この同意はデータベースに記録されるので、あらゆるコンプライアンスに準拠するための監査証跡として利用可能になります。
関連ドキュメント
ディスカッションAPI (Discussions in API)
ディスカッション(スレッド化されたコメント)はGitLabウェブUIのIssues, Merge Requests、Epics、Snippets、コミットで利用可能です。10.8リリースでは、これをGitLab APIとして提供開始することで、より柔軟なワークフローが実現可能になります。
関連ドキュメント
手動パイプライン実行向け変数 (Specify variables for manual pipelines)
しばしば、特定のケースの挙動を確認するため、一度限りの設定値でCIを実行する必要がありました。例えば、デプロイ戦略を一時的に有効にしたり、アプリケーションビルド時に特定のジョブを実行するなどというケースです。
GitLab 10.8では、手動パイプライン実行時に一度限りの変数を指定することが可能になりました。これにより、一度限りの実行のため、プロジェクト全体の変数設定を変更する必要がなくなり、柔軟性を維持したまま、非標準なテスト実行が可能になります。
関連ドキュメント
Merge Requestウィジェットでのmerge commit機能 (Merge commit in merge request widget)
GitLabでは、ユーザエクスペリエンスを少しずづ変更し大きな改善を続けています。この機能はよい例です。プロジェクト設定においてmerge commitを利用するようにしている場合、MRがマージされたあと、merge commitのリンクがMRウィジェットに表示されるようになります。そのリンクをすることで、merge commit自体に遷移することが可能です。
多くのワークフローにおいて、merge commitへの動線は有効です。例えば、あるチームがmerge commitを抽出して、リリースブランチやタグに追加するケース(訳注:GitLab Flow利用時)です。この変更により、デプロイされたターゲットブランチにMerge Requestの変更内容が含まれているかをひと目で確認できるようになります。
関連ドキュメント
長いコミットメッセージの表示改善 (Improved display of long commit messages)
一般的に、その変更がなぜ必要だったかをコミットメッセージに含めることで、より小さく、アトミックなコミットに分割することを可能になり、コントリビュータがコミットログを読みやすくなります。GitLabでは長いコミットメッセージが読みやすくなるように改善しました。
Snippetエンベッドサポート (Embedded Snippets support)
Snippetはコード断片についての会話を始めるのに便利な機能で、外部のウェブサイト上で一般公開されたSnippetをエンベッドできるようになりました。これはドキュメント、コード例を含むブログ記事、個人サイトなどに最適です。
この機能はHaseebによるコミュニティコントリビューションです。ありがとうございます。
関連ドキュメント
プロジェクトプログラミング言語API (Project languages API)
この新しいプログラミング言語APIを使うことで、プロジェクトのプログラミング言語に関する統計を取得でき、分析や調査が可能になります。あなたの組織やGitLab.com上でホストされているOSSプロジェクトで、どのプログラミング言語が使われているかを調べることができます。
この機能はRogerによるコミュニティコントリビューションです。ありがとうございます。
関連ドキュメント
グループ向けGitLab Runner (GitLab Runners for groups)
GitLab Runnersは2種類の設定があります。GitLabインスタンス全体で利用可能なshared、あるいは、プロジェクト別ので利用可能なspecificです。しかし、時には、グループ外からはアクセスできないが、あるグループの全てプロジェクトからのみアクセスできるRunnerを用意したいケースがありました。例えば、GitLab.comではGitLabグループと組織の間に厳密な関係があるので、これがうまく適用できました。
GitLab 10.8からは、GitLab Runner (specific)を特定のグループにアサインすることができ、そのグループ全てのプロジェクトにおいてそのRunnerが使えるようになりました。そのグループ以下の新規プロジェクトでもそれをすぐに使えるようになります。
この機能はAlexisによるコミュニティコントリビューションです。ありがとうございます。
関連ドキュメント
Auto DevOpsにおけるステージング環境ポリシー (Staging environment policy support for Auto DevOps)
Auto DevOps機能はこれまで master
ブランチ上のパイプラインのたびに自動で production
環境への適用するという継続的デプロイモデルを適用していました。これは便利ではあったものの、アプリケーションの成熟度や production
環境の安定性の重要度の兼ね合いから staging
環境が使いたいというケースがしばしばあります。手動のチェックを経たのち production
に手動でデプロイできるケースです。この挙動は既にAuto DevOpsテンプレートでサポートされていたものの、標準では有効になっていなかったので、既存プロジェクトでこの機能を利用したい場合は .gitlab-ci.yml
を明示的に作る必要があります。
GitLab 10.8からは標準のAuto DevOpsテンプレートで環境変数を通じて staging
が利用可能になります。 STAGING_ENABLED
変数を、グループ全体、特定のプロジェクト、個別のパイプラインのいずれかで設定することができます。これにより当該パイプラインでは production
環境へのデプロイは任意のタイミングで手動実行できるようになります。
関連ドキュメント
プロジェクトテンプレートのAuto DevOps連携 (Project templates now work with Auto DevOps)
GitLabはプログラミング言語ごとのプロジェクトのテンプレートを用意することで簡単にAuto DevOpsができるようにしてきました。各言語向けにプロジェクトテンプレートを増やしていくことで、簡単に新しいアプリケーションを立ち上げて要件に合うようにカスタマイズできるようになります。
GitLab 10.8では、Ruby on Rails、Spring Boot、Express (Node.js)のテンプレートを改善し、新プロジェクトでAuto DevOps機能が使えるようになりました。これらの改善されたテンプレートを用いれば、アイデアをプロダクションに持っていくのは1時間もかからず実現できるでしょう。
関連ドキュメント
GitLab Runner 10.8
今月もGitLab本体と同時にGitLab Runner 10.8をリリースしています。GitLab RunnerはCI/CDのジョブを実行し結果をGitLab本体に返すエージェントのOSSです。
主な変更点
- タイムゾーン情報が含まれていない
gitlab/gitlab-runner
イメージ(ubuntu:16.04ベースなど)を使っていてOffPeakPeriods
を指定した場合にエラーが発生する問題を解消 - ジョブ要求およびAPI利用に関するPrometheusメトリクスを追加
- Fedora 27および28のサポート追加およびFedora 25のサポート終了
- Ubuntu 18.04サポート追加およびUbuntu 17.04サポート終了
- RunnerのドキュメントライセンスをDCOからCC BY-SA 4.0に変更(GitLab本体と同様)
全ての変更点はGitLab RunnerのCHANGELOGに列挙されています。
関連ドキュメント
Omnibusパッケージの改善
RPM/deb形式で最も手軽に利用できるOmnibus GitLabの配布形式の主要なアップデートです。
- Mattermost 4.9へのアップグレード: オープンソースのSlack代替の最新版でミュートチャンネル、チームアイコンなど多数の機能強化が含まれています。
- HTTP圧縮(gzip)をデフォルトで有効化し、サイトの高速化およびネットワーク帯域幅の削減を実現しました。無効化するには
nginx['gzip_enabled'] = false
を追加設定してください。 - GitLab Mattermost 4.9.1により、パフォーマンス改善と新しい権限システムの不具合を修正しています。
-
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が標準で同梱されるようになりました(積極的な通知は今後導入される予定です)。
-
reconfigure
している間のGitLab artwork表示は赤から黄色に変わりました(障害でなくメンテナンスであることを明らかにするため)。
関連ドキュメント
パフォーマンス改善 (Performance improvements)
GitLab 10.8におけるパフォーマンス改善のうち、特筆すべきものは以下です。
関連ドキュメント
本ドキュメントのライセンス
- カバーイメージ: Unsplash free license
-
その他:
CC BY-SA 4.0
お知らせ
本リリースがGitLab 10系最後となり、次リリースは6/22に11.0となります。
追記: #movingtogitlab
@movingtogitlabや#movingtogitlabが盛り上がり始めましたが、それはまた別の機会に。