IBM Cloud Docs
ツールチェーンの保存と復元

ツールチェーンの保存と復元

Terraform を使用して定義されていないツールチェーンなど、既存のツールチェーンがある場合は、既存のツールチェーンのバックアップを保存してから、代替リージョンにコピーをリストアすることができます。 Git Repos and Issue Trackingを使用する場合は、 Git リポジトリーを 1 次リージョンから代替リージョンにミラーリングする こともできます。

ツールチェーンを保存するには、テキスト形式でツールチェーン・テンプレートを作成するスクリプトをローカル・ワークステーションにダウンロードして実行します。 このテンプレートは、ソース・ツールチェーンのコピーをインスタンス化するために使用されます。 セキュリティー上の理由で、シークレットはこのツールチェーン・テンプレートに含まれません。

このテンプレートを使用してツールチェーンを作成した後、ツール統合を構成する必要があります。 次に、ソース・ツールチェーンからターゲット・ツールチェーンに値をコピーして、ソース・ツールチェーンからシークレットを復元します。 GitLab ミラーリングとは異なり、この手順では、ツールチェーンのワンタイム・コピーが作成されます。 ソース・ツールチェーンへのそれ以降の変更は、コピーされたバージョンのツールチェーンには反映されません。

ツールチェーン・テンプレートはコピーであるため、インスタンス化時に、ソースの Git リポジトリーを参照します。 この問題を修正するには、ターゲット・リポジトリーを使用してターゲット・ツールチェーンを再構成します。

ツールチェーンを保存および復元するには、以下の手順を実行します。

  1. ローカル・ワークステーション上に一時ディレクトリーを作成します。

  2. ディレクトリーを一時ディレクトリーに変更します。

  3. toolchain-to-templateスクリプトを使用して、一時ディレクトリにソース・ツールチェインのテキスト表現を生成する。

  4. ターゲット・リージョンに一時ブランク GitLab プロジェクトを作成します。

  5. 以下のコマンドを入力して、Git 操作用の一時ディレクトリーを初期化し、その内容を一時 GitLab プロジェクトにプッシュします。

    a. git init

    b. git add -- all

    c. git remote add origin ターゲット・リポジトリー URL

    d. git commit -m "template yaml files の追加"

    e. git push -u origin --all

  6. apiread_userread_apiread_repositorywrite_repository のスコープで、対象地域に パーソナル・アクセストークンを作成する

  7. URL を構成し、それをブラウザーに貼り付けて、ターゲット・リージョンでツールチェーンを作成します。

    a. 一時リポジトリー、パーソナル・アクセス・トークン、およびターゲット・リージョンを含むターゲット・ツールチェーン URL を作成します。

    https://cloud.ibm.com/devops/setup/deploy?repository=<temporary repository>&repository_token=<personal-access-token>&env_id=ibm:yp:<target region>
    

    例えば、https://cloud.ibm.com/devops/setup/deploy?repository=https://us-east.git.cloud.ibm.com/user/temp-repo&repository_token=aG7junk9dafiiT6w6&env_id=ibm:yp:us-east です。

    b. ソース・リポジトリーの URL を、Git リポジトリーをミラーリングするときに作成したターゲット・リポジトリーの URL で置換します。

    c. 「作成」 をクリックします。 シークレットを更新しなかったため、パイプラインは実行されますが、成功しません。

  8. 手順6で作成した 個人アクセストークンを失効させます。

  9. パイプラインに必要なセキュアなプロパティー値を追加して、パイプライン・シークレットを構成します

  10. ターゲット・パイプラインを実行して、それらが機能していることを確認します。

  11. リポジトリーをミラーリングしている場合は、コミット・トリガーを無効にして、変更がターゲット・リポジトリーからソース・リポジトリーにミラーリングされたときにターゲット・パイプラインが実行されないようにします。

    a. パイプラインの入力ステージ「このステージが手動で実行されたときにのみジョブを実行 (Run jobs only when this stage is run manually)」オプションを選択します。

    b. パイプラインを手動で開始できることを検証します。

既知の制限事項

ツールチェーンをバックアップすると、ツールチェーン自体のコピーが作成されますが、ツールチェーンによって参照されるすべてのデータがコピーされるわけではありません。 ツールチェーンを別のリージョンにバックアップする場合は、以下の制限を考慮してください。

  • パイプライン・ログおよび成果物は、コピーされたツールチェーンに含まれません。
  • Key Protect または HashiCorp Vault に保存されているツール構成シークレットは、コピーされたツールチェーンに含まれません。
  • DevOps Insights データは、コピーされたツールチェーンに含まれません。

ツールチェーンがこれらの制限を受ける場合は、ツールチェーンのそのような側面をスクリプトでバックアップ/リストアすることはできません。 元のツールチェーンが更新されるたびに、必ず、バックアップ・コピーも最新のものに更新する必要があります。

バックアップ・ツールチェーンの使用

バックアップまたは代替ツールチェーンは、特定の地域で問題が発生した場合に、短期的な継続性を提供することを目的としている。 ターゲット(代替)リポジトリに直接コミットしたり、ターゲットパイプラインでパイプラインコミットトリガーを有効にしたりしないでください。 ターゲット・レポに直接コミットし、その後ソース(プライマリ)レポの使用に戻ると、レポが同期されていないため、コンフリクトや不整合が発生するリスクがあります。 コミット・トリガーを有効にしてからソース・リポジトリーの使用に戻ると、コードが更新されたときに両方のパイプラインが実行されます。 これらのシナリオを回避するには、パイプラインを手動で実行し、できるだけ早くソース・ツールチェーンに戻ります。