リポジトリを作成して更新する

このページでは、Secure Source Manager ウェブ インターフェースまたは Secure Source Manager API を使用してリポジトリを作成および更新する方法について説明します。

Secure Source Manager インスタンスがまだ作成されていない場合は、 Secure Source Manager インスタンスを作成するをご覧ください。

始める前に

  1. Secure Source Manager インスタンスを作成するか、アクセス権をリクエストします。詳細については、Secure Source Manager インスタンスを作成するをご覧ください。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  5. beta Google Cloud CLI コンポーネントをインストールします。
    gcloud components install alpha

必要なロール

リポジトリの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

Secure Source Manager ロールの付与については、 IAM によるアクセス制御ユーザーにインスタンスへのアクセス権を付与するをご覧ください。

リポジトリを作成する

ウェブ インターフェース

  1. ウェブ インターフェースから Secure Source Manager インスタンスにアクセスするには、次の URL をブラウザのアドレスバーにコピーします。

    INSTANCE_ID-PROJECT_NUMBER.LOCATION.sourcemanager.dev

    次のように置き換えます。

    • INSTANCE_ID はインスタンス名に置き換えます。
    • PROJECT_NUMBER はインスタンスの Google Cloud プロジェクト番号に置き換えます。プロジェクトの識別については、 プロジェクトの識別をご覧ください。
    • LOCATION はインスタンスのリージョンに置き換えます。

  2. 必要に応じて、Secure Source Manager の認証情報を使用して認証します。

  3. ナビゲーション メニューの [+ 新しいリポジトリを作成] アイコンをクリックします。

  4. リポジトリの詳細を入力します。

    1. リポジトリ ID: リポジトリの名前を入力します。

    2. 説明 : 省略可。リポジトリの説明を入力します。

    3. デフォルト ブランチ: デフォルト ブランチの名前。

  5. サービス アカウント: 省略可。リポジトリに関連付けるサービス アカウントを入力します。このユーザー管理のサービス アカウントは、 Cloud Build などの統合に使用されます。詳細については、 Cloud Build に接続するをご覧ください。

  6. リポジトリを初期化: 省略可。リポジトリを初期化して .gitignore、ライセンス、README ファイルを追加する場合は、このオプションを選択します。

  7. .gitignore: 省略可。プルダウン メニュー テンプレートを使用して追跡しない ファイルを選択します。

  8. ライセンス: 省略可。プルダウン メニューから一般的なライセンスを選択します。

  9. [リポジトリを作成] をクリックします。

gcloud

  1. 次のコマンドを実行して、gcloud CLI を使用してリポジトリを作成します。

    gcloud source-manager repos create REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --instance=INSTANCE_ID \
        --description=DESCRIPTION \
        --default-branch=BRANCH \
        --gitignores=GITIGNORES \
        --license=LICENSE \
        --readme=README \
        --service-account=SERVICE_ACCOUNT
    

    次のように置き換えます。

    • REPOSITORY_ID はリポジトリの名前に置き換えます。

    • LOCATION は、リポジトリを作成するリージョンに置き換えます。サポートされているロケーションの詳細については、 ロケーションをご覧ください。

    • PROJECT_ID は、リポジトリを作成する Secure Source Manager インスタンスのプロジェクト ID に置き換えます。

    • INSTANCE_ID は、リポジトリを作成するインスタンスのインスタンス ID に置き換えます。プロジェクト内の Secure Source Manager インスタンスを一覧表示するには、 インスタンスを一覧表示して表示するをご覧ください。

    • DESCRIPTION は、リポジトリの説明に置き換えます。省略可能です。

    • BRANCH は、デフォルトのブランチ名に置き換えます。省略可能です。設定されていない場合のデフォルトのブランチ名は main です。

    • GITIGNORES は、gitignore テンプレート名のカンマ区切りのリストに置き換えます。省略可能です。 使用可能なテンプレートの完全なリストを表示するには、 リポジトリの初期化構成リファレンスをご覧ください。

    • LICENSE は、リポジトリに適用するライセンス テンプレート名に置き換えます。省略可能です。 使用可能なライセンス テンプレートの完全なリストを表示するには、 リポジトリの初期化構成リファレンスをご覧ください。

    • READMEdefault に置き換えて、デフォルト テンプレートから README ファイルを作成します。省略可能です。省略すると、README ファイルは作成されません。

    • SERVICE_ACCOUNT は、リポジトリに関連付けるサービス アカウントのメールアドレスに置き換えます。省略可能です。

