プロジェクトの管理

GitLabのほとんどの作業はプロジェクトの中で行われます。ファイルやコードはプロジェクトに保存され、ほとんどの機能はプロジェクトの範囲内にあります。

インスタンスのすべてのプロジェクトを見る

GitLab インスタンスのすべてのプロジェクトを表示します:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Exploreを選択します。

左側のサイドバーで、[Projects] を選択します。右側のリストには、インスタンスのすべてのプロジェクトが表示されます。

認証されていない場合、リストには公開プロジェクトのみが表示されます。

自分がメンバーのプロジェクトを見る

あなたがメンバーであるプロジェクトを見るには:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. 作品を選択します。

左サイドバーの「プロジェクト」を選択します。リストの「Yours」タブに、あなたが所属しているプロジェクトがすべて表示されます。

個人プロジェクトを見る

個人プロジェクトとは、個人のネームスペースで作成されたプロジェクトです。

たとえば、alex というユーザー名でアカウントを作成し、そのユーザー名でmy-project というプロジェクトを作成した場合、そのプロジェクトはhttps://gitlab.example.com/alex/my-projectに作成されます。

個人プロジェクトを表示するには

  1. 左のサイドバーで、あなたのアバターを選択し、次にユーザー名を選択します。
  2. 左サイドバーで、個人プロジェクトを選択します。

スター付きプロジェクトを表示

スターを付けたプロジェクトを表示します:

  1. 左のサイドバーで、あなたのアバターを選択し、次にユーザー名を選択します。
  2. 左のサイドバーで、星付きプロジェクトを選択します。

トピックによるプロジェクトの整理

トピックとは、プロジェクトに割り当てるラベルのことです。トピックは通常、プロジェクトの内容や目的を説明する短い名前です。トピックは、複数のプロジェクトに割り当てることができます。

例えば、pythonhackathon というトピックを作成し、Python を使用し、Hackthon に貢献するためのすべてのプロジェクトに割り当てることができます。

プロジェクトに割り当てられたトピックは、プロジェクト概要のプロジェクト名とアクティビティ情報の下に表示されます。

プロジェクトにアクセスできるユーザーだけがそのプロジェクトに割り当てられたトピックを見ることができますが、GitLabインスタンスで利用可能なトピックは誰でも(認証されていないユーザーを含む)見ることができます。トピックの名前に機密情報を含めないでください。

トピックを見る

プロジェクトのトピックを検索します:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Exploreを選択します。
  3. 左側のサイドバーで、トピックを選択します。
  4. トピックに関連するプロジェクトを表示するには、トピックを選択します。

トピックの検索ページには、このトピックに関連するプロジェクトのリストが表示されます。

トピックのフィルタと並べ替え

特定のトピックを持つプロジェクトのリストは、次の方法でフィルタリングできます:

  • 名前
  • 対応言語
  • オーナー
  • アーカイブの状態
  • 可視性

プロジェクトを並べ替えることができます:

  • 作成日
  • 更新日
  • 名前
  • 星の数

トピックを購読

トピックに新しいプロジェクトが追加されたことを知りたい場合は、RSSフィードをご利用ください。

これはExplore topicsページ、またはトピックのあるプロジェクトから行うことができます。

トピックを購読するには

  • トピックの検索] ページから:

    1. 左サイドバーで、一番上のシェブロン({chevron-down})を展開します。
    2. Exploreを選択します。
    3. トピックを選択します。
    4. 購読したいトピックを選択します。
    5. 右上の「新プロジェクトのフィードを購読する({rss})」を選択します。
  • プロジェクトから

    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. プロジェクト概要ページで、「Pages」リストから購読したいトピックを選択します。
    3. 右上の「新プロジェクトのフィードを購読する({rss})」を選択します。

結果はAtom形式のRSSフィードとして表示されます。結果の URL には、フィードトークンと、そのトピックを持つプロジェクトのリストが含まれます。このURLをフィードリーダーに追加することができます。

プロジェクトへのトピックの割り当て

プロジェクト設定ページで、プロジェクトにトピックを割り当てることができます。

トピックの管理

インスタンス管理者は、管理エリアの [トピック] ページからすべてのプロジェクト トピックを管理できます。

プロジェクトのスター

