如何显示GitHub当前选中分支的AppVeyor构建状态?
动态显示当前GitHub分支的AppVeyor构建状态徽章
我之前刚好碰到过一模一样的需求,折腾了一阵终于找到靠谱的解决办法——因为GitHub的README是静态渲染的,没法直接动态读取当前分支名来更新徽章URL,但我们可以借助AppVeyor的CI流程自动维护每个分支的徽章指向,具体步骤如下:
方法一:用AppVeyor脚本自动更新分支README
这个方法能让每个分支的README里的徽章自动指向该分支的构建状态,无需手动修改:
先确认你当前的AppVeyor徽章URL格式,应该是类似这样的:
[](https://ci.appveyor.com/your-username/your-repo)其中
abc123xyz是你的项目唯一标识,branch=master是固定的分支参数。在你的仓库根目录下的
appveyor.yml文件中,添加一个after_build步骤,用PowerShell脚本替换README里的分支参数为当前构建的分支名:after_build: - ps: | # 获取当前构建的分支名 $currentBranch = $env:APPVEYOR_REPO_BRANCH # 定义README路径 $readmeFile = "./README.md" # 读取README内容 $readmeContent = Get-Content $readmeFile -Raw # 替换徽章URL中的分支参数 $updatedContent = $readmeContent -replace '(https://ci.appveyor.com/api/projects/status/[a-z0-9]+)\?branch=.+', "`$1?branch=$currentBranch" # 写回更新后的内容 Set-Content $readmeFile $updatedContent # 配置Git提交信息 git config --global user.name "AppVeyor CI Bot" git config --global user.email "ci-bot@appveyor.com" # 提交并推送更新 git add $readmeFile git commit -m "Auto-update build badge for branch: $currentBranch" git push origin $currentBranch注意:要确保AppVeyor有仓库的推送权限,你可以在AppVeyor项目设置里配置GitHub的访问令牌。
提交
appveyor.yml的修改到默认分支,之后每次AppVeyor构建任何分支时,都会自动更新该分支的README里的徽章URL,指向当前分支的构建状态。这样当你在GitHub上切换到某个分支时,看到的就是该分支的最新构建状态了。
方法二:折中方案——显示多分支状态(如果不需要动态切换)
如果不想用自动提交的方式,也可以在README里列出主要分支的徽章,比如:
这个方法简单直接,但没法做到动态切换分支时自动更新徽章,适合分支数量不多的项目。
内容的提问来源于stack exchange,提问作者Simon Elms
相关产品推荐
相关产品推荐

