Web3团队的多链持续部署指南

  • tenderly
  • 发布于 2025-01-22 19:41
  • 阅读 15

本文介绍了如何为Web3项目设置CI/CD,并使用几行yaml代码配置多链暂存基础设施。通过使用Tenderly Virtual TestNets,团队可以更高效地进行智能合约的部署和测试,从而提高开发效率和团队协作能力。

Web3 团队的持续部署指南

CI/CD 流水线对于在以太坊生态系统中构建新型产品时,提高和保持团队效率至关重要。了解如何为你的 Web3 项目设置 CI/CD,以及如何用几行 yaml 代码配置多链暂存基础设施。

使用带有虚拟 TestNet 的 GitHub Actions 为智能合约设置的区块链 CI/CD

高效的开发来自于团队以可靠的方式逐步构建解决方案的能力。每天,你需要整合团队成员的工作才能继续构建,这会占用大量时间,尤其是在构建多链产品时。

好消息是,你可以设置一个 CD 流水线来为你的整个团队完成这项工作,从而节省大量时间。将 CD 工作流视为你的团队用来轻松交换工作增量的铁路,因为它们会被提交到存储库中。

例如,CD 流水线可以在共享的开发基础设施上部署和暂存智能合约,以供团队的其他成员进行集成。为了简化整个 CD 设置,可以使用一个简单的 GitHub Action 来为你在其上构建的任意数量的 EVM 链配置 Tenderly 虚拟 TestNet,并通过 Hardhat 和 Foundry 集成部署合约。

让我们看看是什么造就了有效的 CD 流水线,以及设置有多么容易。

为什么要在共享开发基础设施上暂存合约

在 dapp 开发过程中,最活跃的智能合约用户是其他构建者。由于智能合约是大多数功能的起源,因此 UI 构建者、后端开发人员和数据索引团队是所有可能代码更改的接收者。

除了追赶智能合约的更新之外,其他团队还需要在本地实施更改并在其本地机器上运行部署脚本。如果一切按预期工作,他们就可以做自己的工作了——终于。

因此,在常规设置中,Web3 团队需要处理大量的依赖关系,这些依赖关系会导致开发过程中的效率低下:

幸运的是,正确设置的 CD 工作流程可以通过在协作开发基础设施(例如 Virtual TestNets)上部署智能合约来消除这些效率低下。通过在共享的 Virtual TestNet 上部署智能合约,所有团队成员都可以集成它们并继续进行测试过程,从而实现快速的、增量的进度。此外,团队可以使用 Virtual TestNets 来 fork 多个网络并设置多链开发基础设施。

让我们检查一下,是什么构成了一个有用的 CD 流水线,它可以提高你团队的开发速度。

高效 CD 工作流程的 5 个要求

一个构建良好的持续部署设置消除了“我必须在做我的工作之前做的工作”。以下是高效 CD 工作流程的最重要要求:

  1. 轻松的基础设施配置:Virtual TestNets GitHub Action 允许你使用几行 yaml 代码设置和管理你的暂存基础设施,即使是多链部署也是如此。为了获得更多控制权,你可以使用 Virtual TestNets REST API 来创建、删除或与你的 Virtual TestNets 交互。
  2. 与现有协议集成:在构建与真实世界的第三方协议集成的合约时,Web3 团队通常需要在网络的 mainnet 上部署和测试它们,如果他们正在构建多链产品,甚至需要多次执行此操作。与其在生产环境中进行测试(你需要在其中处理网络拥塞和较长的执行时间),不如使用与生产链同步的 Virtual TestNets。通过完全访问最新的 mainnet 数据,你可以在构建时测试与真实合约的集成。
  3. 不同 dapp 层的数据分离:保持测试数据的干净至关重要。否则,UI、后端和数据团队需要花费大量时间才能获得对他们有用的信息。为了避免这种情况,每个团队都可以 fork 带有暂存合约的 Virtual TestNet 并创建一个单独的 playground 来避免数据污染,同时保持对最新暂存合约的访问。
  4. 轻松的资产创建:你的 CD 流程应该有权访问足够数量的测试 token,而无需你花费任何时间来提供它们。更重要的是,一个高效的 CD 流水线应该为你的智能合约和 EOA 设置初始资产,以供进一步测试。Virtual TestNets 上的无限 faucet 允许你和你的 CD 工作流程获得任意数量的资产——包括原生和 ERC-20 余额。
  5. 快速的部署时间和轻松的验证:Virtual TestNets 认为每笔交易都已被立即确认。因此,在多个网络副本上完整部署单个智能合约的时间不会超过几秒钟甚至更短的时间。此外,你可以通过几乎零配置 立即且私密地验证你的合约

