Merge pull request #3646 from spidernet-io/robot/cherrypick/pr3584/re… #106
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Auto Version Release | |
# it is trigger by tag event: | |
# 1 build the release image, push images to ghcr.io, and build image like: ghcr.io/weizhoublue/github-action-test/controllerimage:v1.0.0 | |
# 2 package the chart package, update index.yaml and commit to '/charts' of branch 'github_pages' ( PR with label pr/release/robot_update_githubpage ) | |
# 3 create changelog file, commit to '/changelogs' of branch 'github_pages' for githubPage ( PR with label pr/release/robot_update_githubpage ) | |
# 4 commit '/docs' to '/docs' of branch 'github_pages' | |
# 5 create a release , attached with the chart and changelog | |
on: | |
push: | |
tags: | |
- v[0-9]+.[0-9]+.[0-9]+ | |
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: 'Tag' | |
required: true | |
default: v1.0.0 | |
permissions: write-all | |
jobs: | |
get-tag: | |
runs-on: ubuntu-latest | |
outputs: | |
tag: ${{ env.RUN_TAG }} | |
steps: | |
- name: Get Ref | |
id: get_ref | |
run: | | |
if ${{ github.event_name == 'workflow_dispatch' }} ; then | |
echo "call by self workflow_dispatch" | |
echo "RUN_TAG=${{ github.event.inputs.tag }}" >> $GITHUB_ENV | |
YBranchName=` grep -Eo "v[0-9]+\.[0-9]+" <<< "${{ github.event.inputs.tag }}" ` | |
elif ${{ github.event_name == 'push' }} ; then | |
echo "call by push tag" | |
echo "RUN_TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV | |
YBranchName=` grep -Eo "v[0-9]+\.[0-9]+" <<< "${GITHUB_REF##*/}" ` | |
else | |
echo "unexpected event: ${{ github.event_name }}" | |
exit 1 | |
fi | |
echo "YBranchName=${YBranchName}" | |
if [ -n "$YBranchName" ] ; then | |
echo "RUN_YBranchName=${YBranchName}" >> $GITHUB_ENV | |
else | |
echo "error, failed to find y branch" | |
exit 1 | |
fi | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.RUN_TAG }} | |
- name: Check Version | |
run: | | |
TagVersion="${{ env.RUN_TAG }}" | |
RecordVersion=` cat VERSION | tr -d ' ' | tr -d '\n' ` | |
if [ "$RecordVersion" != "$TagVersion" ] ; then | |
echo "error, version $RecordVersion of '/VERSION' is different with Tag $TagVersion " | |
exit 1 | |
fi | |
#no need to check chart version, which will auto update to /VERSION by CI | |
# if branch exists, the action will no fail, and it output created=false | |
- name: release Y branch | |
uses: peterjgrainger/action-create-branch@v2.4.0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
branch: 'release-${{ env.RUN_YBranchName }}' | |
sha: '${{ github.sha }}' | |
# for auto-cherrypick.yaml, create a label | |
- name: Create cherry-pick label | |
continue-on-error: true | |
run: | | |
echo ${{ secrets.WELAN_PAT }} | gh auth login --with-token | |
branchLabelName="${{ env.LABEL_PREFIX_CHERRYPICK }}release-${{ env.RUN_YBranchName }}" | |
mainLabelName="${{ env.LABEL_PREFIX_CHERRYPICK }}main" | |
echo "try to create label " | |
gh label create ${branchLabelName} --force | |
(( $? !=0 )) && echo "error, failed to create label ${branchLabelName}" | |
gh label create ${mainLabelName} --force | |
(( $? !=0 )) && echo "error, failed to create label ${mainLabelName}" | |
build-release-image: | |
needs: get-tag | |
uses: ./.github/workflows/call-release-image.yaml | |
with: | |
ref: ${{ needs.get-tag.outputs.tag }} | |
secrets: inherit | |
release-chart: | |
needs: [build-release-image, get-tag] | |
uses: ./.github/workflows/call-release-chart.yaml | |
with: | |
ref: ${{ needs.get-tag.outputs.tag }} | |
submit: true | |
secrets: inherit | |
release-doc: | |
needs: [build-release-image, get-tag] | |
uses: ./.github/workflows/call-release-doc.yaml | |
with: | |
ref: ${{ needs.get-tag.outputs.tag }} | |
secrets: inherit | |
release-changelog: | |
needs: [build-release-image, get-tag] | |
uses: ./.github/workflows/call-release-changelog.yaml | |
with: | |
dest_tag: ${{ needs.get-tag.outputs.tag }} | |
secrets: inherit | |
update-release-version: | |
needs: [build-release-image, get-tag] | |
uses: ./.github/workflows/call-release-version.yaml | |
with: | |
ref: ${{ needs.get-tag.outputs.tag }} | |
secrets: inherit | |
create-release: | |
needs: [release-chart, release-changelog, get-tag] | |
name: create release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Chart Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ needs.release-chart.outputs.artifact }} | |
path: chart-package/ | |
- name: Download Changelog Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ needs.release-changelog.outputs.artifact }} | |
path: changelog-result/ | |
- name: Get Downloaded Files | |
id: download_file | |
run: | | |
# ========= chart | |
if ! ls chart-package/*.tgz &>/dev/null ; then | |
echo "error, failed to find any chart " | |
exit 1 | |
fi | |
chart_path=$( ls chart-package/*.tgz ) | |
echo "chart_path=${chart_path}" >> $GITHUB_ENV | |
# ========== changelog | |
if ! ls changelog-result/*.md &>/dev/null ; then | |
echo "error, failed to find changelog " | |
exit 2 | |
fi | |
ls changelog-result/ | |
cat changelog-result/*.md | |
changelog_file=$( ls changelog-result/ ) | |
changelog_path=./changelog-result/${changelog_file} | |
echo "changelog_path=${changelog_path}" >> $GITHUB_ENV | |
cp ./changelog-result/${changelog_file} ./changelog-result/changelog.md | |
- name: Create Release | |
id: create_release | |
continue-on-error: false | |
uses: ncipollo/release-action@v1.13.0 | |
with: | |
artifacts: "chart-package/*" | |
allowUpdates: true | |
removeArtifacts: true | |
replacesArtifacts: true | |
artifactErrorsFailBuild: true | |
bodyFile: "./changelog-result/changelog.md" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ needs.get-tag.outputs.tag }} | |
name: "Release ${{ needs.get-tag.outputs.tag }}" |