forked from kubeshop/botkube
-
Notifications
You must be signed in to change notification settings - Fork 0
104 lines (92 loc) · 4 KB
/
process-chart.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
name: Process chart
env:
git-user: github-actions[bot]
git-email: 41898282+github-actions[bot]@users.noreply.github.com
HELM_DOCS_VERSION: 1.11.0
CHART_REPOSITORY: https://charts.botkube.io/
LATEST_PLUGIN_INDEX_URL: https://storage.googleapis.com/botkube-plugins-latest/plugins-index.yaml
LATEST_X_PLUGIN_TPLS_URL: github.com/kubeshop/botkube//cmd/executor/exec/templates?ref=main
on:
workflow_call:
inputs:
release-branch:
type: string
description: Base branch for release
required: true
next-version:
type: string
description: Next version in Chart files
required: true
outputs:
new-version:
description: New version for chart
value: ${{ jobs.process-chart.outputs.new-version }}
secrets:
gh-token:
description: Github access token
required: true
jobs:
process-chart:
name: Process & Push Chart Updates
runs-on: ubuntu-22.04
outputs:
new-version: ${{ inputs.next-version }}
steps:
- uses: actions/checkout@v3
with:
ref: ${{ inputs.release-branch }}
token: ${{ secrets.gh-token }}
fetch-depth: 0
- name: Set git 'user.name' and 'user.email'
run: |
git config --global user.name "${{ env.git-user }}"
git config --global user.email ${{ env.git-email }}
- name: Update Chart Version in YAML Files
run: |
HELM_FOLDER=$(echo "${{ github.workspace }}/helm")
CHART_CURRENT_VERSION=$(sed -nE 's/^version\s*:\s*([^\s\/]*).*/\1/p' ${HELM_FOLDER}/botkube/Chart.yaml)
CHART_DEV_VERSION="v9.99.9-dev"
find ${HELM_FOLDER} -name "*.yaml" -exec sed -i "s/${CHART_CURRENT_VERSION}/${{ inputs.next-version }}/g" {} +
find ${HELM_FOLDER} -name "*.yaml" -exec sed -i "s/${CHART_DEV_VERSION}/${{ inputs.next-version }}/g" {} +
find ${HELM_FOLDER} -name "*.yaml" -exec sed -i "s~${LATEST_PLUGIN_INDEX_URL}~https://github.com/kubeshop/botkube/releases/download/${{ inputs.next-version }}/plugins-index.yaml~g" {} +
find ${HELM_FOLDER} -name "*.yaml" -exec sed -i "s~${LATEST_X_PLUGIN_TPLS_URL}~github.com/kubeshop/botkube//cmd/executor/exec/templates?ref=${{ inputs.next-version }}~g" {} +
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.2.1
- name: Run chart-testing
working-directory: ${{ github.workspace }}/helm
run: |
ct lint --all --chart-dirs . --config ./ct/lint-cfg.yaml --lint-conf ./ct/lint-rules.yaml
- name: Install helm-docs
run: |
cd /tmp
wget https://github.com/norwoodj/helm-docs/releases/download/v${{env.HELM_DOCS_VERSION}}/helm-docs_${{env.HELM_DOCS_VERSION}}_Linux_x86_64.tar.gz
tar -xvf helm-docs_${{env.HELM_DOCS_VERSION}}_Linux_x86_64.tar.gz
sudo mv helm-docs /usr/local/sbin
- name: Process Helm Docs
working-directory: ${{ github.workspace }}/helm/botkube
run: |
helm-docs -l debug -f ./values.yaml -t ./README.tpl.md --sort-values-order file
- name: Tag & Push Chart Changes
run: |
if [[ $(git diff --stat) != '' ]]; then
git commit -am "[skip-ci] Helm chart update for ${{ inputs.next-version }}"
git push origin ${{ inputs.release-branch }}
fi
git tag -a ${{ inputs.next-version }} -m "${{ inputs.next-version }}"
git push --tags
- name: Checkout to gh-pages for Helm
uses: actions/checkout@v3
with:
path: chart
ref: gh-pages
token: ${{ secrets.gh-token }}
- name: Publish Chart
run: |
helm package -d ${{ github.workspace }}/chart ./helm/botkube
cd ${{ github.workspace }}/chart
helm repo index --url "${{ env.CHART_REPOSITORY }}" --merge ./index.yaml .
git add .
git commit -m "${{ inputs.next-version }} Botkube Helm chart release"
git push
env:
GITHUB_TOKEN: ${{ secrets.gh-token }}