よく使うプロジェクトに星を付けて、見つけやすくすることができます。

プロジェクトに星を付けるには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. ページの右上で、Starを選択します。

プロジェクトの削除

プロジェクトを削除します:

プロジェクトを削除するには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [全般]を選択します。
  3. 詳細」セクションを展開します。
  4. プロジェクトの削除セクションまでスクロールダウンします。
  5. プロジェクトの削除を選択します。
  6. このアクションを確認します。

削除待ちのプロジェクトを表示

削除を保留しているプロジェクトの一覧を表示するには:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. View all my projects を選択します。
  3. GitLabのバージョンに基づきます:
    • GitLab 14.6以降:Pending deletionタブを選択してください。
    • GitLab 14.5以前:削除済みプロジェクトタブを選択してください。

リスト内の各プロジェクトが表示されます:

  • プロジェクトが削除マークされた時間。
  • プロジェクトが最終的に削除される予定時刻。
  • プロジェクトが最終的に削除されないようにするためのリストアリンク

プロジェクトのアクティビティを見る

プロジェクトのアクティビティを表示します:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 管理 > アクティビティを選択します。
  3. オプション貢献者の種類によってアクティビティをフィルタリングするには、タブを選択します:

    • すべて:プロジェクトメンバーによるすべての貢献。
    • プッシュイベント:プロジェクト内のプッシュイベント。
    • マージイベント:プロジェクト内で受け入れられたマージリクエスト。
    • イシューイベント:プロジェクトでオープン、クローズされたイシュー。
    • コメントプロジェクトメンバーによって投稿されたコメント。
    • デザイン:プロジェクトで追加、更新、削除されたデザイン。
    • チーム:プロジェクトに参加したメンバー、脱退したメンバー。

プロジェクト内検索

プロジェクト内を検索するには、左のサイドバーで「検索」または「移動」を選択します。GitLabは入力に合わせてフィルターをかけます。

スターをつけたプロジェクト(Starred projects)を探すこともできます。

GitLab.comで公開されているすべてのプロジェクトや内部プロジェクトを調べることができます。そこから、可視性、トレンド、最も星が多く評価されたプロジェクト、すべてのプロジェクトをフィルターすることができます。

プロジェクトを並べ替えることができます:

  • 名前
  • 作成日
  • 更新日
  • オーナー

アーカイブされたプロジェクトを非表示にしたり、表示したりすることもできます。

言語によるプロジェクトのフィルタリング

使用しているプログラミング言語でプロジェクトを絞り込むことができます。これを行うには

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. のいずれかを選択します:
    • すべてのプロジェクトを表示するには、プロジェクトをフィルタリングします。
    • 探検: アクセス可能なすべてのプロジェクトをフィルタリングします。
  3. 言語]ドロップダウンリストから、プロジェクトをフィルタリングする言語を選択します。

選択した言語を使用しているプロジェクトのリストが表示されます。

プロジェクト内の個々の機能の表示/非表示の変更

プロジェクト内の個々のフィーチャーの可視性を変更することができます。

前提条件

  • プロジェクトのオーナーロールを持っている必要があります。
  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [全般]を選択します。
  3. 可視性]、[プロジェクト機能]、[権限]を展開します。
  4. オン/オフ、またはアクセスを変更したい各機能のトグルを使用します。
  5. 変更を保存を選択します。

プロジェクトIDを使用してプロジェクト概要ページにアクセスします。

GitLab 11.8 で導入されました

プロジェクト名の代わりにプロジェクトIDを使ってプロジェクトにアクセスするには、https://gitlab.example.com/projects/:id

プロジェクトIDは、プロジェクト概要ページのプロジェクト名の下に表示されます。

例えば、個人ネームスペースalex123456という ID のプロジェクトmy-project がある場合、このプロジェクトにはhttps://gitlab.example.com/alex/my-project またはhttps://gitlab.example.com/projects/123456のどちらかでアクセスできます。

プロジェクトの概要ページを閲覧できる人

プロジェクトを選択すると、プロジェクト概要ページにプロジェクトの内容が表示されます。

公開プロジェクト、およびプロジェクトのコードを閲覧する権限を持つ内部プロジェクトや非公開プロジェクトのメンバーの場合は、プロジェクトのランディングページが表示されます:

