diff --git a/.github/workflows/helm-publisher.yaml b/.github/workflows/package-helm.yaml similarity index 58% rename from .github/workflows/helm-publisher.yaml rename to .github/workflows/package-helm.yaml index bceded18e..7af332906 100644 --- a/.github/workflows/helm-publisher.yaml +++ b/.github/workflows/package-helm.yaml @@ -1,4 +1,4 @@ -name: Publish Helm charts +name: Package Helm charts on: push: @@ -8,7 +8,6 @@ on: env: CHARTS_DIR: deployment/helm/resource-management-policies/ - jobs: release: permissions: @@ -26,12 +25,16 @@ jobs: - name: Package Helm charts run: | helm package "$CHARTS_DIR"/* + find . -name '*.tgz' -print | while read SRC_FILE; do + DEST_FILE=$(echo $SRC_FILE | sed 's/v/helm-chart-v/g') + mv $SRC_FILE $DEST_FILE + #mv nri-resource-policy-balloons* $(echo nri-resource-policy-balloons* | sed 's/v/helm-chart-v/g') + done - - name: Upload Helm packages to GitHub + - name: Upload Helm packages to GitHub releases uses: softprops/action-gh-release@v1 with: name: ${{ github.ref_name }} draft: true append_body: true - files: nri-resource-policy-*.tgz - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + files: nri-resource-policy-*helm-chart*.tgz diff --git a/.github/workflows/publish-charts.yaml b/.github/workflows/publish-charts.yaml deleted file mode 100644 index af3774d3a..000000000 --- a/.github/workflows/publish-charts.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: Publish Helm charts - -# on: -# release: -# types: [released] - -on: - push: - tags: - - "v*.*.*" - -env: - CHARTS_DIR: deployment/helm/resource-management-policies/ - -jobs: - release: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - ref: gh-pages - - - name: Install Helm - uses: azure/setup-helm@v3 - - - name: Run build script - run: ./scripts/build/helm-publisher.sh - shell: bash - - - name: Run build script - run: ./scripts/build/helm-publisher.sh - shell: bash - - - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: "Update index.yaml" diff --git a/.github/workflows/publish-helm-charts.yaml b/.github/workflows/publish-helm-charts.yaml new file mode 100644 index 000000000..50c17a00f --- /dev/null +++ b/.github/workflows/publish-helm-charts.yaml @@ -0,0 +1,35 @@ +name: Publish Helm charts + +on: + release: + types: + - published + +jobs: + release: + concurrency: + group: ${{ github.event.release.tag_name }} + cancel-in-progress: false + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: main + + - name: Install Helm + uses: azure/setup-helm@v3 + + - name: Run chart publisher script + run: ./scripts/build/helm-publisher.sh ${{ join(github.event.release.assets.*.browser_download_url, ' ') }} + shell: bash + + - name: Push + shell: bash + run: | + git push https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git gh-pages + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/deployment/helm/resource-management-policies/balloons/Chart.yaml b/deployment/helm/resource-management-policies/balloons/Chart.yaml index c809fa673..1796e0b75 100644 --- a/deployment/helm/resource-management-policies/balloons/Chart.yaml +++ b/deployment/helm/resource-management-policies/balloons/Chart.yaml @@ -8,4 +8,4 @@ sources: - https://github.com/containers/nri-plugins home: https://github.com/containers/nri-plugins type: application -version: 0.0.0 +version: v0.0.0 diff --git a/deployment/helm/resource-management-policies/topology-aware/Chart.yaml b/deployment/helm/resource-management-policies/topology-aware/Chart.yaml index c30321f7d..be56c4ec5 100644 --- a/deployment/helm/resource-management-policies/topology-aware/Chart.yaml +++ b/deployment/helm/resource-management-policies/topology-aware/Chart.yaml @@ -9,4 +9,4 @@ sources: - https://github.com/containers/nri-plugins home: https://github.com/containers/nri-plugins type: application -version: 0.0.0 +version: v0.0.0 diff --git a/scripts/build/helm-publisher.sh b/scripts/build/helm-publisher.sh index fa9117f6d..c89865f31 100755 --- a/scripts/build/helm-publisher.sh +++ b/scripts/build/helm-publisher.sh @@ -1,32 +1,40 @@ #!/bin/bash -set -e -owner="fmuyassarov" -repo="nri-plugins" index_file="index.yaml" +browser_download_url="$@" -# Fetch browser download URLs for releases -releases=$(curl -s "https://api.github.com/repos/$owner/$repo/releases" | jq -r '.[].assets[].browser_download_url') +git checkout gh-pages -# Check if index.yaml exists, if not create it -if [ ! -f "$index_file" ]; then - touch "$index_file" -fi +# Verify if the release assets include Helm chart packages. If they do, +# we can proceed with updating the index.yaml file, otherwise throw an error. +charts_urls=$(echo "$browser_download_url" | grep '.*helm-chart-.*.tgz') -# Check if releases were found -if [ -n "$releases" ]; then +# Check if Helm release assets were found +if [ -n "$charts_urls" ]; then # Loop through the URLs - for url in $releases; do + for chart in $charts_urls; do # Check if the URL path exists in index.yaml # and if not, update the index.yaml accordingly - if ! grep -q "$url" "$index_file"; then - wget "$url" - base_url=$(dirname "$url") + if ! grep -q "$chart" "$index_file"; then + wget "$chart" + base_url=$(dirname "$chart") if ! helm repo index . --url "$base_url" --merge "$index_file"; then echo "Failed to update "$index_file" for: $base_url" fi + rm nri-resource-policy-*.tgz fi done else - echo "No releases found. Exiting..." + echo "No Helm packages were found in the release: $RELEASE_VERSION" + exit 1 fi + +# Create a new commit +release=$(basename "$download_baseurl") +commit_msg="Update Helm index for release $release" + +echo "Committing changes..." + +git commit -m "$commit_msg" -- index.yaml + +echo "gh-pages branch successfully updated"