使用虚拟测试网和 GitHub Actions 简化 CI 设置

  • tenderly
  • 发布于 2024-12-04 19:54
  • 阅读 21

本文介绍了如何使用 GitHub Actions 和 Virtual TestNets 简化 CI 设置,通过 Virtual TestNets 替代本地节点和公共测试网,利用 GitHub Action 自动配置与主网数据同步的 Virtual TestNet,从而自动化部署和运行 Hardhat 测试,加速开发和测试周期。

使用虚拟测试网和 GitHub Actions 简化 CI 设置

通过使用 GitHub Action 来配置与主网数据同步的新虚拟测试网,从而简化你的 CI 设置。然后,自动化部署并运行你的 Hardhat 测试,以加速你的开发和测试周期。

如何使用 GitHub Actions 通过 Hardhat 和虚拟测试网设置 CI 管道

虚拟测试网是单一的开发基础设施,可以替代本地节点和公共测试网。虚拟测试网旨在适应你的开发工作流程,可以集成到你的 CI 管道和现有框架中,从而开启新的测试功能,同时节省大量资源。

通过简单的 GitHub Action,你可以在与 Hardhat 集成的虚拟测试网上设置你的 CI 基础设施。这样,你可以自动化部署,测试端到端集成,并加快整个 CI 过程。

为什么在 CI 中使用虚拟测试网

将虚拟测试网集成到你的 CI 管道中,可以为你提供零设置的开发环境,以自动化智能合约部署和测试代码更改。你甚至可以通过在虚拟测试网上暂存你的智能合约、前端和后端组件来测试端到端 dapp 集成

在 CI 管道中使用虚拟测试网可以消除团队在本地节点和公共测试网管理上的开销。你可以通过 GitHub Action 简化整个 CI 设置,该 Action 会自动配置与主网数据同步的全新虚拟测试网环境。

这样,你可以为你的 Hardhat 测试设置一个快速、可复现的 CI 管道,从而实现:

  • 复杂的测试用例:虚拟测试网与最新的主网状态同步,实时提供最新的链上数据。通过完整的主网数据,你可以测试与预言机、LP 提供商、交易所和索引器的真实集成,从而在实际条件下验证复杂的 DeFi 交互。
  • 快速、自动化的部署:虚拟测试网支持近乎即时的部署和交易执行。你可以专注于你的 CI 工作流程文件,而无需编写大量的脚本,GitHub Action 会为每个 PR 配置一个新的虚拟测试网。然后,你可以为每次代码推送自动执行部署,并为每次更改提交或拉取请求运行单元测试、冒烟测试或集成测试。
  • 对环境状态的 SUDO 模式:使用 Tenderly 的自定义 RPC 方法,你可以完全控制你的环境来测试自定义场景。例如,你可以增加区块号或时间来测试治理提案,操纵存储来覆盖链上值,甚至可以在不同的测试运行之间恢复状态。
  • 获取无限的测试资产: 虚拟测试网配备了原生 token 和 ERC-20 token 的无限水龙头,你可以通过 Dashboard 或自定义 RPC 方法使用。除了补充任何钱包外,你还可以为特定帐户或合约设置自定义 token 余额。
  • 早期开发期间的隐私: 通过虚拟测试网,你可以在早期开发期间私下部署和验证你的合约。这样,你不必使用限制你的测试功能的本地节点或部署到在代码准备就绪之前公开你的代码的公共测试网。
  • 高效的调试和协作: 每当测试失败时,打开一个带有内置私有浏览器和调试工具的虚拟测试网,以排除错误。使用最详细的堆栈和错误跟踪检查失败的事务,跳转到代码的确切行上的恢复。甚至可以直接与你的团队分享一个恢复链接,以解决问题,然后提交代码更改以进行测试。

如何使用 GithHub Actions 在虚拟测试网上设置 CI 管道

在虚拟测试网上设置 CI 基础设施的最简单方法是使用 GitHub Action,该 Action 会自动为你的 CI 运行配置一个新的虚拟测试网。使用此 GitHub Action 将虚拟测试网与 Hardhat 集成,并为自动化测试设置高效的 CI 管道。

要设置你的 CI 管道,你需要完成几个简单的步骤:

  1. 创建一个 GitHub 工作流程文件
  2. 包含并配置 @tenderly/vnet-github-action
  3. 设置步骤来测试你的 Hardhat 项目
  4. 将 Hardhat 连接到虚拟测试网

要开始使用,请查看此示例 GitHub 工作流程设置:

name: Hardhat Pipeline
on: [push, pull_request]
env:
  DEBUG: '@tenderly/github-action'
  ## Needed available as env variables for Hardhat.config.js
  TENDERLY_PROJECT_NAME: ${{ vars.TENDERLY_PROJECT_NAME }}
  TENDERLY_ACCOUNT_NAME: ${{ vars.TENDERLY_ACCOUNT_NAME }}
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Setup Virtual TestNet
        uses: Tenderly/vnet-github-action@v1.0.6
        with:
          access_key: ${{ secrets.TENDERLY_ACCESS_KEY }}
          project_name: ${{ vars.TENDERLY_PROJECT_NAME }}
          account_name: ${{ vars.TENDERLY_ACCOUNT_NAME }}
          testnet_name: "Staging TestNet"
          network_id: 1
          chain_id: 1
          state_sync: true
          public_explorer: true
          verification_visibility: bytecode

      - name: Install dependencies
        run: npm install

      - name: Run Tests
        run: npm run test:vnet
        working-directory: examples/Hardhat-ignition

      - name: Deploy Contracts
        run: npm run deploy:vnet
        working-directory: examples/Hardhat-ignition

在“Setup Virtual TestNet”步骤完成后,RPC 链接将在环境变量 TENDERLY_ADMIN_RPC_URL 中,你需要从你的 hardhat.config.ts 中引用该变量。

一旦你运行了测试并且 action 完成,Tenderly/vnet-github-action 将暂停虚拟测试网,自动关闭 RPC。虽然你无法在此虚拟测试网上进一步运行测试,但你的所有交易数据都可用于检查和分析,使你能够识别任何潜在的错误。

如果你的任何 Hardhat 测试失败,你可以在对开发者友好的 Tenderly Dashboard 中找到失败的交易。虚拟测试网配备了内置的私有浏览器和调试工具,使你能够在测试失败后立即排除问题。

ℹ️

有关更详细的设置信息,请遵循此分步文档指南

在零设置的开发基础设施上自动化 CI 测试

用零设置的虚拟测试网替换消耗资源的 инфраструктура 管理。虚拟测试网与你现有的框架无缝集成,为你的开发和测试工作流程带来自动化的部署和近乎即时的执行。

通过使用用于虚拟测试网 CI 基础设施的 GitHub Actions,你可以快速设置基于主网的 CI 测试环境,并自动化整个过程,同时获得完整的链上数据。要开始使用,尝试在几毫秒内 fork 一条链

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

0 条评论

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