プロジェクトのコードを見る権限のないユーザーには、ランディングページに表示されます:

  • Wikiのホームページ。
  • プロジェクトのイシューのリスト。

プロジェクトを離れる

プロジェクトを離れるとき

  • プロジェクトのメンバーではなくなり、貢献することはできません。
  • あなたに割り当てられていたすべてのイシューとマージリクエストは割り当て解除されました。

プロジェクトを離れるには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. Leave projectを選択します。Leave project]オプションは、プロジェクトがグループ・ネームスペースの下にあるグループの一部である場合にのみ、プロジェクト・ダッシュボードに表示されます。

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

前提条件:

  • GitLab Go Proxyを有効にするには、管理者にお問い合わせください。
  • サブグループの非公開プロジェクトを Go パッケージとして使用するには、Go リクエストを認証する必要があります。認証されていない Go リクエストはgo get で失敗します。サブグループにないプロジェクトの Go リクエストを認証する必要はありません。

プロジェクトをGoパッケージとして使用するには、go getgodoc.org ディスカバリリクエストを使用します。メタタグを使用できます:

非公開プロジェクトへの Go リクエストの認証

前提条件:

Go リクエストを認証するには、以下の情報を含む.netrc ファイルを作成します:

machine gitlab.example.com
login <gitlab_user_name>
password <personal_access_token>

Windowsでは、Goは~/.netrc の代わりに~/_netrc を読み取ります。

go コマンドは、安全でない接続では認証情報を送信しません。Go による HTTPS リクエストは認証されますが、Git によるリクエストは認証されません。

Git リクエストの認証

Go がプロキシからモジュールを取得できない場合は Git を使います。Git はリクエストの認証に.netrc ファイルを使いますが、他の認証方法を設定することもできます。

Gitを設定します:

  • リクエストURLにクレデンシャルを埋め込む

     git config --global url."https://${user}:${personal_access_token}@gitlab.example.com".insteadOf "https://gitlab.example.com"
    
  • HTTPSの代わりにSSHを使用します:

     git config --global url."git@gitlab.example.com:".insteadOf "https://gitlab.example.com/"
    

非公開プロジェクトのGoモジュール取得を無効化

モジュールやパッケージを取得するために、Go は環境変数を使用します:

  • GOPRIVATE
  • GONOPROXY
  • GONOSUMDB

フェッチを無効にするには

  1. GOPRIVATE を無効にします:
    • あるプロジェクトのクエリを無効にするには、GOPRIVATE=gitlab.example.com/my/private/project
    • GitLab.com上のすべてのプロジェクトのクエリを無効にするには、GOPRIVATE=gitlab.example.com
  2. GONOPROXY でプロキシクエリを無効にします。
  3. GONOSUMDB でチェックサムクエリを無効にします。
  • モジュール名またはそのプレフィックスがGOPRIVATE またはGONOPROXY にある場合、Go はモジュールプロキシにクエリを発行しません。
  • モジュール名またはその接頭辞がGONOPRIVATE またはGONOSUMDB にある場合、Go はクエリ データベースを照会しません。

Geo セカンダリサイトからの Go モジュールの取得

Geo を使用して、セカンダリ Geo サーバー上の Go モジュールを含む Git リポジトリにアクセスします。

Geo セカンダリサーバーへのアクセスには SSH または HTTP を使用できます。

Geo セカンダリーサーバーにアクセスするには SSH を使用します。

SSH を使って Geo セカンダリーサーバーにアクセスします:

  1. プライマリ用のトラフィックをセカンダリに送信するよう、クライアント上で Git を再設定します:

    git config --global url."git@gitlab-secondary.example.com".insteadOf "https://gitlab.example.com"
    git config --global url."git@gitlab-secondary.example.com".insteadOf "http://gitlab.example.com"
    
    • gitlab.example.com の場合は、プライマリ・サイトのドメイン名を使います。
    • gitlab-secondary.example.com の場合は、セカンダリ・サイト・ドメイン名を使用します。
  2. クライアントがGitLabリポジトリにSSHアクセスできるように設定されていることを確認します。プライマリでこれをテストし、GitLabが公開鍵をセカンダリに複製します。

