プロジェクトのサイズに関係なく、ツールは次のことを行う必要があります。
a。 仕事で快適に
b。 有用なフィードバックを提供します。
今月は、GitLabがこれらの各点で改善されました。 GitLab 8.12は、作業の有効性に関するフィードバックを提供し、コードベース全体で適切なコードを見つけるのに役立ち、ワンクリックでワークフローを保護でき、さらに多くのことができます。
今月のMVP( Most Valuable Person )はJames Munnellyです。彼はKubernetesをGitLab CIに統合しました 。 この機能により、KubernetesクラスターでCIテストを簡単に実行できます。 ジェームズはこのマージリクエストを約1年前に開き、レビューの結果に基づいて辛抱強く永続的に変更しました。
ジェームズありがとう!
ソフトウェア開発サイクル分析(サイクル分析)
会話型開発(convdev)の最初の原則は、ソフトウェア開発サイクルの時間、つまりアイデアが実現され、実稼働にリリースされる時間を短縮することです。 サイクル時間が短いほど、チームの効率は高くなります。
GitLab 8.12では、チームの平均サイクル時間を示すツールであるCycle Analyticsを実装しました。
サイクル分析は、開発サイクルの期間を個別のステップに分割して表示するため、改善が可能な場所を確認し、開発時間を正確に予測できます。
サイクル分析ページは、各プロジェクトの[パイプライン]タブにあります。
サイクル分析の詳細。
グローバルコード検索(EE)
GitLab Enterprise EditionでElasticsearchが構成されている場合、すべてのプロジェクトをコードで一度に検索できます。
以前と同じ方法で検索を使用します。 GitLabにアクセスできるすべてのプロジェクトの結果が表示されるようになりました。
この機能にはElasticsearchインデックスの再構築が必要であることに注意してください。
詳細については、「バロメーターの更新」セクションをご覧ください。
リクエストバージョンのマージ
マージリクエストに新しいコミットを追加する場合、以前のコミットの1つとターゲットブランチの差分を確認することは非常に困難です。
マージリクエストのトラッキングバージョンを使用すると、マージリクエストの以前の状態を確認し、以前のコミットをターゲットブランチまたは別のコミットと比較できます。
マージリクエストバージョンの詳細
機密情報(EE)の公開に対する保護
キーや証明書などの機密情報のコミットは、非常に重大なエラーです。 このデータは、リポジトリを複製できるすべての人に送られます。情報を侵害するには、1つのリークで十分です。
残念ながら、これは頻繁に起こります。
たとえば、 git commit -am'' && git push
を書くと、その後にgit commit -am'' && git push
ます。
GitLabには、機密情報を含むコミットをブロックする新しいプッシュルールチェック(プッシュルール)があります。 チェックボックスをオンにすると、GitLabは.pem
や.key
などの安全でないファイルのコミットを許可しません。
GitLab EEには、以前は正規表現でファイルをブロックする機能がありました。 これを使用して、フィルターに含まれていないもののブロックを構成できます。
プッシュチェックの詳細
アプリの確認(実験的機能)
GitLab CIにいくつかの変更を加えました。 一緒にいくつかの魔法を作成します。
CI変数で環境名を指定できるようになりました。 .gitlab-ci.yml
で環境設定のURLを指定することもでき.gitlab-ci.yml
。 これら2つの機能を合わせて、Review Appsの最初の反復の基礎を形成します。
レビューアプリは、各ブランチのコードがデプロイされる環境を自動的に作成します。 これは、各マージ要求に作業環境が自動的に割り当てられることを意味します。
この機能のアイデアはHeroku Review Appsからとられ、 HerokuはFourchetteからそれを借りました。
これらの小さな革新は、ワークフローに大きな影響を与える可能性があります。 作業環境があると、アプリケーションのあらゆる側面(パフォーマンスからユーザーインターフェイスまで)のレビューが容易になります。
現時点では、アプリのレビュー機能は実験的であると見なされます。これは、環境が不要になったときにまだ自動的に破棄されないためです。
SSHを介したLFSでの承認
SSHを介してプッシュすることに慣れている場合、LFSを使用するたびにユーザー名とパスワードを入力するのは少しイライラするでしょう。
GitLabは、LFSを使用するときにSSHキーを使用するようになりました。 つまり、SSH経由で接続するLFSを使用する場合、識別用のデータを手動で入力する必要がなくなりました
LFSファイル転送は引き続きHTTP経由で行われます。
LFSの有効化と無効化
Git LFS(大容量ファイルストレージ)は優れていますが、この機能を使用すると、その名が示すとおり、大量のディスク領域が必要になる場合があります。 ディスク領域の無駄遣いを軽減するために、GitLabインスタンス全体、プロジェクトのグループ、または特定のプロジェクトでLFSをオンまたはオフにできます。
プロジェクトサイズ制限(EE)
LFSのサイズを制限することに加えて、プロジェクトの最大サイズを制限できるようになりました。 制限はすべてのリポジトリデータとLFSオブジェクトに適用され、制限を超えるコミットは停止します。
管理者は、グローバル制限を設定し、グループおよびプロジェクトレベルで再定義できます。 したがって、追加のスペースを特定のプロジェクトに割り当てることができます。
詳細については、 リポジトリサイズ制限のドキュメントを参照してください。
LDAP / Active Directoryの機能強化
このリリースでは、GitLab CEおよびEEのLDAP / Active Directoryサポートにいくつかの機能強化が追加されています。
- CE / EE-GitLabが必要とするユーザー/グループLDAP属性(CE 6187およびEE 712 )のみを要求し、GitLabとLDAP / Active Directoryサーバー間で転送されるデータ量を削減します。 また、GitLab内のオブジェクトが使用するメモリ量も削減します。
- EE-ネストされたグループおよびページ分割されたユーザーリクエストの選択の高速化(大規模なグループの場合)( 719 )
- EE-LDAPグループリンクが存在する場合、チームメンバーページに「今すぐ同期」オプションを追加( 704 )
SSHを介した2要素認証トークンの回復
これで、SSHを使用して2要素認証コードを回復できます。 盗難が発生した場合のアカウントの復旧は簡単になりましたが、システムのセキュリティの全体的なレベルは低下していません。
詳細については、 SSHを介した2要素認証の復元に関するドキュメントを参照してください 。
名前タグフィルター
タグをすばやく見つけたいですか? これには、ページ上部の新しい便利なフィルターを使用します。
APIの追加
GitLab 8.12では、APIを拡張しました:
- これで、グループとプロジェクトに
request_access_enabled
パラメーターを設定できます -
notification_settings
API呼び出しを追加しました -
BroadcastMessage
APIを追加しました - これで、APIを介して特定の名前空間に分岐できます
- グループおよびプロジェクトのアクセス要求を有効/無効にする機能
- チケット、マージ要求、スニペットに
web_url
フィールドを追加しました(機能はコミュニティのメンバーによって実装されています) - マージリクエストのAPIリクエストで
sha
とmerge_commit_sha
を返します。 (コミュニティのメンバーによって実装された機能) - チケットの機密性の認識認識(コミュニティのメンバーによって実装された機能)
- プロジェクト設定
only_allow_merge_if_build_succeeds
追加されました。 (コミュニティのメンバーによって実装された機能) -
.gitlab-ci.yml
ファイルで構文の正確性(lint)を確認するAPI呼び出しを追加しました(機能はコミュニティのメンバーによって実装されています) - DeploymentsおよびDeploymentsセクションに手動アクションを表示するためのAPIを追加しました
GitHubによる改善されたインポートツール
GitHubのインポートツールはどんどん良くなっており、GitLabへの移行が容易になっています。 GitLab 8.12では、インポートツールはリリースノートをGitLabにコピーし、プロジェクトをインポートするネームスペースを選択することもできます。
GitLabに既にプロジェクトがある場合、またはGitLabのデフォルトのインポート動作とは異なる何かが必要な場合、これにより移行プロセスが容易になります。
詳細については、GitHubからのリポジトリのインポートに関するドキュメントを参照してください。
一括マージ要求管理
これで、複数のマージリクエストを一度に編集できます。 ステータス、ステージ(マイルストーン)、ラベル、説明、またはマージリクエストが割り当てられている開発者など、複数のマージリクエストを同時に変更できます。
多くのマージ要求を伴うプロジェクト管理がはるかに簡単になります!
ビルドのグループ化
同様のビルドが多数ある場合、パイプラインスキームは非常に長くなります。 外観を改善するために小さな変更を加えました。同様のビルドは自動的に互いにグループ化されます。
拡張構文の強調表示
rouge 2.0.6への切り替えにより、JSX、Prometheus、mxml、1C(1C、Karl!)、Turtle / trig、vhdlの構文強調表示、およびSwift 3の強調表示の改善が追加されました。
主力製品での歩tryの統合
GitLab-Workhorseは、アプリケーションエラーをSentryに送信できるようになりました。
詳細については、 GitLab-Workhorseのドキュメントをご覧ください。
Gitlabランナー1.6
本日、GitLab Runner 1.6もリリースします。 キーポイント:
- Kubernetes executor( 30および277 )、これによりKubernetesはCIランナーの数を自動的にスケーリングできます。 すべてのビルドは、ビジーでないときにアイドル状態のマシンを実行せずにすぐに処理されます。
- ランナーの登録中のGitLab URLでの/ ciのオートコンプリート( 289 )
- クローン/フェッチが実行される前、およびビルドスクリプトが実行される前に実行されるスクリプトを指定するための構成オプション( 106 )
- ビルドへのCA証明書の受け渡しの改善( 299 )
- 再帰サブモジュールのフェッチ/クローン作成の無効化の改善( 314 )
- Dockerマシンのログの改善( 234 )
- 別のコンテナから継承するボリュームのリストを指定する可能性を追加( 236 )
- Docker / Kubernetesイメージが欠落している場合、
BuildError
代わりにSystemError
を生成しBuildError
( 295 )
変更の完全なリストについては、 ランナーの変更ログファイルを参照してください。
GitLab Mattermost 3.4
Mitトラッカー、シェフ、アンシブル、ユノホスト。
パフォーマンスの強化
- Railsキャッシングメカニズムを使用する場合、Sidekiqプロセスは接続プーリングを使用するようになりました。 マージ要求
-
oj
gemを使用してJSON処理を高速化: マージリクエスト -
projects.last_activity_at
列は、データベースの負荷を軽減するために1時間に1回のみ更新されます。 マージ要求 -
projects.pushes_since_gc
列は、データベースの負荷を減らすためにデータベースからRedisに移動されました: マージ要求 - ブランチ名が不明な場合、保護されたブランチの検証は実行されません。これにより、このプロセスに費やされる時間が短縮されます: マージ要求
- コミットに関するコメントを閉じることができるかどうかの確認は、コメントをまったく閉じることができる場合にのみ行われます: マージ要求
-
ci_runners
テーブルの更新頻度が減り、データベースの負荷が軽減されました。 マージ要求 - コミット/マージリクエストの[ビルド]タブで使用されるデータベースクエリの数を減らしました: マージリクエスト
- アクションカレンダーの最大サイズを縮小しました。
マージリクエスト
アセンブリ許可の変更
GitLab 8.12は、ビルド許可に重要な変更をもたらします
アセンブリのアクセス権は、このアセンブリを起動したユーザーのアクセス権と密接に関連する必要があると判断しました。 次の理由があります。
- ユーザーのアクセス権のシステムが既にあります(ユーザーが属するグループまたはプロジェクトに基づいて)
- どのユーザーがビルドを起動するかは(Gitでのプッシュの使用、Web経由、またはトリガー経由のいずれであっても)わかっています。
- このユーザーが許可されていることはわかっています。
- プッシュによって開始されたアセンブリは、プッシュを行ったユーザーと同じ権限を付与します(アセンブリがアクセスできるすべてのものにアクセスできると便利です)
- アセンブリの有効期間中に必要なアクセスを提供する一意の短命トークンを作成できます。
- これは私たちの哲学と非常によく相関しています:「すべてを統合する必要があります)
- このアプローチにより、アクセス権を使用して多くの興味深いことができます。たとえば、個々のユーザーのみにランナー、シークレット変数、デプロイメント環境へのアクセスを許可します。
これで、ユーザーが起動したアセンブリには、このユーザーのアクセス権が付与されます。 ユーザーがgit push
か、ユーザーインターフェイスを介してファイルを変更すると、新しいパイプラインが作成されます。 このパイプラインは、プッシュを行ったパイプラインに属し、このパイプラインで作成されたビルドには、プッシュを行ったパイプラインへのアクセス権があります。
これにより、アセンブリの作成者がアクセスできるすべての依存プロジェクトおよびコンテナイメージへのアクセスを促進するプロセスを促進できます。 アクセス権は、アセンブリの期間中のみ許可されます。 アセンブリが完了すると、アクセスが取り消されます。
アセンブリのアクセス許可とこれに関連する変更の詳細については、ドキュメントを参照してください 。
この変更の歴史と理由に興味がある場合は、 関連記事で詳細な説明を読むことができます。
CIのサブモジュール
サブモジュールは、アセンブリのアクセス許可を再設計した理由の1つです。 CIビルドでサブモジュールを使用するのがはるかに簡単になりました。
サブモジュールを使用するには、次のような.gitmodules
ファイルが必要です。
[submodule "tools"] path = tools url = git@gitlab.com/group/tools.git
サブモジュールに新しいアセンブリ権限を使用するには、URLを相対的なものに変換する必要があります。
[submodule "tools"] path = tools url = ../../group/tools.git
これにより、Gitはプロジェクトソースへのアクセスと同じユーザー名とパスワードを使用するようになります。
最後のステップは、GitLab CIにサブモジュールの収縮を指示することです:
before_script: - git submodule update --init --recursive
サブモジュールのサポートの詳細については、 ドキュメントをご覧ください。
その他の変更
このリリースには、さまざまなセキュリティ修正を含む他の多くの変更があります。 すべての変更を確認するには、変更ログを参照してください。
バロメーターの更新
このリリースでは、外部キーが追加され、列の種類が変更され、一部の列がテーブル間で移動されるため、追加の時間が必要になります。 大規模なインスタンスの移行プロセス全体には、最大30分かかります。 小規模な場合、遅延は約10〜15分と想定されます。
(EEのみ)Elasticsearchの再インデックス付け
親子関係を使用して、リポジトリのElasticsearchインデックスを再設計しました。 ESインデックス全体を完全に再構築する必要があります。 Elasticsearch 2.3.xには、ハイライト機能と親子関係を同時に使用するすべてのリクエストが失敗するバグも含まれているため、バージョン2.4以降を使用することをお勧めします。 GitLab 8.12にアップグレードした後、古いインデックスを削除して新しいインデックスを再構築する必要があります。
古いインデックスを削除するには、Elasticsearchに次のリクエストを行います。
curl -XDELETE 'http://localhost:9200/gitlab-production/'
次に、 Elasticsearch統合ドキュメントの説明に従って、新しいインデックスを再構築します
Rubyアップデート
以前のリリース投稿で、 GitLab 8.13でのRuby 2.1.xのサポートが中止されると述べました。 私たちは心を変えて、近い将来Ruby 2.1.xのサポートをやめません。
ソースからインストールを実行する場合は、Ruby 2.3にアップグレードすることをお勧めします。これはOmnibusに付属しているのと同じバージョンです。
高度なユーザーデータ送信(EE)
製品の使用例に関する詳細情報を提供するために、GitLab 8.12 EEは追加データをサーバーに送信するようになりました。
ユーザー情報(プロジェクト名、コメント、ファイルの内容など)は収集しません。 送信されたデータは管理者設定で表示できます。必要に応じて、この機能をオフにすることができます。
詳細情報-関連するマージリクエスト内
GitLab-Workhorse Secret Key
GitLab-Workhorseは、秘密キーを使用してGitLab Railsアプリケーションに送信されるメッセージに署名するようになりました。 これまでのところ、これは主に構成の検証です。 将来のリリースでは、信頼を確認するためにこの秘密キーを必要とする機能をGitLab-Workhorseに追加したいと考えています。
Omnibusを使用している場合、または公式のinit.dスクリプトを使用してGitLabをソースからインストールした場合、秘密キーが自動的に生成およびインストールされます。 init.dスクリプトを使用する場合、またはGitLab Inc.によって作成されていないパッケージを使用する場合は、 -secretPath
オプションをGitLab-Workhorseに設定する必要があります。
もう一つ
最新バージョンからアップグレードすることを想定しています。 そうでない場合は、スキップする中間バージョンの「更新バロメーター」を確認してください。 GitLabバージョン8.0からアップグレードしていて、CIを有効にしている場合は、最初にGitLab 8.0にアップグレードする必要があります
元のOmnibusパッケージは、更新がどれだけ「大きい」か「小さい」かに関係なく、停止し、移行を開始し、再び開始することに注意してください。 この動作を変更するには、ファイル/etc/gitlab/skip-auto-migrations
追加します。
設置
GitLabをゼロからインストールする場合は、 該当するセクションをお読みください。
更新する
私たちのアップデートをお楽しみに。
エンタープライズ版
GitLab Enterprise Editionには、LDAPグループのサポートなどの追加機能が含まれています。 詳細については、
GitLab EEの説明 。
GitLab EEはサブスクリプションでのみ利用可能です。
新しいツールをインストールして構成するのに十分な時間がありませんか? サブスクリプション価格には、サーバーにGitLabをインストールおよび更新するためのサービスが含まれています。
英語からの翻訳は、翻訳チーム「Brain and Partners」、 http: //nadmosq.ru、nick_volynkin、rishavant 、およびcheburequeによって行われました。