本文介绍了如何为Web3项目设置CI/CD,并使用几行yaml代码配置多链暂存基础设施。通过使用Tenderly Virtual TestNets,团队可以更高效地进行智能合约的部署和测试,从而提高开发效率和团队协作能力。
CI/CD 流水线对于在以太坊生态系统中构建新型产品时,提高和保持团队效率至关重要。了解如何为你的 Web3 项目设置 CI/CD,以及如何用几行 yaml 代码配置多链暂存基础设施。
高效的开发来自于团队以可靠的方式逐步构建解决方案的能力。每天,你需要整合团队成员的工作才能继续构建,这会占用大量时间,尤其是在构建多链产品时。
好消息是,你可以设置一个 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 工作流程的最重要要求:
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 TestNetFund 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 集成。
设置持续部署可以提高你的团队在团队成员之间分配工作增量的效率。在 持续集成步骤 中测试你的合约和其他组件后,CD 流程可以将它们暂存以供团队的其他成员使用。
这样,你的团队可以保持测试数据的干净,同时访问最新的 mainnet 状态。此外,使用几行 yaml 代码为多个网络配置开发基础设施消除了不必要的基础设施管理开销。
使用 Virtual TestNets 设置自动化的、可重复的流程 以与你的团队更有效地构建。
- 原文链接: blog.tenderly.co/how-to-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!