go get リクエストはプライマリの Geo サーバーに HTTP トラフィックを生成します。モジュールのダウンロードが始まると、insteadOf の設定はセカンダリの Geo サーバーにトラフィックを送ります。

Geo セカンダリにアクセスするには HTTP を使用します。

セカンダリ サーバーにレプリケートされる永続的なアクセストークンを使用する必要があります。CI/CD ジョブ トークンを使用して HTTP で Go モジュールを取得することはできません。

Geo セカンダリサーバーに HTTP でアクセスするには:

  1. クライアントに GitinsteadOf リダイレクトを追加します:

    git config --global url."https://gitlab-secondary.example.com".insteadOf "https://gitlab.example.com"
    
    • gitlab.example.com の場合は、プライマリ・サイトのドメイン名を使います。
    • gitlab-secondary.example.com の場合は、セカンダリ・サイト・ドメイン名を使用します。
  2. 個人アクセストークンを生成し、クライアントの~/.netrc ファイルに認証情報を追加します:

    machine gitlab.example.com login USERNAME password TOKEN
    machine gitlab-secondary.example.com login USERNAME password TOKEN
    

go get リクエストはプライマリの Geo サーバーに HTTP トラフィックを生成します。モジュールのダウンロードが始まると、insteadOf の設定はセカンダリの Geo サーバーにトラフィックを送ります。

トラブルシューティング

プロジェクトで作業していると、次のようなイシューに遭遇したり、特定のタスクを完了するために別の方法が必要になったりすることがあります。

SQL クエリを使用したプロジェクトの検索

Railsコンソールセッションで、SQLクエリに基づいてプロジェクトの配列を見つけて保存することができます:

# Finds projects that end with '%ject'
projects = Project.find_by_sql("SELECT * FROM projects WHERE name LIKE '%ject'")
=> [#<Project id:12 root/my-first-project>>, #<Project id:13 root/my-second-project>>]

プロジェクトやリポジトリのキャッシュをクリア

プロジェクトやリポジトリが更新されたのにその状態がUIに反映されない場合、プロジェクトやリポジトリのキャッシュをクリアする必要があるかもしれません。Railsコンソールセッションと以下のいずれかの方法で行います:

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
## Clear project cache
ProjectCacheWorker.perform_async(project.id)

## Clear repository .exists? cache
project.repository.expire_exists_cache

削除が保留されているプロジェクトの検索

削除マークがついているがまだ削除されていないプロジェクトをすべて見つける必要がある場合は、Railsコンソールセッションを起動して以下を実行してください:

projects = Project.where(pending_delete: true)
projects.each do |p|
  puts "Project ID: #{p.id}"
  puts "Project name: #{p.name}"
  puts "Repository path: #{p.repository.full_path}"
end

コンソールを使ったプロジェクトの削除

プロジェクトが削除できない場合は、Railsコンソールから削除を試みることができます。

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
project = Project.find_by_full_path('<project_path>')
user = User.find_by_username('<username>')
ProjectDestroyWorker.new.perform(project.id, user.id, {})

失敗した場合は、なぜうまくいかないのかを表示します:

project = Project.find_by_full_path('<project_path>')
project.delete_error

グループ内のすべてのプロジェクトの機能を切り替える

プロジェクト内の機能の切り替えはプロジェクトAPIから行うことができますが、多数のプロジェクトに対して行う必要があるかもしれません。

特定の機能を切り替えるには、Railsコンソールセッションを起動して次の関数を実行します:

caution
データを変更するコマンドは、正しく実行しなかったり適切な条件下で実行しなかったりすると、ダメージを与える可能性があります。必ず最初にテスト環境でコマンドを実行し、リストアできるようにバックアップインスタンスを用意してください。
projects = Group.find_by_name('_group_name').projects
projects.each do |p|
  ## replace <feature-name> with the appropriate feature name in all instances
  state = p.<feature-name>

  if state != 0
    puts "#{p.name} has <feature-name> already enabled. Skipping..."
  else
    puts "#{p.name} didn't have <feature-name> enabled. Enabling..."
    p.project_feature.update!(<feature-name>: ProjectFeature::PRIVATE)
  end
end

切り替え可能な機能を見つけるには、pp p.project_feature を実行してください。利用可能な権限レベルはconcerns/featurable.rbに記載されています。