本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

一个通用的版本跟踪和更新工具。
Bump可用于自动化版本更新,适用于其他版本和包管理系统不适用或无法使用的场景。例如,当需要在Makefile、Dockerfile、脚本或其他文本文件中管理依赖版本时。
以下是一个Bumpfile示例,用于将Dockerfile基础镜像版本自动更新到最新的Alpine 3版本:
$ cat Bumpfile alpine /FROM alpine:([\d.]+)/ docker:alpine|^3 alpine link "发布说明" [***] Dockerfile # 查看当前版本 $ bump current Dockerfile:1: alpine 3.9.2 # 检查可用更新 $ bump check alpine 3.13.0 # 查看更新差异 $ bump diff --- Dockerfile +++ Dockerfile @@ -1,2 +1,2 @@ -FROM alpine:3.9.2 AS builder +FROM alpine:3.13.0 AS builder # 应用更新 $ bump update
实际应用示例可参考wader/static-ffmpeg使用的Dockerfile,其中重要库通过bump GitHub Action实现自动更新。
Bump可作为GitHub Action使用,直接使用wader/bump/action@master或自行提供并引用。以下是每天9点(UTC)读取Bumpfile检查版本更新并创建PR的工作流配置:
name: '自动版本更新' on: schedule: # 分 时 日 月 周 (UTC) - cron: '0 9 * * *' # 允许手动触发版本更新 workflow_dispatch: jobs: bump: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: wader/bump/action@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
查看action.yml获取输入参数详情。
注意:若希望bump创建的PR触发其他Action(如CI构建),当前需使用具有仓库访问权限的个人访问令牌,并添加为密钥。例如,添加名为BUMP_TOKEN的密钥,然后配置GITHUB_TOKEN: ${{ secrets.BUMP_TOKEN }}。
提供以下不同环境的Action:
wader/bump/action@master:包含git和curl的alpine环境
wader/bump/action/go@master:包含git、curl和go的alpine环境
Docker Hub镜像:
docker run --rm -v "$PWD:$PWD" -w "$PWD" mwader/bump help
构建镜像:
docker build -t bump .
安装go后执行以下命令,可将bump安装到$(go env GOPATH)/bin/bump:
go get github.com/wader/bump/cmd/bump
$ bump help 用法: bump [选项] 命令 选项: -e 要排除的配置名称(逗号分隔) -f 要读取的Bumpfile(默认:Bumpfile) -i 要包含的配置名称(逗号分隔) -r 运行更新命令(默认:false) -v 详细输出(默认:false) 命令: version 显示bump自身版本(dev) help [FILTER] 显示帮助或指定过滤器的帮助 list [FILE...] 显示bump配置 current [FILE...] 显示当前版本 check [FILE...] 检查可能的版本更新 update [FILE...] 更新版本 diff [FILE...] 显示更新将产生的差异 pipeline PIPELINE 运行过滤器管道 BUMPFILE是包含CONFIG或文件全局模式的文件 FILE是包含EMBEDCONFIG或待检查更新版本的文件 EMBEDCONFIG格式:"bump: CONFIG" CONFIG格式: 名称 /正则表达式/ 管道 | 名称 command 命令 | 名称 after 命令 | 名称 message 消息 | 名称 link 标题 URL 名称是配置的标识 正则表达式是包含一个子匹配以查找当前版本的正则 管道是过滤器管道:过滤器|过滤器|... 过滤器: git:<仓库> | <仓库.git> gitrefs:<仓库> docker:<镜像> svn:<仓库> fetch:<URL> | <http://> | <https://> semver:<约束> | semver:<n.n.n-pre+build> | <约束> | <n.n.n-pre+build> re:/<正则表达式>/ | re:/<正则表达式>/<模板>/ | /<正则表达式>/ | /<正则表达式>/<模板>/ sort key:<名称> | @<名称> static:<名称[:键=值:...]>,... err:<错误>
名称是配置的标识。
正则表达式是golang正则表达式,包含一个子匹配用于查找当前版本。
管道是描述如何查找最新合适版本的过滤器管道:过滤器|过滤器|...
默认情况下,bump在当前目录查找名为Bumpfile的文件。每行可为注释、配置或文件全局模式(用于读取嵌入式配置)。
# 注释 名称 /正则表达式/ 管道 名称 [command|after] 命令 名称 message 消息 名称 link 标题 URL 文件名 全局模式/*
Bumpfile示例:
# 一个bump配置 alpine /FROM alpine:([\d.]+)/ docker:alpine|^3 alpine message 确保同时使用abc进行测试 alpine link "发布说明" [***] # 读取配置,检查并更新Dockerfile中的版本 Dockerfile
嵌入式配置可将bump配置直接包含在需要检查或更新版本的文件中。
嵌入式配置格式:
bump: 名称 /正则表达式/ 管道
含嵌入式配置的Dockerfile示例:
# bump: alpine /FROM alpine:([\d.]+)/ docker:alpine|^3 FROM alpine:3.9.3 AS builder
bump: 名称 [command|after] 命令
执行命令时会设置以下环境变量:
$名称:配置名称
$CURRENT:当前版本
$LATEST:可用的最新版本
有两种shell命令类型:command和after。command会替代bump的默认修改操作;after会在bump完成修改后执行。若配置多个命令,将按配置顺序执行。
使用command通过go get更新go.mod和go.sum的Bumpfile示例:
module program go 1.12 require ( // bump: leaktest /github.com\/fortytw2\/leaktest v(.*)/ git:[***]|^1 // bump: leaktest command go get -d github.com/fortytw2/leaktest@v$LATEST && go mod tidy github.com/fortytw2/leaktest v1.2.0 )
使用after运行脚本更新下载哈希的Bumpfile示例:
libvorbis after ./hashupdate Dockerfile VORBIS $LATEST
名称 message 消息 名称 link "标题" URL
消息、标题和URL中可使用以下变量:
$名称:配置名称
$CURRENT:当前版本
$LATEST:可用的最新版本
通过配置一个或多个message和link,可将消息和链接包含在提交消息和拉取请求中。
示例:
libvorbis link "CHANGES文件" [***] libvorbis link "源码差异 $CURRENT..$LATEST" [***]
管道由一个或多个按顺序执行的过滤器组成。通常以从某个源(如git仓库)生成版本的过滤器开始,后续过滤器用于选择、转换和排序版本,最终确定一个版本。若管道生成多个版本,将使用第一个。
版本是键值对字典,"name"键通常是版本号(如"1.2.3")或符号名称(如"master")。版本还可包含其他键(如"commit"、"version"等),具体取决于源。可使用键过滤器key:<名称>或@<名称>引用这些键。
默认所有过滤器操作默认键"name",可通过key:<名称>或@<名称>在管道中更改默认键。
以下示例使用bump pipeline 管道测试运行管道并显示结果。使用bump -v pipeline 管道可获取更详细的输出,有助于测试管道。
# 最新的4.0版本ffmpeg $ bump pipeline '[***]|^4' 4.3.1 # 最新4.0版本ffmpeg的提交哈希 $ bump pipeline '[***]|^4|@commit' a3a26a98652fbdaa474e95cfbc12f68b64ca1e6f # 最新的1.0版本golang docker构建镜像 $ bump pipeline 'docker:golang|^1' 1.15.6 # 最新的mp3lame版本 $ bump pipeline 'svn:[***]|/^RELEASE__(.*)$/|/_/./|*' 3.100
过滤器用于生成、转换和筛选版本。部分过滤器(如git)生成版本,re和semver用于转换和筛选。
git git:<仓库> 或 <仓库.git>
gitrefs gitrefs:<仓库>
docker docker:<镜像>
svn svn:<仓库>
fetch fetch:<URL>、<http://> 或 <https://>
semver semver:<约束>、semver:<n.n.n-pre+build>、<约束> 或 <n.n.n-pre+build>
re re:/<正则表达式>/、re:/<正则表达式>/<模板>/、/<正则表达式>/ 或 /<正则表达式>/<模板>/
sort sort
key key:<名称> 或 @<名称>
static static:<名称[:键=值:...]>,...
err err:<错误>
git:<仓库> 或 <仓库.git>
从git仓库的标签生成版本。"name"为标签中的版本号,"commit"为提交哈希或标签对象。
使用gitrefs过滤器可从所有引用生成版本。
$ bump pipeline '[***]|*' 2.30.0 $ bump pipeline 'git://github.com/git/git.git|*' 2.30.0
gitrefs:<仓库>
从git仓库的所有引用生成版本。"name"为完整引用(如"refs/tags/v2.7.3"),"commit"为提交哈希。
使用git过滤器仅从标签生成版本。
$ bump pipeline 'gitrefs:[***] HEAD
docker:<镜像>
从Docker Hub镜像生成版本。
$ bump pipeline 'docker:alpine|^3' 3.13.0
svn:<仓库>
从subversion仓库的标签和分支生成版本。"name"为标签或分支名称,"version"为修订号。
$ bump pipeline 'svn:[***]|*' 1.14.0
fetch:<URL>、<http://> 或 <https://>
获取URL内容,生成一个版本,"name"键为内容。
$ bump pipeline 'fetch:[***]|/latest release is version (\w+)/' 6b
semver:<约束>、semver:<n.n.n-pre+build>、<约束> 或 <n.n.n-pre+build>
使用语义化版本筛选或转换版本。
提供约束时,用于查找满足约束的最新版本。
提供版本模式时,用于转换版本。
# 查找最新的主版本1版本 $ bump pipeline 'static:1.1.2,1.1.3,1.2.0|semver:^1' 1.2.0 # 查找最新的次版本1.1版本 $ bump pipeline 'static:1.1.2,1.1.3,1.2.0|~1.1' 1.1.3 # 转换为仅主版本.次版本 $ bump pipeline 'static:1.2.3|n.n' 1.2
re:/<正则表达式>/、re:/<正则表达式>/<模板>/、/<正则表达式>/ 或 /<正则表达式>/<模板>/
可通过将第一个/替换为其他字符指定替代的正则/模板分隔符,例如:re:#正则表达式#模板#。
使用golang正则表达式筛选名称。若名称不匹配正则表达式,版本将被跳过。
若仅提供正则表达式且无模板和子匹配,名称不变。
若定义子匹配,名为"name"或"value"的子匹配将分别用作名称和值,否则第一个子匹配用作名称。
若定义模板且无匹配子,模板用作替换字符串;若有子匹配,模板用于展开$0、${1}、$name等。
正则表达式可多次匹配。使用^$锚点或(?m:)确保单次匹配或按行匹配。
# 仅筛选 $ bump pipeline 'static:a,b|/b/' b # 简单替换 $ bump pipeline 'static:aaa|re:/a/b/' bbb # 使用#作为分隔符的简单替换 $ bump pipeline 'static:aaa|re:#a#b#' bbb # 第一个子匹配作为名称 $ bump pipeline 'static:ab|re:/a(.)/' b # 多子匹配替换 $ bump pipeline 'static:ab:1|/(.)(.)/${0}$2$1/' abba # 命名子匹配作为名称和值 $ bump pipeline 'static:ab|re:/(?P<name>.)(?P<value>.)/' a $ bump pipeline 'static:ab|re:/(?P<name>.)(?P<value>.)/|@value' b
sort
按字母逆序排序版本。
$ bump pipeline 'static:a,b,c|sort' c
key:<名称> 或 @<名称>
更改管道的默认键。常用于管道末尾(如使用git提交哈希而非标签名称)或管道中间(如需基于其他键进行正则筛选)。
$ bump pipeline 'static:1.0:hello=world|@hello' world $ bump pipeline 'static:1.0:hello=world|@name' 1.0 $ bump pipeline 'static:1.0:hello=world|key:hello' world
static:<名称[:键=值:...]>,...
从过滤器参数生成版本。
$ bump pipeline 'static:1,2,3,4:key=value:a=b|sort' 4
err:<错误>
抛出错误消息。用于测试。
$ bump pipeline 'err:test' test
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429