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

このページでは、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 は、リポジトリに適用するライセンス テンプレート名に置き換えます。これは省略可能です。使用可能なライセンス テンプレートの一覧については、リポジトリ初期化構成リファレンスをご覧ください。

    • README と default を使用して、デフォルトのテンプレートから 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 を使用して、新しいリポジトリにアクセスします。コードレビュー、Issue Tracker、pull リクエストは、Secure Source Manager ウェブ インターフェースでサポートされています。

リポジトリは 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 は、サービス アカウントのメールアドレスに置き換えます。

次のステップ