API

  1. 次のコマンドを実行して、REST 呼び出しを使用してリポジトリを作成します。

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories?repository_id=REPOSITORY_ID \
        -d '{
          "instance": "projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID",
          "serviceAccount": "SERVICE_ACCOUNT"
        }'
    

    次のように置き換えます。

    • REGION は、Secure Source Manager インスタンスのリージョンに置き換えます。 サポートされているロケーションの詳細については、 ロケーションをご覧ください。
    • INSTANCE_ID は、Secure Source Manager インスタンス ID に置き換えます。
    • PROJECT_ID は、Secure Source Manager インスタンスのプロジェクト ID に置き換えます。プロジェクト ID を確認する方法については、プロジェクトの識別をご覧ください。
    • REPOSITORY_ID はリポジトリの名前に置き換えます。
    • SERVICE_ACCOUNT は、リポジトリに関連付けるサービス アカウントのメールアドレスに置き換えます。

    HTTP POST データフラグ -d'{}' を使用して、リポジトリの初期化、特定の .gitignore ファイルやライセンスの追加など、追加の値を指定できます。詳細については、 リファレンス ドキュメントをご覧ください。

    出力を人間が読める形式にする場合は、json_pp を使用して JSON にパイプできます。

    次に例を示します。

    curl \
        -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/my-project-id/locations/us-central1/repositories?repository_id=my-repo \
        -d '{
          "instance": "projects/my-project-id/locations/us-central1/instances/prod-test-instance",
          "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
          "initialConfig": {
            "defaultBranch": "main"
          }
        }' | json_pp
    

    レスポンスは次のようになります。

    {
      "name": "operations/266bf4c7-13fe-11ed-be24-da823b7355d0",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.OperationMetadata",
        "createTime": "2022-08-04T14:02:59.810496928Z",
        "endTime": "2022-08-04T14:03:00.558354528Z",
        "target": "projects/654987321654/locations/us-central1/repositories/my-repo",
        "verb": "create",
        "apiVersion": "v1"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.securesourcemanager.v1.Repository",
        "name": "projects/my-project-id/locations/us-central1/repositories/my-repo",
        "instance": "projects/654987321654/locations/us-central1/instances/prod-test-instance",
        "serviceAccount": "my-service-account@my-project-id.iam.gserviceaccount.com",
        "createTime": "2022-08-04T14:03:00Z",
        "uris": {
          "html": "https://prod-test-instance-654987321654.us-central1.sourcemanager.dev/my-project-id/my-repo",
          "gitHttps": "https://prod-test-instance-654987321654-git.us-central1.sourcemanager.dev/my-project-id/my-repo.git"
        }
    }
    

    ここで

    • 654987321654 はリポジトリ プロジェクト番号です。
    • my-project-id はリポジトリ プロジェクト ID です。
    • my-repo は、作成コマンドで設定した REPOSITORY_ID です。 uris フィールドには、ウェブブラウザまたは Git プロトコル HTTPS アクセスでリポジトリにアクセスするための URL が含まれています。
  2. レスポンスの HTML URI を使用して、新しいリポジトリにアクセスします。Secure Source Manager ウェブ インターフェースでは、コードレビュー、問題追跡、pull リクエストがサポートされています。

リポジトリは Secure Source Manager インスタンスに作成されます。

新しいリポジトリを作成すると、リポジトリ管理者ロール(roles/securesourcemanager.repoAdmin)が付与されます。新しい IAM 権限が反映されるまでに最大 2 分かかることがあります。作成後にリポジトリにアクセスしようとしたときに権限エラーが発生した場合は、数分待ってからもう一度お試しください。

作成したリポジトリは、Secure Source Manager ウェブ インターフェースの [マイ リポジトリ] ページに一覧表示されます。

リポジトリを更新する

ウェブ インターフェース

  1. Secure Source Manager ウェブ インターフェースのリポジトリ ページに移動します。
  2. ナビゲーション メニューの [リポジトリの設定] をクリックします。
  3. [基本設定] セクションの [サービス アカウント] フィールドに、サービス アカウントのメールアドレスを入力します。
  4. [変更を保存] をクリックします。

gcloud

  1. リポジトリ サービス アカウントを更新するには、次のコマンドを実行します。

    gcloud source-manager repos update REPOSITORY_ID \
        --region=LOCATION \
        --project=PROJECT_ID \
        --service-account=SERVICE_ACCOUNT
    

    次のように置き換えます。

    • REPOSITORY_ID は、更新するリポジトリの名前に置き換えます。
    • LOCATION は、リポジトリが配置されているリージョンに置き換えます。
    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • SERVICE_ACCOUNT は、リポジトリに関連付けるサービス アカウントのメールアドレスに置き換えます。

API

  1. REST 呼び出しを使用してリポジトリ サービス アカウントを更新するには、次のコマンドを実行します。

    curl --request PATCH \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_ID?updateMask=serviceAccount \
        -d '{"serviceAccount": "SERVICE_ACCOUNT"}'
    

    次のように置き換えます。

    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • REGION は、リージョンに置き換えます。
    • REPOSITORY_ID は、リポジトリ ID に置き換えます。
    • SERVICE_ACCOUNT は、サービス アカウントのメールアドレスに置き換えます。

次のステップ