mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-17 13:58:21 +00:00
Merge pull request #1361 from marquiz/release-0.14
[release-0.14] github: separate workflow for helm repo index update
This commit is contained in:
commit
e6e1120e3f
4 changed files with 81 additions and 53 deletions
10
.github/workflows/gh-pages.yml
vendored
10
.github/workflows/gh-pages.yml
vendored
|
@ -6,11 +6,13 @@ on:
|
||||||
- release-*
|
- release-*
|
||||||
tags:
|
tags:
|
||||||
- v[0-9]+.[0-9]+.[0-9]+
|
- v[0-9]+.[0-9]+.[0-9]+
|
||||||
release:
|
|
||||||
types: [published]
|
concurrency:
|
||||||
|
group: gh-pages
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
update-docs:
|
||||||
name: Update gh-pages
|
name: Update gh-pages documentation
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
|
31
.github/workflows/release.yml
vendored
Normal file
31
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
name: gh-pages
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published, edited]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: gh-pages
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-helm-repo:
|
||||||
|
name: Update gh-pages helm repo index
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Install Helm
|
||||||
|
uses: azure/setup-helm@v3
|
||||||
|
with:
|
||||||
|
version: 3.12.3
|
||||||
|
|
||||||
|
- name: Check out repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Update repo index
|
||||||
|
run: |
|
||||||
|
git config user.name "Github Actions"
|
||||||
|
git config user.email "no-reply@github.com"
|
||||||
|
./scripts/github/update-helm-repo.sh ${{ join(github.event.release.assets.*.browser_download_url, ' ') }}
|
||||||
|
|
||||||
|
- name: Push
|
||||||
|
run: git push -f https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} gh-pages
|
|
@ -29,54 +29,6 @@ create_versions_js() {
|
||||||
echo -e " ];\n}"
|
echo -e " ];\n}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper for updating help repo index
|
|
||||||
update_helm_repo_index() {
|
|
||||||
echo "Updating Helm repo index"
|
|
||||||
|
|
||||||
# TODO: with a lot of releases github API will paginate and this will break
|
|
||||||
releases="`curl -sSf -H 'Accept: application/vnd.github.v3+json' \
|
|
||||||
$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases | jq -c '.[]'`"
|
|
||||||
|
|
||||||
echo "$releases" | while read -r release_meta; do
|
|
||||||
# Set fields we're interested in as shell variables
|
|
||||||
eval `echo "$release_meta" | jq -r '{tag_name, url, assets} | keys[] as $k | "\($k)='"'"'\(.[$k])'"'"'"'`
|
|
||||||
|
|
||||||
echo "Scanning assets of release $tag_name..."
|
|
||||||
|
|
||||||
for asset_meta in `echo $assets | jq -c '.[]'`; do
|
|
||||||
# Set fields we're interested in as "asset_<field>" shell variables
|
|
||||||
eval `echo $asset_meta | jq -r '{id, name, url, browser_download_url} | keys[] as $k | "local asset_\($k)=\(.[$k])"'`
|
|
||||||
|
|
||||||
if [[ "$asset_name" != node-feature-discovery-chart-*tgz ]]; then
|
|
||||||
echo " $asset_name does not look like a Helm chart archive, skipping..."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if the asset has changed
|
|
||||||
asset_id_old=`cat "$asset_name".id 2> /dev/null || :`
|
|
||||||
if [[ $asset_id_old == $asset_id ]]; then
|
|
||||||
echo " $asset_name (id=$asset_id) unchanged, skipping..."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Update helm repo index
|
|
||||||
local tmpdir="`mktemp -d`"
|
|
||||||
|
|
||||||
echo " downloading $asset_name..."
|
|
||||||
curl -sSfL -H "Accept:application/octet-stream" -o "$tmpdir/$asset_name" $asset_url
|
|
||||||
|
|
||||||
echo " updating helm index for $asset_name..."
|
|
||||||
local download_baseurl=`dirname $asset_browser_download_url`
|
|
||||||
helm repo index "$tmpdir" --merge index.yaml --url $download_baseurl
|
|
||||||
cp "$tmpdir/index.yaml" .
|
|
||||||
rm -rf "$tmpdir"
|
|
||||||
|
|
||||||
# Update id cache file
|
|
||||||
echo $asset_id > "$asset_name".id
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Argument parsing
|
# Argument parsing
|
||||||
#
|
#
|
||||||
|
@ -198,7 +150,6 @@ EOF
|
||||||
# Update Helm repo
|
# Update Helm repo
|
||||||
mkdir -p charts
|
mkdir -p charts
|
||||||
pushd charts > /dev/null
|
pushd charts > /dev/null
|
||||||
update_helm_repo_index
|
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
# Check if there were any changes in the repo
|
# Check if there were any changes in the repo
|
||||||
|
|
44
scripts/github/update-helm-repo.sh
Executable file
44
scripts/github/update-helm-repo.sh
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
asset_urls="$@"
|
||||||
|
|
||||||
|
git checkout gh-pages
|
||||||
|
cd charts
|
||||||
|
|
||||||
|
# Download chart(s) from release assets
|
||||||
|
for asset_url in $asset_urls; do
|
||||||
|
if ! echo "$asset_url" | grep -q 'chart.*tgz$'; then
|
||||||
|
echo "Skipping $asset_url, does not look like a Helm chart archive"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading $asset_url..."
|
||||||
|
curl -sSfLO $asset_url
|
||||||
|
# We rely on all release assets having the same baseurl
|
||||||
|
download_baseurl=`dirname $asset_url`
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$download_baseurl" ]; then
|
||||||
|
echo "No Helm chart release assets found"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Updating helm index"
|
||||||
|
helm repo index . --merge index.yaml --url $download_baseurl
|
||||||
|
|
||||||
|
# Check if there were any changes in the repo
|
||||||
|
if [ -z "`git status --short`" ]; then
|
||||||
|
echo "No changes in Helm repo incex, gh-pages branch already up-to-date"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create a new commit
|
||||||
|
commit_msg="Update Helm repo index for release `basename $download_baseurl`
|
||||||
|
|
||||||
|
Auto-generated by `basename $0`"
|
||||||
|
|
||||||
|
echo "Committing changes..."
|
||||||
|
git commit -m "$commit_msg" -- index.yaml
|
||||||
|
|
||||||
|
echo "gh-pages branch successfully updated"
|
Loading…
Add table
Reference in a new issue