Skip to content

Commit 454f67b

Browse files
committed
feat: github action add release helm chart
1 parent bd5c3c4 commit 454f67b

File tree

2 files changed

+87
-10
lines changed

2 files changed

+87
-10
lines changed

.github/workflows/release.yml

+84-7
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,15 @@ jobs:
102102
needs: [ build ]
103103
runs-on: ubuntu-latest
104104
steps:
105+
- name: Set up Go
106+
uses: actions/setup-go@v2
107+
with:
108+
go-version: '1.20'
109+
check-latest: true
110+
- name: Checkout code
111+
uses: actions/checkout@v2
112+
with:
113+
fetch-depth: 0
105114
- name: Helm tool installer
106115
uses: Azure/setup-helm@v1
107116
with:
@@ -114,8 +123,10 @@ jobs:
114123
sed -i "s/tag:.*$/tag: \"${VERSION}\"/" charts/kubevpn/values.yaml
115124
- name: Tar chart
116125
run: |
117-
tar --transform 's/^charts\/kubevpn/kubevpn/' -zcf kubevpn-chart.tar.gz charts/kubevpn
118-
shasum -a 256 kubevpn-chart.tar.gz | awk '{print $1}' > kubevpn-chart.tar.gz-SHA256
126+
VERSION=${GITHUB_REF#refs/*/}
127+
CHART_VERSION=${VERSION/#v/}
128+
tar --transform 's/^charts\/kubevpn/kubevpn/' -zcf kubevpn-${CHART_VERSION}.tgz charts/kubevpn
129+
shasum -a 256 kubevpn-${CHART_VERSION}.tgz | awk '{print $1}' > kubevpn-${CHART_VERSION}.tgz-SHA256
119130
- name: Download UPLOAD_URL
120131
uses: actions/download-artifact@v2
121132
with:
@@ -125,21 +136,87 @@ jobs:
125136
run: |
126137
UploadUrl=$(cat ./UPLOAD_URL)
127138
echo "::set-output name=upload_url::$UploadUrl"
139+
- name: Get assert name
140+
id: get_assert_info
141+
run: |
142+
VERSION=${GITHUB_REF#refs/*/}
143+
CHART_VERSION=${VERSION/#v/}
144+
AssertName=kubevpn-${CHART_VERSION}.tgz
145+
echo "::set-output name=assert_name::$AssertName"
146+
- name: Get assert SHA256 name
147+
id: get_assert_info_sha256
148+
run: |
149+
VERSION=${GITHUB_REF#refs/*/}
150+
CHART_VERSION=${VERSION/#v/}
151+
AssertName=kubevpn-${CHART_VERSION}.tgz-SHA256
152+
echo "::set-output name=assert_name::$AssertName"
128153
- name: Upload Release Asset KubeVPN Server Chart
129154
uses: actions/upload-release-asset@v1
130155
env:
131156
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132157
with:
133158
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
134-
asset_path: kubevpn-chart.tar.gz
135-
asset_name: kubevpn-chart.tar.gz
159+
asset_path: ${{ steps.get_assert_info.outputs.assert_name }}
160+
asset_name: ${{ steps.get_assert_info.outputs.assert_name }}
136161
asset_content_type: application/octet-stream
137162
- name: Upload Release Asset KubeVPN Chart SHA256
138163
uses: actions/upload-release-asset@v1
139164
env:
140165
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
141166
with:
142167
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
143-
asset_path: kubevpn-chart.tar.gz-SHA256
144-
asset_name: kubevpn-chart.tar.gz-SHA256
145-
asset_content_type: application/octet-stream
168+
asset_path: ${{ steps.get_assert_info_sha256.outputs.assert_name }}
169+
asset_name: ${{ steps.get_assert_info_sha256.outputs.assert_name }}
170+
asset_content_type: application/octet-stream
171+
172+
github-pages-deploy:
173+
name: Release Helm Chart To branch master
174+
permissions:
175+
contents: write
176+
runs-on: ubuntu-latest
177+
needs: release-helm-chart
178+
steps:
179+
- name: Set up Go
180+
uses: actions/setup-go@v2
181+
with:
182+
go-version: '1.20'
183+
check-latest: true
184+
- name: Checkout code
185+
uses: actions/checkout@v2
186+
with:
187+
fetch-depth: 0
188+
- name: Configure Git
189+
run: |
190+
git config user.name "$GITHUB_ACTOR"
191+
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
192+
- name: Install Helm
193+
uses: azure/setup-helm@v3
194+
- name: Change chart version
195+
run: |
196+
VERSION=${GITHUB_REF#refs/*/}
197+
CHART_VERSION=${VERSION/#v/}
198+
sed -i "s/^appVersion:.*$/appVersion: \"${VERSION}\"/;s/^version:.*$/version: ${CHART_VERSION}/" charts/kubevpn/Chart.yaml
199+
sed -i "s/tag:.*$/tag: \"${VERSION}\"/" charts/kubevpn/values.yaml
200+
- name: Package and upload helm chart
201+
run: |
202+
# download helm chart releaser
203+
curl -sSLo cr.tar.gz "https://github.com/helm/chart-releaser/releases/download/v1.6.1/chart-releaser_1.6.1_linux_amd64.tar.gz"
204+
tar -xzf cr.tar.gz
205+
rm -f cr.tar.gz
206+
owner=$(cut -d '/' -f 1 <<< "$GITHUB_REPOSITORY")
207+
repo=$(cut -d '/' -f 2 <<< "$GITHUB_REPOSITORY")
208+
# package chart
209+
./cr package charts/$repo
210+
# update index and push to github pages
211+
git config user.email "$owner@users.noreply.github.com"
212+
git config user.name "$owner"
213+
./cr index \
214+
--owner "$owner" \
215+
--git-repo "$repo" \
216+
--token "${{ secrets.CREATE_HELM_PR }}" \
217+
--release-name-template "v{{ .Version }}" \
218+
--index-path ./index.yaml \
219+
--charts-repo https://github.com/$owner/$repo \
220+
--pages-branch master \
221+
--pages-index-path charts/index.yaml \
222+
--push

.github/workflows/test.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- name: Setup Minikube
3737
id: minikube
3838
timeout-minutes: 30
39-
uses: medyagh/setup-minikube@master
39+
uses: medyagh/setup-minikube@latest
4040
with:
4141
cache: true
4242

@@ -93,7 +93,7 @@ jobs:
9393
go-version: '1.20'
9494
check-latest: true
9595
- name: Set up Docker
96-
uses: crazy-max/ghaction-setup-docker@v2.2.0
96+
uses: crazy-max/ghaction-setup-docker@v3
9797

9898
- name: Install minikube
9999
run: |
@@ -157,7 +157,7 @@ jobs:
157157
go-version: '1.20'
158158

159159
- name: Set up Docker
160-
uses: crazy-max/ghaction-setup-docker@v2.2.0
160+
uses: crazy-max/ghaction-setup-docker@v3
161161
- run: |
162162
docker info --format '{{.OSType}}'
163163
- run: |

0 commit comments

Comments
 (0)