自动发布 Chart 并托管到 Github Pages
项目结构
在仓库根目录下创建 charts
目录,然后在该目录下开发所需要的 chart,如:
.
├── charts
│ └── mychart
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ ├── _helpers.tpl
│ │ └── service.yaml
│ └── values.yaml
准备 gh-pages 分支
创建 gh-pages 分支并 push 到 github 仓库:
git checkout --orphan gh-pages # 创建 gh-pages 空分支
touch README.md
git add README.md
git push origin -u gh-pages
Github Action
为项目添加 GitHub Action,在 .github/workflows
下新增 yaml(如 helm-release.yaml
):
.github
└── workflows
├── docker-ci.yaml
└── helm-release.yaml
.github/workflows/helm-release.yaml
name: Release Charts
on:
push:
branches:
- main
jobs:
release:
permissions:
contents: write # to push chart release and create a release (helm/chart-releaser-action)
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Set up Helm
uses: azure/setup-helm@v4
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.6.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
提示
GITHUB_TOKEN
这个 Secret 是 Github 为项目自动生成的,无需手动添加。Configure Git
中是 Github Action 提交 chart 到gh-pages
分支时所用到的 Git 用户信息,可根据情况自行修改。
触发 Chart 自动发布
确保在 Chart.yaml
中定义好 version
,提交并 push 代码触发 Github Action 工作流。
如果成功,可以在 release 页面看到自动生成的压缩包:
同时,在 gh-pages
分支可以看到 index.yaml
自动生成(index.yaml
中会引用 release 中的 chart 压缩包):
遇到过的问题
- 第一次提交不会发布 chart,因为它会对比历史来发现 chart 是否有变更,第一次提交无法对比,也不会发布 chart。