プロジェクト

GitLabでは、コードベースをホスティングするためのプロジェクトを作成し、イシュー・トラッカーとして使用し、コード上でコラボレーションし、組み込みのGitLab CI/CDでアプリを継続的にビルド、テスト、デプロイすることができます。

GitLabでは、作成する非公開プロジェクトの数に制限はありません。

プロジェクトの特徴

GitLabでプロジェクトを作成すると、多くの機能にアクセスできるようになります:

リポジトリ:

  • イシュー・トラッカー:イシュー内でチームと実装について議論
  • リポジト: 完全にインテグレーションされたプラットフォームでコードをホストします。
    • ブランチ: Git のブランチ戦略を使ってコードを共同編集します。
    • 保護されたブランチ: 共同作業者が履歴をいじったり、レビューせずにコードをプッシュしたりするのを防ぎます。
    • 保護されたタグ: タグを作成する権限を持つ人を制御し、不慮の更新や削除を防止します。
    • リポジトリのミラーリング
    • コミットへの署名: GPG を使ってコミットに署名します。
    • デプロイトークン:リポジトリとコンテナレジストリへの永続的なアクセスを可能にするプロジェクトベースのデプロイトークンを管理します。
  • Web IDE

イシューとマージリクエスト:

GitLab CI/CD:

  • GitLab CI/CD: GitLab 組み込みの継続的インテグレーション、デリバリー、デプロイツールです。
    • コンテナレジストリ:Dockerイメージをすぐにビルドしてプッシュできます。
    • Auto Deploy: GitLab CI/CDを設定して、アプリのデプロイを自動的に設定します。
    • GitLab CI/CDの有効化と無効化
    • パイプライ: GitLab CI/CDパイプラインをUIから設定し、可視化します。
      • スケジュールされたパイプライン: 指定した時刻にパイプラインが開始するようにスケジュールします。
      • パイプライングラフ: UIからパイプライン全体を確認できます。
      • ジョブアーティファクト:ジョブアーティファクトの定義、閲覧、ダウンロード
      • パイプラインの設定: Git戦略(ジョブでリポジトリがGitLabから取得されるデフォルトの方法を選択)、タイムアウト(ジョブが実行できる最大時間を分単位で定義)、.gitlab-ci.ymlのカスタムパス、テストカバレッジの解析、パイプラインの可視性などを設定します。
    • Kubernetesクラスタインテグレーション:GitLabプロジェクトとKubernetesクラスタの接続
    • 機能フラ: 機能フラグによって、特定の機能を動的に切り替えることで、プロジェクトをさまざまなフレーバーで出荷できます。
  • GitLab Pages: GitLab Pagesで静的ウェブサイトを構築、テスト、デプロイ

その他の特徴

  • Wiki: GitLabプロジェクトをインテグレーションWikiで文書化します。
  • スニペット:コードスニペットの保存、共有、コラボレーション。
  • バリューストリーム分析:開発ライフサイクルをレビューします。
  • インサイト:プロジェクトに重要なインサイトを設定します。
  • セキュリティダッシュボード:セキュリティダッシュボード。
  • シンタックスハイライト: GitLabのデフォルトの言語選択を上書きし、コードブロックをカスタマイズする代替手段です。
  • バッジ:プロジェクト概要のバッジ。
  • リリース:ソース、ビルド出力、その他のメタデータ、コードのリリースバージョンに関連するその他のアーティファクトのスナップショットとして、プロジェクトの成果物を追跡する方法です。
  • Conan packages: GitLabの非公開Conanリポジトリ。
  • Mavenパッケージ:GitLabの非公開Mavenリポジトリ。
  • NPM packages: GitLabの非公開NPMパッケージレジストリ。
  • コードオーナー:特定のファイルのコードオーナーを指定します。
  • ライセンスコンプライアンス:プロジェクトのライセンス承認者と拒否者。
  • 依存関係リスト:プロジェクトの依存関係を表示します。
  • 要件:要件では、製品をチェックするための基準を作成できます。
  • 静的サイトエディター:コードベースやgitコマンドの予備知識がなくても、静的ウェブサイトのコンテンツを素早く編集できます。
  • コードインテリジェンス:コードナビゲーション機能。

プロジェクトインテグレーション

プロジェクトをJira、Mattermost、Kubernetes、Slack などとインテグレーションできます。

新プロジェクト

GitLabで新しいプロジェクトを作成する方法を学びます。

プロジェクトのフォーク

プロジェクトをフォークすることができます:

  • プロジェクトをフォークし、フォークしたプロジェクトから上流プロジェクトへマージリクエストを作成することで、コードの共同作業を行うことができます。
  • サンプルプロジェクトをフォークして、その上で作業します。

プロジェクトのスター

プロジェクトに星を付けると、よく使うプロジェクトを見つけやすくなります。 プロジェクトの星の数は、そのプロジェクトの人気を示すことができます。

