IBM Cloud Docs
保存和恢复工具链

保存和恢复工具链

如果您具有现有工具链 (例如,未使用 Terraform 定义的工具链),那么可以保存现有工具链的备份,然后将副本复原到备用区域中。 如果使用 Git Repos and Issue Tracking,那么还可以 将 Git 存储库 从主区域镜像到备用区域。

要保存工具链,请在本地工作站上下载并运行用于以文本形式创建工具链模板的脚本。 此模板用于实例化源工具链的副本。 出于安全原因,此工具链模板中不包含私钥。

使用此模板创建工具链后,必须配置工具集成。 然后,通过将源工具链中的私钥值复制到目标工具链,从源工具链复原私钥。 与 GitLab 镜像不同,此过程会创建工具链的一次性副本。 对源工具链的任何后续更改都不会反映在复制的工具链版本中。

由于工具链模板是副本,因此在实例化时,它会引用源 Git 存储库。 要解决此问题,请使用目标存储库重新配置目标工具链。

要保存和复原工具链,请完成以下步骤:

  1. 在本地工作站上创建临时目录。

  2. 将目录切换到临时目录。

  3. 使用 toolchain-to-template 脚本在临时目录中生成源工具链的文本表示。

  4. 在目标区域中创建临时空白 GitLab 项目。

  5. 输入以下命令以初始化 Git 操作的临时目录并将内容推送到临时 GitLab 项目:

    Git 初始化 a.

    b. git add--all

    c. git 远程添加源 目标存储库 URL

    d. git commit-m“添加模板 yaml 文件”

    e. git push-uorigin--all

  6. 在具有 apiread_userread_apiread_repositorywrite_repository 作用域的目标区域中 创建个人访问令牌

  7. 通过创建 URL 并将其粘贴到浏览器中,在目标区域创建工具链:

    a. 构建目标工具链 URL,其中包含临时 repo、个人访问令牌和目标区域:

    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. 用镜像 Git 仓库时创建的目标仓库 URL 替换源仓库 URL。

    c. 单击创建。 由于您未更新私钥,因此管道会运行但不会成功。

  8. 撤销您在步骤 6 中创建的个人访问令牌

  9. 通过添加管道所需的安全属性值来 配置管道私钥

  10. 运行目标管道 以确保它们正常工作。

  11. 如果要对存储库进行镜像,请禁用落实触发器,以便在将更改从目标存储库镜像到源存储库时,目标管道不会运行:

    a. 针对管道的 输入阶段 选择 仅当手动运行此阶段时运行作业 选项。

    b. 验证管道是否可以 手动启动

已知限制

备份工具链会创建工具链本身的副本,但不会复制工具链所引用的所有数据。 将工具链备份到其他区域时,请考虑以下限制:

  • 管道日志和工件不包含在复制的工具链中。
  • 存储在 Key Protect 或 HashiCorp 保险库文件中的工具配置私钥不会包含在复制的工具链中。
  • DevOps Insights 数据未包含在复制的工具链中。

如果工具链受到这些限制,那么无法使用脚本来备份和复原工具链的这些方面。 无论何时更新原始工具链,都必须使备份副本保持最新。

使用备份工具链

备份或备用工具链旨在提供短期连续性 (如果特定区域存在问题)。 请勿直接落实到目标 (备用) 存储库,或者在目标管道上启用管道落实触发器。 如果直接落实到目标存储库,然后返回到使用源 (主) 存储库,那么存在冲突和不一致的风险,因为存储库未同步。 如果启用落实触发器,然后返回到使用源存储库,那么两个管道都将在更新代码时运行。 要避免这些场景,请手动运行管道并尽快返回到源工具链。