尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Aptos Core 二进制发布快速上手:从一键安装到多平台 Release 流水线实战

Aptos Core 二进制发布快速上手:从一键安装到多平台 Release 流水线实战 Aptos Core 二进制发布快速上手从一键安装到多平台 Release 流水线实战【免费下载链接】aptos-coreAptos is a layer 1 blockchain built to support the widespread use of blockchain through better technology and user experience.项目地址: https://gitcode.com/GitHub_Trending/ap/aptos-core导读Aptos 是一个致力于以更好的技术与用户体验支撑区块链广泛落地的 Layer 1 公链其核心代码库aptos-core中包含大量可执行程序从aptos-node节点服务、aptos-debugger调试工具到 CLI 与各类索引器。本文以仓库中的 scripts/binary_release/QUICKSTART.md 为骨架完整讲解用户如何一键安装已发布二进制与维护者如何通过 GitHub Actions 产出多平台 Release两条主线并结合 README.md、CARGO_BINSTALL.md、binary-release.yaml 及四个 Shell/PowerShell 脚本深入到构建、校验、安装的源码级实现。读完本文你将能够用一行命令安装任意已发布的 Aptos 二进制从workflow_dispatch界面或命令行驱动一次完整的多平台发布理解tool与performance两种构建配置的本质差异并学会用 SHA256 校验与 dry-run 保障发布安全。一、二进制发布工作流全景scripts/binary_release目录是 aptos-core 的通用二进制发布工具箱它不针对某个特定 crate而是可以打包发布代码库中的任意可执行目标executable target。目录中的核心文件如下文件作用QUICKSTART.md快速上手安装与发布的极简指南README.md完整文档平台矩阵、参数、排障CARGO_BINSTALL.mdcargo-binstall 集成配置指南build_binary_release.shUnix/Linux/macOS 构建打包脚本build_binary_release.ps1Windows 构建打包脚本install_binary.shUnix/Linux/macOS 下载安装脚本install_binary.ps1Windows 下载安装脚本配合仓库根目录的 .github/workflows/binary-release.yaml这套体系具备五个关键能力多平台构建Linux、macOS、Windows同时覆盖 x86 与 ARM 架构SHA256 校验和每个产物附带独立.sha256文件并提供合并的SHA256SUMScargo-binstall 支持已发布到 crates.io 的 crate 可直接下载预编译二进制下载脚本一行命令完成安装、校验、解压与 PATH 配置标准 Rust target triple 命名产物名、Release tag 全程遵循统一约定。二、用户视角三种方式安装已发布二进制2.1 一行命令安装Unix/Linux/macOScurl -fsSL https://raw.githubusercontent.com/aptos-labs/aptos-core/main/scripts/binary_release/install_binary.sh | sh -s -- binary-name例如安装节点程序sh -s -- aptos-node。该命令将脚本经管道交给sh执行--之后的参数会传递给脚本本身。结合 install_binary.sh 源码这个一行命令背后实际完成了一整套自动化流程解析参数脚本接受--version version默认latest、--bin-dir path默认~/.local/bin、-f/--force强制重装、-y/--yes跳过确认提示、-h/--help探测平台通过uname -s与uname -m将本机映射为标准 Rust target triple如 Linux x86_64 →x86_64-unknown-linux-gnu解析最新版本当版本为latest时脚本调用 GitHub Releases API每页 100 条、最多翻 3 页用正则tag_name: binary-name-v[0-9.]*匹配出符合命名约定的最新 tag 并提取版本号重复安装检测若目标二进制已存在且版本相同则直接退出版本不同会提示升级确认除非带-y下载与校验在mktemp -d创建的临时目录中下载binary-name-vversion-target-triple.zip与同名.sha256优先用shasum -a 256 -c、其次sha256sum -c校验校验失败立即终止脚本中的set -e保证任何一步失败即退出解压与安装unzip -q解压后在当前目录或最多 3 层子目录中定位二进制复制到安装目录并chmod xPATH 提示若安装目录不在 PATH 中脚本会给出export PATH$BIN_DIR:$PATH的配置建议。2.2 WindowsPowerShelliwr https://raw.githubusercontent.com/aptos-labs/aptos-core/main/scripts/binary_release/install_binary.ps1 -OutFile install.ps1; .\install.ps1 -BinaryName binary-name对应的 install_binary.ps1 提供等价参数-BinaryName必填、-Version默认latest、-BinDir默认$env:USERPROFILE\.local\bin、-Force、-Yes以及-Repo默认aptos-labs/aptos-core。脚本以$ErrorActionPreference Stop开启严格错误模式并用 ANSI 颜色输出区分错误/成功/警告信息。2.3 指定版本与自定义安装目录两个安装脚本都支持更精细的控制Unix 示例# 安装特定版本 curl -fsSL https://raw.githubusercontent.com/aptos-labs/aptos-core/main/scripts/binary_release/install_binary.sh | sh -s -- aptos-node --version 1.2.3 # 安装到自定义目录 curl -fsSL https://raw.githubusercontent.com/aptos-labs/aptos-core/main/scripts/binary_release/install_binary.sh | sh -s -- aptos-node --bin-dir /usr/local/bin# Windows 等价用法 .\install.ps1 -BinaryName aptos-node -Version 1.2.3 .\install.ps1 -BinaryName aptos-node -BinDir C:\Tools\bin2.4 手动安装与校验如需完全手动安装流程是下载对应平台的 ZIP 与.sha256文件 → 校验 → 解压 → 放入 PATH。# Unix/Linux/macOS 校验 shasum -a 256 -c aptos-node-v1.2.3-x86_64-unknown-linux-gnu.zip.sha256 # 用合并校验和文件校验全部产物 shasum -a 256 -c SHA256SUMSWindowsPowerShell侧可逐字节比对$expected (Get-Content aptos-node-v1.2.3-x86_64-pc-windows-msvc.zip.sha256).Split()[0] $actual (Get-FileHash aptos-node-v1.2.3-x86_64-pc-windows-msvc.zip -Algorithm SHA256).Hash.ToLower() if ($expected -eq $actual) { OK } else { FAILED }需要说明的是官方安装脚本会自动执行上述校验逻辑手动校验适用于脚本不可用或需要额外审计的场景。三、维护者视角创建一次多平台发布3.1 前置准备确认 crate 版本发布前先确认目标 crate 的Cargo.toml版本号正确它必须与将要发布的版本一致[package] name my-tool version 1.2.3 # 必须与 release_version 一致从 build_binary_release.sh 的源码看脚本会用sed从 crate 的Cargo.toml中提取version字段取首个匹配项并在非跳过模式下执行两级校验格式校验EXPECTED_VERSION必须匹配^[0-9]\.[0-9]\.[0-9]$如1.2.3一致性校验若与 Cargo.toml 中的版本不符直接以退出码 2 失败并提示Wanted to release for X, but Cargo.toml says the version is Y。因此发布前要么先更新 Cargo.toml 版本并提交要么不推荐用于生产在 workflow 中勾选skip_checks绕过校验。3.2 crate 定位机制脚本会自动搜索目标 crate 的Cargo.toml查找顺序为crates/crate-name/Cargo.tomlcrate-name/Cargo.tomlaptos-move/crate-name/Cargo.toml此外脚本内置了目录名与 crate 名不一致的覆盖映射如aptos-move-flow对应aptos-move/flow/Cargo.toml若以上位置都未命中会进一步在crates/与aptos-move/下递归搜索name crate-name精确匹配的 Cargo.toml。这与 aptos-core 的实际目录结构吻合aptos-node位于 aptos-node/Cargo.tomlaptos-debugger位于 aptos-move/aptos-debugger/Cargo.toml。3.3 通过 GitHub Actions 发起发布进入仓库的 Actions 页面选择Binary Release工作流点击Run workflow填写以下参数定义于 binary-release.yaml 的workflow_dispatch输入参数类型必填默认值说明binary_namestring是—输出二进制名如aptos-nodecrate_namestring是—用-p标志构建的 crate 名build_profilechoice是tooltool或performancerelease_versionstring是—发布版本如1.2.3source_git_ref_overridestring否workflow 的 Git REV覆盖构建来源分支、tag 或 SHArelease_titlestring否binary-name vversion自定义 Release 标题dry_runboolean否true勾选则只构建不创建 Releaseskip_checksboolean否false勾选则跳过版本校验填写示例binary_name: aptos-debugger crate_name: aptos-debugger build_profile: tool release_version: 1.0.0 dry_run: false从工作流定义可以看到完整的发布拓扑五个并行构建 jobLinux x86、Linux ARM64、macOS x86、macOS ARM64、Windows x86分别在ubuntu-22.04、ubuntu-22.04-arm、macos-15-intel、macos-latest、windows-2025上执行对应的构建脚本将产物以binary-builds-*命名上传为 artifacts全部成功后release-binariesjob仅当dry_run false时执行合并下载全部产物拼接生成统一的SHA256SUMS再以automatic_release_tag: binary-name-vversion调用 marvinpinto/action-automatic-releases 创建正式 GitHub Release。若指定了release_title则使用自定义标题否则默认为binary-name vversion。3.4 本地构建不经过 CI在 aptos-core 仓库根目录可直接调用构建脚本适合在发布前本地预检# Unix/Linux/macOS ./scripts/binary_release/build_binary_release.sh \ binary-name crate-name tool|performance version [skip_checks] # 示例以 performance 配置构建 aptos-node ./scripts/binary_release/build_binary_release.sh \ aptos-node aptos-node performance 1.2.3 # 示例以 tool 配置构建 aptos-debugger ./scripts/binary_release/build_binary_release.sh \ aptos-debugger aptos-debugger tool 1.0.0Windows 等价命令.\scripts\binary_release\build_binary_release.ps1 -BinaryName binary-name -CrateName crate-name -BuildProfile tool|performance -Version version [-SkipChecks $true]脚本构建流程的源码级细节build_binary_release.sh本地探测 OS/架构并映射 target triple不支持的系统直接报错退出执行cargo build -p $CRATE_NAME --profile $BUILD_PROFILE根据 profile 定位产物目录tool→target/toolperformance→target/performance将二进制压缩为binary-name-vversion-target-triple.zip若二进制名与 crate 名不一致会先复制改名再打包用shasum或sha256sum生成同名.sha256校验文件最终将 ZIP 与校验文件移动到仓库根目录。3.5 发布前的安全演练dry_run发布前务必先用 dry-run 模式做完整演练。勾选dry_run: true或手动构建时直接本地跑脚本会构建全部平台产物并上传 artifacts但不会创建 GitHub Releasebinary_name: my-tool crate_name: my-tool build_profile: tool release_version: 1.2.3 dry_run: true # ← 测试模式只构建不发布dry_run在工作流中的默认值就是true即默认不直接发布必须显式取消勾选才会真正产出 Release从机制上避免误操作。四、发布产物tag、归档与校验文件以发布my-tool版本1.2.3为例一次发布会产生Release Tagmy-tool-v1.2.3命名格式固定为binary-name-vversion这是安装脚本解析最新版本时依赖的约定也是 cargo-binstall 元数据中 URL 模板的基础。5 个平台的二进制归档my-tool-v1.2.3-x86_64-unknown-linux-gnu.zip my-tool-v1.2.3-aarch64-unknown-linux-gnu.zip my-tool-v1.2.3-x86_64-apple-darwin.zip my-tool-v1.2.3-aarch64-apple-darwin.zip my-tool-v1.2.3-x86_64-pc-windows-msvc.zip对应完整平台矩阵见 README.md平台Rust Target TripleLinux x86_64x86_64-unknown-linux-gnuLinux ARM64aarch64-unknown-linux-gnumacOS x86_64x86_64-apple-darwinmacOS ARM64aarch64-apple-darwinWindows x86_64x86_64-pc-windows-msvc校验文件my-tool-v1.2.3-x86_64-unknown-linux-gnu.zip.sha256 my-tool-v1.2.3-aarch64-unknown-linux-gnu.zip.sha256 my-tool-v1.2.3-x86_64-apple-darwin.zip.sha256 my-tool-v1.2.3-aarch64-apple-darwin.zip.sha256 my-tool-v1.2.3-x86_64-pc-windows-msvc.zip.sha256 SHA256SUMS (combined)其中合并文件SHA256SUMS由 CI 的release-binariesjob 通过cat binary-name-*.zip.sha256 SHA256SUMS生成。五、构建配置tool 与 performance 的取舍QUICKSTART 区分了两类构建场景其底层差异由仓库根 Cargo.toml 中的两个 profile 直接定义tool—— 面向 CLI 工具与命令行程序目标二进制体积最小、启动快、便于分发特性opt-level z为体积优化、lto thin薄 LTO 链接期优化、strip true剥离调试符号、codegen-units 1适用CLI 工具、实用程序、独立可执行文件如aptos-debugger。该 profile 与[profile.cli]几乎一致可视为 CLI 构建配置的同族方案。performance—— 面向服务与守护进程目标最大化运行时性能面向长期运行的进程特性opt-level 3最大优化、lto thin、codegen-units 1、overflow-checks true并保留调试信息debug true便于 profiling适用aptos-node、索引器等性能敏感的长驻服务。从源码注释看Cargo.toml 中注明该构建配置尚未被广泛测试、当前不推荐用于生产部署发布时需结合自身场景评估。选择依据可概括为分发型 CLI 选tool性能型服务选performance。六、进阶cargo-binstall 集成让用户跳过编译直接安装6.1 为什么需要配置cargo binstall crate-name能为发布在 crates.io 的 crate 直接下载预编译二进制省去本地漫长编译。但 cargo-binstall 的默认URL 约定与本仓库的命名格式不一致# cargo-binstall 默认格式 {repo}/releases/download/v{version}/{name}-{target}-v{version}.{archive-format} # 本仓库实际格式 {bin}-v{version}tag {bin}-v{version}-{target}.zip归档两处的 Release tag 与归档名顺序都不同因此必须显式配置元数据详见 CARGO_BINSTALL.md。6.2 Cargo.toml 配置[package.metadata.binstall] pkg-url { repo }/releases/download/{ bin }-v{ version }/{ bin }-v{ version }-{ target }.zip bin-dir { bin }{ binary-ext } pkg-fmt zip [package.metadata.binstall.overrides.x86_64-pc-windows-msvc] pkg-url { repo }/releases/download/{ bin }-v{ version }/{ bin }-v{ version }-{ target }.zip模板变量含义变量含义示例{repo}Cargo.toml 中的 repository 字段https://github.com/aptos-labs/aptos-core{bin}二进制名aptos-node{version}Cargo.toml 中的版本号1.2.3{target}Rust target triplex86_64-unknown-linux-gnu{binary-ext}Windows 上为.exe其他平台为空—6.3 完整示例与验证以aptos-node为例的完整Cargo.toml[package] name aptos-node version 1.2.3 edition 2021 repository https://github.com/aptos-labs/aptos-core [package.metadata.binstall] pkg-url { repo }/releases/download/{ bin }-v{ version }/{ bin }-v{ version }-{ target }.zip bin-dir { bin }{ binary-ext } pkg-fmt zip [package.metadata.binstall.overrides.x86_64-pc-windows-msvc] pkg-url { repo }/releases/download/{ bin }-v{ version }/{ bin }-v{ version }-{ target }.zip配置并发布后按以下步骤验证cargo install cargo-binstall # 首次使用需安装 cargo binstall crate-name # 应下载预编译产物而非本地编译 cargo binstall crate-name --log-level debug # 查看下载细节常见排障提示 Could not find a matching binary 时检查 Release 是否确实存在、URL 模式是否与实际命名一致、repository字段是否指向正确仓库cargo-binstall 查找的校验文件名为archive-name.sha256/.sha512/SHA256SUMS/SHA512SUMS而本工作流恰好同时产出独立.sha256与合并SHA256SUMS可被直接识别。七、常见问题排查版本不匹配Version mismatch error若 CI 报版本不一致优先更新 crate 的Cargo.toml版本使其与目标release_version一致生产环境不建议勾选skip_checks: true绕过校验。二进制找不到Binary not found依次排查crate 名是否正确可用cargo metadata或查看 Cargo.tomlcrate 是否产出二进制目标而非纯库二进制目标名是否与binary_name参数或 crate 名一致。构建配置不存在Build profile not found确认 profile 存在于仓库根 Cargo.toml 中。当前支持的 profile 仅有tool与performance两种传入其他值会直接被构建脚本以错误退出。校验失败Checksum verification fails重新下载归档与校验文件确认文件在传输中未损坏确认使用的是与归档匹配的校验文件。八、快速决策参考场景推荐做法终端用户安装最新版二进制一行安装脚本Unix/Windows用户希望跳过编译cargo binstall crate-name需 crates.io 发布 binstall 元数据发布 CLI 工具build_profile: tool发布节点/索引器等长驻服务build_profile: performance发布前验证流水线dry_run: true只构建不发布本地预构建直接调用 build_binary_release.sh /.ps1下载后安全校验独立.sha256或合并SHA256SUMS本目录的全部机制都围绕任何可执行目标都可被多平台构建、校验、发布、安装这一目标设计标准 target triple 命名保证了构建端与安装端的无缝对接binary-name-vversion的 tag 约定让最新版本解析与 cargo-binstall 下载得以自动化而 SHA256 双形态校验文件则为供应链安全提供了双重保障。若需要完整的参数说明、平台矩阵与更多排障细节可直接阅读 scripts/binary_release/README.md。【免费下载链接】aptos-coreAptos is a layer 1 blockchain built to support the widespread use of blockchain through better technology and user experience.项目地址: https://gitcode.com/GitHub_Trending/ap/aptos-core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表