プロジェクトのスターに:

  1. スターになりたいプロジェクトのホームページにアクセスしてください。
  2. ページ右上の「スター」をクリックします。

スターを付けたプロジェクトを見るには:

  1. ナビゲーションバーのプロジェクトをクリックします。
  2. スター付きプロジェクトをクリックします。
  3. GitLabはスターを付けたプロジェクトの情報を表示します:

    • プロジェクトの説明(名前、説明、アイコンを含む
    • このプロジェクトがスターを獲得した回数
    • このプロジェクトがフォークされた回数
    • 未解決マージリクエスト数
    • 未解決イシュー数

プロジェクト

GitLabで利用可能な他の人気プロジェクトを調べることができます。 プロジェクトを調べるには

  1. ナビゲーションバーのプロジェクトをクリックします。
  2. Explore Projectsをクリックします。

GitLabはプロジェクトのリストを最終更新日順に表示します。星の数が最も多いプロジェクトを表示するには、Most starsをクリックします。 過去1ヶ月でコメント数が最も多いプロジェクトを表示するには、Trendingをクリックします。

プロジェクト設定

プロジェクトの可視レベルや各ページへのアクセスレベルを設定し、プロジェクトのアーカイブ、リネーム、転送などのアクションを実行できます。

プロジェクト設定のドキュメントに目を通してください。

プロジェクトのインポートまたはエクスポート

プロジェクトの削除

プロジェクトを削除するには、まずそのプロジェクトのホームページに移動します。

  1. 設定 > 一般に移動します。
  2. 高度なセクションを展開します。
  3. プロジェクトの削除セクションまでスクロールダウンします。
  4. プロジェクトの削除
  5. 期待するテキストを入力して、このアクションを確認します。

除去の遅れ

デフォルトでは、プロジェクトの削除をクリックすると、7日間の遅延が発生します。 管理者は、この期間中にプロジェクトを復元することができます。 この遅延は、管理者が変更することができます。

管理者は、削除を保留しているすべてのプロジェクトを見ることができます。 管理者であれば、上部のナビゲーションバーで「プロジェクト」>「自分のプロジェクト」をクリックし、「削除済みプロジェクト」タブを選択します。 このタブから、管理者は任意のプロジェクトを復元することができます。

外部リポジトリのCI/CD

リポジトリを GitLab に直接インポートする代わりに、CI/CD プロジェクトとしてリポジトリを接続することができます。

外部リポジトリのCI/CDに関するドキュメントに目を通してください。

プロジェクトメンバー

プロジェクトにメンバーを追加する方法をご紹介します。

プロジェクトアクティビティ

プロジェクトのアクティビティを表示するには、プロジェクト概要 > アクティビティに移動します。 そこから、タブをクリックしてすべてのアクティビティを表示したり、プッシュイベント、マージイベントイシューイベントコメントチームWikiでフィルタリングして表示することができます。

プロジェクトを残す

Leave projectは、プロジェクトがグループ(グループの名前空間)に属している場合にのみ、プロジェクトのダッシュボードに表示されます。 プロジェクトから離脱する場合、プロジェクトのメンバーではなくなるため、貢献することができなくなります。

プロジェクトのランディングページ

プロジェクトのランディングページには、プロジェクトの表示設定とユーザー権限によって異なる情報が表示されます。

公開プロジェクト、およびプロジェクトのコードを閲覧する権限を持つ内部プロジェクトや非公開プロジェクトのメンバーに対して:

  • README またはインデックスファイルの内部が表示され(ある場合)、続いてプロジェクトのリポジトリ内のディレクトリの一覧が表示されます。
  • プロジェクトにこれらのファイルが含まれていない場合、訪問者はリポジトリのファイルとディレクトリのリストを見ることになります。

プロジェクトのコードを見る権限のないユーザー向け:

  • Wikiのホームページがあれば表示されます。
  • プロジェクト内のイシューのリストが表示されます。

リポジトリパス変更時のリダイレクト

リポジトリのパスが変更された場合、古い場所から新しい場所へスムーズに移行することが不可欠です。 GitLabでは、Web UIとGit push/pullリダイレクトの2種類のリダイレクトを提供しています。

状況によって、適用されるものは異なります。

ユーザー名の変更、グループパスの変更、リポジトリ名の変更を行う場合:

  • 名前空間とその下にあるもの(プロジェクトなど)の既存の Web URL は、新しい URL にリダイレクトされます。
  • GitLab 10.3 からは、名前空間配下のプロジェクトの既存の Git リモート URL は新しいリモート URL にリダイレクトされるようになりました。 リポジトリの場所が変更されたリポジトリに push/pull するたびに、アクションを拒否する代わりにリモートを更新するよう警告メッセージが表示されます。 つまり、自動化スクリプトや Git クライアントは名前の変更後も引き続き動作し、移行がとてもスムーズになります。
  • リダイレクトは、元のパスが他のグループ、ユーザー、プロジェクトによって主張されていない限り利用可能です。

プロジェクトをGoパッケージとして使用します。

GitLab はgo-importgo-source メタタグを含むgo getgodoc.org のディスカバリリクエストに正しく応答します。

サブグループ内のプロジェクトを含む非公開プロジェクトはGoパッケージとして使用できますが、正しく動作させるには設定が必要な場合があります。 GitLabはgo get 認証や認可に関係なく、サブグループ内にないプロジェクトのディスカバリリクエストに go get正しく応答しますgo get 。 サブグループ内の go get非公開プロジェクトをgo get Goパッケージとして使用するには認証が必要です。 そうでない場合、 go getGitLabはgo get サブグループ内の非公開プロジェクトのパスを最初の2つのセグメントで切り捨て、 go get失敗のgo get 原因と go getなります。

GitLabは独自のGoプロキシを実装しています。 この機能は管理者が有効にする必要があり、追加の設定が必要です。 GitLab Go Proxyを参照してください。

非公開プロジェクトの囲碁モジュール機能を無効にします。

Go 1.12 以降では、モジュールをフェッチする過程で、モジュールのプロキシとチェックサムデータベースにクエリします。これは、GOPRIVATE (両方を無効にする)、GONOPROXY (プロキシクエリを無効にする)、GONOSUMDB(チェックサムクエリを無効にする) で選択的に無効にできます。

GOPRIVATE,GONOPROXY, およびGONOSUMDB は、Go モジュールと Go モジュールのプレフィックスをカンマで区切ったリストです。たとえば、GOPRIVATE=gitlab.example.com/my/private/project はそのプロジェクトに対するクエリを無効にしますが、GOPRIVATE=gitlab.example.com は GitLab.com 上のすべてのプロジェクトに対するクエリを無効にします。モジュール名またはそのプレフィックスがGOPRIVATE またはGONOPROXYに現れる場合、Go はモジュールプロキシにクエリを発行しません。モジュール名またはそのプレフィックスがGONOPRIVATE またはGONOSUMDBに現れる場合、Go はチェックサムデータベースにクエリを発行しません。

囲碁リクエストの認証

Go による非公開プロジェクトへのリクエストを認証するには、.netrcファイル とパスワードフィールドに個人アクセストークンを使用します。これは、GitLabインスタンスにHTTPS でアクセスできる場合にのみ機能します。 go コマンドは、安全でない接続では認証情報を送信しません。これは、Go による直接の HTTPS リクエストはすべて認証しますが、Git 経由のリクエストは認証しません。

使用例:

machine example.gitlab.com
login <gitlab_user_name>
password <personal_access_token>
注:Windows では、Go は~/.netrcではなく~/_netrc を読み取ります。

Git フェッチの認証

プロキシからモジュールを取得できない場合、Go は Git を使うようにフォールバックします (GitLab プロジェクトの場合)。 Git は.netrc を使ってリクエストを認証します。あるいは、リクエスト URL に特定の認証情報を埋め込んだり、HTTPS ではなく SSH を使うように設定することもできます (Go は常に Git リポジトリを取得するために HTTPS を使うため):

# embed credentials in any request to GitLab.com:
git config --global url."https://${user}:${personal_access_token}@gitlab.example.com".insteadOf "https://gitlab.example.com"

# use SSH instead of HTTPS:
git config --global url."git@gitlab.example.com".insteadOf "https://gitlab.example.com"

プロジェクトIDでプロジェクトページにアクセス

GitLab 11.8 で導入されました

GitLab UIからプロジェクトIDを使ってプロジェクトに素早くアクセスするには、ブラウザや他のツールで/projects/:id URLにアクセスしてください。

プロジェクトの別名

GitLab Premium12.1で導入されました

リポジトリをGitLabに移行し、他のシステムからアクセスされる場合、同じ名前を使ってアクセスできることは、特にそれらが大量にある場合に非常に便利です。 これにより、多数のシステムでかなりの数のGit URLを変更するリスクを減らすことができます。

GitLabでは、通常リポジトリには名前空間とプロジェクト名でアクセスします。 プロジェクトエイリアスでアクセスすることも可能です。 この機能はGit over SSHでのみ利用できます。

プロジェクトエイリアスはAPI経由でのみ作成することができ、GitLab管理者のみが作成することができます。 詳しくはプロジェクトエイリアスAPIドキュメントに従ってください。

プロジェクトにエイリアスを作成すると(例:プロジェクトhttps://gitlab.com/gitlab-org/gitlabにエイリアスgitlab )、そのエイリアスを使用してリポジトリをクローンできます(例:git clone git@gitlab.com:gitlab-org/gitlab.gitの代わりにgit clone git@gitlab.com:gitlab.git )。

プロジェクトAPI

プロジェクトで使用するAPIは数多くあります: