-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (112 loc) · 4.62 KB
/
helm-package-and-publish.yaml
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Helm package and push to Github Pages
on:
# publish on releases, e.g. v2.1.13 (image tagged as "2.1.13" - "v" prefix is removed)
# release:
# types: [ published ]
push:
tags:
- "v*.*.*"
# branches:
# - 'main'
# paths:
# - 'helm-chart/**'
# - '.github/workflows/helm-package-and-publish.yaml'
# TODO:
# - package helm
# - upload release artifact
# - get its url
# - update/merge gh-pages/index.yaml
jobs:
helm-package-and-push-to-ghcr-io:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Helm
uses: azure/[email protected]
- name: Helm Package and Push to ghcr.io
id: helm_package
run: |
echo "Tag version: $GITHUB_REF"
RELEASE_TAG="${GITHUB_REF#refs/tags/}"
VERSION="${RELEASE_TAG:-v666.666.666}"
echo "VERSION Version: $VERSION"
CLEAN_VERSION="${VERSION#v}"
echo "CLEAN_VERSION Version: $CLEAN_VERSION"
PACKAGE_OUTPUT=$(helm package --version "$CLEAN_VERSION" helm-chart)
echo "PACKAGE_OUTPUT=$PACKAGE_OUTPUT"
PACKAGE_NAME=$(basename "$PACKAGE_OUTPUT")
echo "Generated helm package: $PACKAGE_NAME"
# save the generated package name to github_output to pass it to next step
echo "package-name=$PACKAGE_NAME" >> $GITHUB_OUTPUT
echo "package-version=$CLEAN_VERSION" >> $GITHUB_OUTPUT
- name: Print helm_package step output
run: |
echo "package-name=$MESSAGE"
env:
MESSAGE: ${{ steps.helm_package.outputs.package-name}}
- name: Release
id: create_release_and_upload_artifacts
uses: softprops/[email protected]
if: startsWith(github.ref, 'refs/tags/')
with:
files: ${{ steps.helm_package.outputs.package-name}}
token: ${{ secrets.GHCR_TOKEN }}
generate_release_notes: true
fail_on_unmatched_files: true
# TODO: update release body
body: |
<https://oguzhan-yilmaz.github.io/steampipe-powerpipe-kubernetes/>
```bash
helm repo add oguzhan-yilmaz https://oguzhan-yilmaz.github.io/steampipe-powerpipe-kubernetes
helm repo add oguzhan-yilmaz https://oguzhan-yilmaz.github.io/steampipe-powerpipe-kubernetes --version ${{ steps.helm_package.outputs.package-version}}
```
- name: 'Setup jq'
uses: dcarbone/install-jq-action@v2
- name: print release upload output
run: |
echo "assets=${{ steps.create_release_and_upload_artifacts.outputs.assets}}"
- name: Save artifact download url
id: helm_package_download_url
run: |
DOWNLOAD_URL=$(echo '${{ steps.create_release_and_upload_artifacts.outputs.assets}}' | jq '.[0].browser_download_url')
echo "DOWNLOAD_URL=$DOWNLOAD_URL"
echo "download_url=$DOWNLOAD_URL" >> $GITHUB_OUTPUT
- name: Print helm_package download url
run: |
echo 'package-name=${{ steps.helm_package_download_url.outputs.download_url}}'
- name: Clone gh-pages branch and update helm index.yaml on github pages
env:
GITHUB_TOKEN: ${{ secrets.GHCR_TOKEN }}
GIT_AUTHOR_EMAIL: "Oguzhan Yilmaz"
GIT_AUTHOR_NAME: "[email protected]"
run: |
git config --global user.email "[email protected]"
git config --global user.name "Oguzhan Yilmaz"
# clone gh-pages branch
git clone -b gh-pages https://github.com/oguzhan-yilmaz/steampipe-powerpipe-kubernetes.git gh-pages-clone
ls -al
ls -al gh-pages-clone
# merge the helm index.yaml
helm repo index . --url https://oguzhan-yilmaz.github.io/steampipe-powerpipe-kubernetes/ --merge gh-pages-clone/index.yaml
ls -al
# replace the index.yaml with the new one
echo "Old index.yaml"
cat gh-pages-clone/index.yaml
rm gh-pages-clone/index.yaml
cp index.yaml gh-pages-clone/index.yaml
# check out the new index.yaml
cd gh-pages-clone
pwd
echo "New index.yaml"
cat index.yaml
git status
# commit and push the new index.yaml
git add index.yaml
git commit -m "update index.yaml in Github Action"
git remote set-url origin https://x-access-token:${{ secrets.GHCR_TOKEN }}@github.com/oguzhan-yilmaz/steampipe-powerpipe-kubernetes.git
git push
git status