
网络安全渗透测试网络【免费下载链接】bettercapThe Swiss Army knife for 802.11, BLE, HID, CAN-bus, IPv4 and IPv6 networks reconnaissance and MITM attacks.项目地址https://gitcode.com/gh_mirrors/be/bettercap点击查看免费下载导读本指南以 bettercap 仓库中的《Cutting a release》发布手册为主体完整还原一次vX.Y.Z版本发布的端到端流程如何规避 GitHub Immutable releases 永久烧毁 tag 的坑、如何基于git log手工撰写 changelog、如何触发 CI 自动构建多平台二进制并最终回填 release 正文。读完本文你可以照章完成一次安全、可追溯的 bettercap 版本发布并理解其中每一步在仓库源码与 CI 配置中的落点。1. 发布前的红线检查Immutable Releases 必须关闭1.1 为什么这是先决条件中的先决条件发布手册的开篇即是一句醒目的⚠️ STOP在 bump 版本号、打 tag 或创建任何 release 之前必须先在bettercap/bettercap仓库的Settings → General → Immutable releases中确认该选项为OFF并且要等到用户明确确认已关闭后才能继续。这条红线并非杞人忧天其后果是永久且不可逆的一旦某个 tag 与 immutable release 关联GitHub 会永久保留该 tag——即使删除 release、关闭该设置甚至联系 GitHub Support都无法释放。按 GitHub Support 的原话Once a tag has been associated with an immutable release, it becomes permanently reserved and cant be recreated or reused. 也就是说这个版本号从此永远消失无法重发。这个仓库就真实踩过坑v2.41.6因此永久不可用最终只能把同样的修复内容以v2.41.7重新发布。仓库 CI 使用的softprops/action-gh-releasev2当前工作流文件 .github/workflows/build-and-deploy.yml 中已升级为v3的 draft → upload → publish 流程历史上在 immutable release 上会失败对已存在 release 的 PATCH 请求被拒绝。在确认 immutability 开启状态下该流程安全之前一律保持关闭。1.2 第二个铁律不要手动抢跑gh release create发布手册还强调永远不要在 CI 发布该 tag 之前手动运行gh release create。CI 会在 tag 推送时端到端地创建 release手动先建 release正是当初烧掉v2.41.6的直接原因。小结两条铁律——① Immutable releases 关闭② 让 CI 全权负责 release 创建人工只负责推送代码 推送 tag 事后回填 changelog。2. 第一步从 git 历史生成 changelog2.1 拉取自上个 tag 以来的全部提交发布手册给出的命令基于标准 git 工具链LAST_TAG$(git describe --tags --abbrev0) git log $LAST_TAG..HEAD --oneline --prettyformat:%h %sgit describe --tags --abbrev0取当前 HEAD 能回溯到的最近一个 tag作为本次发布周期的起点git log $LAST_TAG..HEAD列出从上个 tag 到当前 HEAD 之间的全部提交--prettyformat:%h %s只输出短哈希与提交标题便于人工筛选归类。2.2 手工撰写 changelog 的格式规范发布手册要求由发布者本人根据这些 commit 撰写 changelog并按固定模板组织### ✨ New Features - ... ### Fixes - ... ### Improvements - ... ### Miscellaneous - ...配套的撰写规则非常具体重点收录新功能与重要修复dependabot 的依赖升级 bump 和琐碎改动统一归入Miscellaneousemoji 只用于重要条目例如安全/DoS 修复用 ️不要到处撒 emoji空章节直接省略例如纯修复版本就删掉 New Features 一节在打 tag 之前先把 changelog 草稿展示给用户确认。这套人工归类 语义化分段 精简表情的规范保证了 release 正文对下游用户、搜索引擎与 Agent 都可读、可检索——分类明确、无噪音条目。3. 第二步bump 版本号并推送 tag3.1 版本号的实际存放位置发布手册明确指出当前版本号存在于core/banner.go形如Version X.Y.Z。仓库现状完全吻合——core/banner.go 中的core包常量定义const ( Name bettercap Version 2.41.7 Author Simone evilsocket Margaritelli Website https://bettercap.org/ )也就是说bettercap 的版本号是编译期常量而非外部构建参数发布新版本必须先改这个文件。当前仓库的实际版本为2.41.7恰好与手册中 v2.41.6 被烧毁、以 v2.41.7 重发 的历史叙事相互印证。该常量会被 main.go 用于启动横幅打印bettercap v2.41.7 (built for linux amd64 with go...)并有专门的测试守护其格式core/banner_test.go中的TestBannerVersion用正则\d.\d校验Version常量格式防止版本号被误改得不成样子参见 core/banner_test.go。3.2 完整的 bump tag 命令序列发布手册给出的操作序列如下先向用户确认下一个版本号# bump sed -i s/Version OLD/Version NEW/ core/banner.go # or use the Edit tool git add core/banner.go git commit -m releasing version NEW git push origin master # tag git tag -a vNEW -m releasing vNEW git push origin vNEW要点拆解版本号替换可以用sed -i或编辑器工具完成替换对象就是core/banner.go中的Version常量提交信息采用统一约定releasing version NEW方便后续在git log中定位发布提交tag 使用带注释的轻量标签git tag -a vNEW -m releasing vNEW携带发布说明推 tag 是发布触发器——git push origin vNEW一旦执行CI 即被激活见下一节。4. 推送 tag 后CI 自动构建与 release 发布4.1 CI 工作流的真实配置推送 tag 会触发仓库中的 .github/workflows/build-and-deploy.yml。对照源码其关键设计如下触发器on.push.tags匹配v*.*.*即任何vX.Y.Z格式的 tag 推送都会触发同时保留了workflow_dispatch手动触发入口构建矩阵osmacOS / Linux / Windows×archamd64 / arm64组合并通过exclude排除暂不可用的组合如 Linux arm64、macOS amd64、Windows arm64实际产出macOS arm64 / Linux amd64 / Windows amd64三个平台构建Go 版本统一使用go 1.25.x平台依赖Linux 安装p7zip-full libpcap-dev libnetfilter-queue-dev libusb-1.0-0-devmacOS 用 brew 安装libpcap libusb p7zipWindows 则通过 msys2 装 libusb、choco 装 openssl/make/7zip/zadig并下载 WinPcap 开发包——这对应了 bettercap 对 libpcap、libusb、netfilter-queue 等底层网络能力的依赖构建命令make -e TARGET...对应仓库根目录 Makefile 中的build目标go build $(GOFLAGS) -o $(TARGET) .-e允许用环境变量覆盖 Makefile 变量产物校验与打包file验证二进制格式 →openssl dgst -sha256生成 sha256 校验文件 →7z a打包为 zipzip 内含二进制 sha256发布deployjob 依赖全部构建完成后下载合并所有release-artifacts-*用softprops/action-gh-releasev3将dist/bettercap_*全部上传文档中描述的6 个资产正是 3 平台 × (zip sha256)且仅当事件为 tag 推送时才执行发布。因此手册中构建 macOS arm64 / Linux amd64 / Windows amd64 二进制并创建包含全部 6 个资产每平台 zip sha256的 GitHub release的描述与工作流源码完全一致。4.2 等待工作流完成发布手册建议用 GitHub CLI 监控gh run watch idid可用gh run list查询tag 推送触发的那次 run。等待期间应确认 build 矩阵全部成功、deploy 已创建出带 6 个资产的 release此时 release 正文为空见下一步。5. 第三步回填 changelog 并核验 releaseCI 创建的 release 正文是空的需要人工回填gh release edit vNEW --notes-file changelog.md其中changelog.md即第 2 步撰写并经用户确认的 changelog 文件。随后核验结果gh release view vNEW --json tagName,isDraft,assetstagName确认 tag 名正确isDraft确认 release 已正式发布非 draftassets确认 6 个资产3 平台 × zip sha256全部就位。6. 发布清单速查把手册流程浓缩为一张可执行的核对表发布时逐项打勾阶段动作命令/位置验收标准前置红线确认 Immutable releases 已关闭仓库 Settings → General用户明确确认前置红线禁止手动gh release create—无手动 release 操作生成 changelog拉取自上个 tag 的提交git log $LAST_TAG..HEAD --oneline --prettyformat:%h %s草稿经用户确认bump 版本修改core/banner.go的Versionsed -i s/Version OLD/Version NEW/ core/banner.gogrep Version core/banner.go确认新值提交推送提交并推送主分支git commit -m releasing version NEW git push origin master远端 master 含新提交打 tag创建并推送注释 taggit tag -a vNEW -m releasing vNEW git push origin vNEW触发 build-and-deploy 工作流等待构建监控 CIgh run watch id3 平台构建成功、release 已创建回填 changelog写入 release 正文gh release edit vNEW --notes-file changelog.md正文与草稿一致最终核验检查 release 状态与资产gh release view vNEW --json tagName,isDraft,assetsisDraftfalse6 个资产齐全7. 从文档到源码这些约定在仓库中的落点为了让读者在仓库中快速定位发布流程涉及的每个环节这里汇总本文引用的关键路径发布手册本身CLAUDE.md本文核心骨架来源版本号常量core/banner.goVersion 2.41.7版本号格式守护测试core/banner_test.goTestBannerVersion正则校验版本号使用处main.go启动横幅bettercap vX.Y.Z ...发布 CI 工作流.github/workflows/build-and-deploy.ymltag 触发、3 平台构建、sha256 zip 打包、softprops/action-gh-releasev3上传构建入口 MakefileMakefilebuild目标即go build -o bettercap .resources目标会先由network/make_manuf.py生成network/manuf.go。顺带一提与build-and-deploy.yml并列仓库还维护了 test-on-linux.yml、test-on-macos.yml、test-on-windows.yml 等测试工作流以及 Docker 构建流程 build-and-push-docker.yml配合根目录 Dockerfile 与 Dockerfile.arm64后者还服务于 Makefile 中的build-arm64目标发布流程与常规测试、容器镜像发布是三条并行的自动化通道。8. 常见问题与注意事项tag 推错了能重来吗只要 release 尚未创建或处于 draft 且 immutability 关闭删除远端 tag 后重新推送通常可行但一旦 release 与 tag 绑定且开启 immutabilitytag 将永久保留——这正是本文第 1 节反复强调关闭该设置的原因。changelog 里的 emoji 规范只给重要条目如安全修复 ️普通条目保持纯文本保证正文在各类工具中的可解析性。版本号与 CI 的关系CI 构建矩阵并不从core/banner.go读取版本号版本号只影响二进制内置的横幅字符串tag 名vNEW与二进制内版本号是否一致需要发布者人工确保——这也是为什么手册要求先改core/banner.go再打同名的 tag。手动构建产物与 CI 产物的一致性本地make构建见 Makefile可用于开发期验证但正式发布资产一律以 CI 产出为准避免本地能跑、CI 产物不同的偏差。按照以上流程一次 bettercap 发布即可在用户确认 → 代码提交 → tag 触发 → CI 出包 → changelog 回填 → 核验资产六个环节上全程受控、可追溯。赞分享网络安全渗透测试网络【免费下载链接】bettercapThe Swiss Army knife for 802.11, BLE, HID, CAN-bus, IPv4 and IPv6 networks reconnaissance and MITM attacks.项目地址https://gitcode.com/gh_mirrors/be/bettercap点击查看免费下载相关推荐PhoneInfoga发布流程自动化从CI到GitHub Releases全流程PhoneInfoga发布流程自动化从CI到GitHub Releases全流程 引言告别手动发布的繁琐 你是否还在为开源项目的发布流程焦头烂额手动构建、网络安全后端JupyterHub 版本发布工作流:从 changelog、tbump 到 CI 自动发布 PyPI 与 conda-forgeJupyterHub 版本发布工作流:从 changelog、tbump 到 CI 自动发布 PyPI 与 conda forge JupyterHub 是一个后端微服务Sentry JavaScript SDK 版本发布全流程指南从 Changelog 到 CI 自动发布与 Gitflow 分支同步Sentry JavaScript SDK 版本发布全流程指南从 Changelog 到 CI 自动发布与 Gitflow 分支同步 本文以 Sentry J可观测性上一篇如何通过Lenovo Legion Toolkit实现笔记本性能精准调控探索硬件管理轻量化方案下一篇3个破局方案ncmdump让网易云音乐格式自由创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考