基础设施即代码:如何在 Virtual TestNets 上设置 CD 流水线

Tenderly Virtual TestNet 是一种托管的、协作的 Web3 开发基础设施。Virtual TestNet 可以完全适应开发工作流程,可以满足有效 CD 流水线的所有先决条件,同时改善你的团队协作。

为了方便你在 Virtual TestNets 上进行 CD 设置,你可以使用 开源 GitHub Action 模板 在每次构建时配置一个新的 Virtual TestNet。此外,只需一次调用,你就可以为你正在构建的任意数量的链配置 Virtual TestNet。然后,你可以使用多链 Virtual TestNet 来部署合约,以便团队的其他成员在这些合约之上进行构建。

只需几个简单的步骤,你就可以设置一个新的 GitHub 工作流程,该流程:

  • Setup Virtual TestNet 步骤中,在几秒钟内为以太坊 Mainnet 和 Base 配置一个新的 Virtual TestNet
  • 测试智能合约以确保预期的行为
  • 在步骤 Fund Deployer Account on Mainnet and Base 中为部署者帐户提供资金
  • 将智能合约部署到两个网络
  • 提交部署信息,以供你的团队的其他成员使用 push_on_complete 标志

这是一个工作流程文件的示例:

name: Foundry multi-chain CD pipeline

on: [push, pull_request]

jobs:
  deploy:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./examples/foundry
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive

      - name: Setup Virtual TestNet
        uses: tenderly/vnet-github-action@v1.0.15
        with:
          mode: CD
          access_key: ${{ secrets.TENDERLY_ACCESS_KEY }}
          project_name: ${{ vars.TENDERLY_PROJECT_NAME }}
          account_name: ${{ vars.TENDERLY_ACCOUNT_NAME }}
          testnet_name: "Staging"
          network_id: |
            1
            8453
          chain_id_prefix: 7357
          public_explorer: true
          verification_visibility: 'src'
          push_on_complete: true

      - name: Install Foundry
        uses: foundry-rs/foundry-toolchain@v1

      - name: Deploy Contracts Mainnet
        run: |
          forge build --sizes
          forge script script/Counter.s.sol \
            --private-key ${{ secrets.DEPLOYER_PRIVATE_KEY }} \
            --rpc-url ${{ env.TENDERLY_PUBLIC_RPC_URL_1 }} \
            --verifier-url ${{ env.TENDERLY_FOUNDRY_VERIFICATION_URL_1 }} \
            --etherscan-api-key $TENDERLY_ACCESS_KEY \
            --slow --verify --json > $BUILD_OUTPUT_FILE_1

      - name: Deploy Contracts Base
        working-directory: ./examples/foundry
        run: |
          forge script script/Counter.s.sol \
            --private-key ${{ secrets.DEPLOYER_PRIVATE_KEY }} \
            --rpc-url ${{ env.TENDERLY_PUBLIC_RPC_URL_8453 }} \
            --verifier-url ${{ env.TENDERLY_FOUNDRY_VERIFICATION_URL_8453 }} \
            --etherscan-api-key $TENDERLY_ACCESS_KEY \
            --slow --verify --json > $BUILD_OUTPUT_FILE_8453

ℹ️

有关更多详细信息,请按照分步指南使用 Hardhat 设置 CD将其与 Foundry 集成

在 Virtual TestNets 上设置多链 CD 以消除依赖关系

设置持续部署可以提高你的团队在团队成员之间分配工作增量的效率。在 持续集成步骤 中测试你的合约和其他组件后,CD 流程可以将它们暂存以供团队的其他成员使用。

这样,你的团队可以保持测试数据的干净,同时访问最新的 mainnet 状态。此外,使用几行 yaml 代码为多个网络配置开发基础设施消除了不必要的基础设施管理开销。

使用 Virtual TestNets 设置自动化的、可重复的流程 以与你的团队更有效地构建。

  • 原文链接: blog.tenderly.co/how-to-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
tenderly
tenderly
江湖只有他的大名,没有他的介绍。