尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

chart-releaser-action 自定义打包指南:用 skip_packaging 实现高级 Helm 打包策略

chart-releaser-action 自定义打包指南:用 skip_packaging 实现高级 Helm 打包策略 chart-releaser-action 自定义打包指南用 skip_packaging 实现高级 Helm 打包策略【免费下载链接】chart-releaser-actionA GitHub Action to turn a GitHub project into a self-hosted Helm chart repo, using helm/chart-releaser CLI tool项目地址: https://gitcode.com/gh_mirrors/ch/chart-releaser-actionchart-releaser-action 是一个能把任意 GitHub 项目一键变成自托管 Helm chart 仓库的 GitHub Action它基于 helm/chart-releaser CLI 工具自动完成发现变更 → 打包 → 发布 Release → 更新 index.yaml的完整链路。但当你需要更高级的 Helm 打包策略——比如自定义 Chart 版本号、打包前动态改写配置、对包做签名校验——默认流程就显得力不从心。此时只需开启 chart-releaser-action 的skip_packaging参数就能跳过内置打包步骤用你自己的方式完成打包再由 Action 接管发布与索引更新。本文将以新手也能看懂的方式带你全面掌握skip_packaging的用法。一、chart-releaser-action 默认打包流程快速回顾 在聊自定义打包之前先花 30 秒回顾默认流程。chart-releaser-action 的核心逻辑写在 cr.sh 中大致分为四步发现变更对比上一个 tag找出charts目录下有改动的 Chart打包调用cr package生成.tgz包发布调用cr upload为每个新版本创建 GitHub Release更新索引调用cr index生成并推送index.yaml到gh-pages分支整个 Action 支持以下常用输入参数参数作用默认值versionchart-releaser 工具版本v1.7.0charts_dirChart 所在目录chartsskip_packaging跳过内置打包步骤空skip_existing已存在的 Release 跳过上传空skip_upload跳过上传适合 OCI 仓库空mark_as_latest是否标记为 latest Releasetruepackages_with_index将包直接推入发布分支falsepages_branchindex 与产物推送的分支gh-pages默认流程适合大多数场景但它的打包动作是黑盒——你无法干预helm package的具体参数。二、为什么需要自定义打包默认流程的三大局限 默认流程的打包步骤在 cr.sh 中由cr package完成灵活性有限无法传递helm package的高级参数例如自定义--app-version、指定--keyring签名等打包前无法修改 Chart 内容想在打包前把镜像 tag 换成当前 commit、动态生成 Chart.yaml默认流程做不到无法做签名与多架构处理企业级分发通常需要对 Chart 包签名或按平台产出不同版本开启skip_packaging后Action 只负责发布和更新索引两件事打包完全交给你这正是实现高级 Helm 打包策略的关键。三、skip_packaging 一键启用方法 ⚙️启用方式非常简单只需在 workflow 中加一行配置- name: Run chart-releaser uses: helm/chart-releaser-actionv1.7.0 with: skip_packaging: true env: CR_TOKEN: ${{ secrets.GITHUB_TOKEN }}从 action.yml 的源码可以看到该参数最终会转换成 chart-releaser 的--skip-packaging选项。启用后cr.sh 会跳过查 tag、找变更、打包的整套逻辑直接进入发布与索引更新阶段。四、4 种高级 Helm 打包策略实战 下面给出 4 个高频实战场景均以自定义打包 skip_packaging组合实现。策略一用 helm package 精确控制版本号默认打包无法单独指定--app-version自定义后可以完全掌控mkdir -p .cr-release-packages helm package charts/my-app \ --version 2.1.0 \ --app-version 2.1.0 \ --destination .cr-release-packages关键点chart-releaser 默认从.cr-release-packages目录读取.tgz包务必把产物输出到这里。策略二打包前动态修改 Chart 配置最常见的需求是把镜像 tag 注入到 Chart 中让每次发版都对应唯一 commitmkdir -p .cr-release-packages sed -i s|tag: latest|tag: $GITHUB_SHA|g charts/my-app/values.yaml helm package charts/my-app --destination .cr-release-packages策略三为 Chart 包添加签名校验面向企业分发时签名是信任链的重要一环mkdir -p .cr-release-packages helm package charts/my-app \ --sign \ --key your-gpg-key-id \ --keyring ~/.gnupg/secring.gpg \ --destination .cr-release-packages策略四搭配 skip_upload 走向 OCI 仓库如果使用 OCI 类型的仓库不需要index.yaml可以同时开启两个参数skip_packaging负责跳过内置打包skip_upload负责跳过上传实现只打包、不上传的完全自定义流程。五、自定义打包完整工作流示例 把上面的策略组装成一个可直接使用的完整 workflowname: Release Charts on: push: branches: [ main ] jobs: release: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkoutv4 with: fetch-depth: 0 - name: Configure Git run: | git config user.name $GITHUB_ACTOR git config user.email $GITHUB_ACTORusers.noreply.github.com - name: Install Helm uses: azure/setup-helmv4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Custom Packaging run: | mkdir -p .cr-release-packages for chart in charts/*/; do helm package $chart --destination .cr-release-packages done - name: Run chart-releaser uses: helm/chart-releaser-actionv1.7.0 with: skip_packaging: true env: CR_TOKEN: ${{ secrets.GITHUB_TOKEN }}本地想要先跑通全流程可以先把仓库 clone 到本地git clone https://gitcode.com/gh_mirrors/ch/chart-releaser-action参考其中的 cr.sh 与 action.yml 逐步验证。六、使用 skip_packaging 的 5 个注意事项 ⚠️产物目录要对打包产物必须输出到.cr-release-packages否则cr upload找不到包版本号要一致.tgz的文件名必须与 Chart.yaml 中的version对应否则发布校验失败输出变量会失效changed_charts输出在skip_packaging模式下不会被设置如需记录变更需自行处理记得安装 Helm自定义打包依赖helm命令workflow 中要先用azure/setup-helm安装Git 身份要配置发布与更新索引需要 git 用户信息别忘了在打包前配置user.name和user.email七、总结 ✨skip_packaging是 chart-releaser-action 中最值得掌握的进阶参数之一。它把打包这个环节的主动权交还给你而发布 Release、生成index.yaml、推送到 GitHub Pages 等繁琐工作仍由 Action 自动完成。无论是精确控制版本、动态注入配置还是签名分发都能在不放弃自动化便利的前提下实现更高级的 Helm 打包策略。赶快在你的下一个 Helm 仓库项目中试试吧【免费下载链接】chart-releaser-actionA GitHub Action to turn a GitHub project into a self-hosted Helm chart repo, using helm/chart-releaser CLI tool项目地址: https://gitcode.com/gh_mirrors/ch/chart-releaser-action创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表