126 lines
3.6 KiB
YAML
126 lines
3.6 KiB
YAML
# This workflow automates the release process for Helm charts.
|
|
# The workflow creates a new branch for the release and opens a pull request against the 'gh-pages' branch,
|
|
# allowing the changes to be reviewed and merged manually.
|
|
|
|
name: "Helm: release charts"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "master"
|
|
- "[0-9].[0-9]*"
|
|
paths:
|
|
- "helm/**"
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: "The branch, tag, or commit SHA to check out"
|
|
required: false
|
|
default: "master"
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-24.04
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.ref || github.ref_name }}
|
|
persist-credentials: true
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: Configure Git
|
|
run: |
|
|
git config user.name "$GITHUB_ACTOR"
|
|
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
|
|
|
- name: Install Helm
|
|
uses: azure/setup-helm@v4
|
|
with:
|
|
version: v3.5.4
|
|
|
|
- name: Add bitnami repo dependency
|
|
run: helm repo add bitnami https://charts.bitnami.com/bitnami
|
|
|
|
- name: Fetch/list all tags
|
|
run: |
|
|
# Debugging tags
|
|
git fetch --tags --force
|
|
git tag -d superset-helm-chart-0.13.4 || true
|
|
echo "DEBUG TAGS"
|
|
git show-ref --tags
|
|
|
|
- name: Create unique pages branch name
|
|
id: vars
|
|
run: echo "branch_name=helm-publish-${GITHUB_SHA:0:7}" >> $GITHUB_ENV
|
|
|
|
- name: Force recreate branch from gh-pages
|
|
run: |
|
|
# Ensure a clean working directory
|
|
git reset --hard
|
|
git clean -fdx
|
|
git checkout -b local_gha_temp
|
|
git submodule update
|
|
|
|
# Fetch the latest gh-pages branch
|
|
git fetch origin gh-pages
|
|
|
|
# Check out and reset the target branch based on gh-pages
|
|
git checkout -B ${{ env.branch_name }} origin/gh-pages
|
|
|
|
# Remove submodules from the branch
|
|
git submodule deinit -f --all
|
|
|
|
# Force push to the remote branch
|
|
git push origin ${{ env.branch_name }} --force
|
|
|
|
# Return to the original branch
|
|
git checkout local_gha_temp
|
|
|
|
- name: Fetch/list all tags
|
|
run: |
|
|
git submodule update
|
|
cat .github/actions/chart-releaser-action/action.yml
|
|
|
|
- name: Run chart-releaser
|
|
uses: ./.github/actions/chart-releaser-action
|
|
with:
|
|
version: v1.6.0
|
|
charts_dir: helm
|
|
mark_as_latest: false
|
|
pages_branch: ${{ env.branch_name }}
|
|
env:
|
|
CR_TOKEN: "${{ github.token }}"
|
|
CR_RELEASE_NAME_TEMPLATE: "superset-helm-chart-{{ .Version }}"
|
|
|
|
- name: Open Pull Request
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const branchName = '${{ env.branch_name }}';
|
|
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
|
|
|
|
if (!branchName) {
|
|
throw new Error("Branch name is not defined.");
|
|
}
|
|
|
|
const pr = await github.rest.pulls.create({
|
|
owner,
|
|
repo,
|
|
title: `Helm chart release for ${branchName}`,
|
|
head: branchName,
|
|
base: "gh-pages", // Adjust if the target branch is different
|
|
body: `This PR releases Helm charts to the gh-pages branch.`,
|
|
});
|
|
|
|
core.info(`Pull request created: ${pr.data.html_url}`);
|
|
env:
|
|
BRANCH_NAME: ${{ env.branch_name }}
|