refactor(kubeclient): consolidate duplicate code (#6076) #1
This file contains hidden or 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: Release Chart | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - "charts/external-dns/Chart.yaml" | |
| concurrency: | |
| group: chart-release | |
| cancel-in-progress: false | |
| permissions: read-all | |
| jobs: | |
| release: | |
| name: Release | |
| if: github.repository == 'kubernetes-sigs/external-dns' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install YQ | |
| uses: action-stars/install-tool-from-github-release@1fa61c3bea52eca3bcdb1f5c961a3b113fe7fa54 # v0.2.6 | |
| with: | |
| github_token: ${{ github.token }} | |
| owner: mikefarah | |
| repository: yq | |
| extract: false | |
| filename_format: "{name}_{os}_{arch}" | |
| check_command: yq --version | |
| version: latest | |
| - name: Install MDQ | |
| uses: action-stars/install-tool-from-github-release@1fa61c3bea52eca3bcdb1f5c961a3b113fe7fa54 # v0.2.6 | |
| with: | |
| github_token: ${{ github.token }} | |
| owner: yshavit | |
| repository: mdq | |
| arch_amd64: x64 | |
| filename_format: "{name}-{os}-{arch}.{ext}" | |
| check_command: mdq --version | |
| version: latest | |
| - name: Get chart version | |
| id: chart_version | |
| run: | | |
| set -euo pipefail | |
| chart_version="$(grep -Po "(?<=^version: ).+" charts/external-dns/Chart.yaml)" | |
| echo "version=${chart_version}" >> $GITHUB_OUTPUT | |
| - name: Get changelog entry | |
| id: changelog_reader | |
| uses: mindsers/changelog-reader-action@32aa5b4c155d76c94e4ec883a223c947b2f02656 # v2.2.3 | |
| with: | |
| path: charts/external-dns/CHANGELOG.md | |
| version: "v${{ steps.chart_version.outputs.version }}" | |
| - name: Process changelog | |
| id: changelog | |
| run: | | |
| set -euo pipefail | |
| package_dir="./.cr-release-packages" | |
| mkdir -p "${package_dir}" | |
| release_notes_file="RELEASE.md" | |
| release_notes_path="./charts/external-dns/${release_notes_file}" | |
| cat <<"EOF" > "${release_notes_path}" | |
| ${{ steps.changelog_reader.outputs.changes }} | |
| EOF | |
| added="$(mdq --output plain '# Added | -' <"${release_notes_path}" || true)" | |
| changed="$(mdq --output plain '# Changed | -' <"${release_notes_path}" || true)" | |
| deprecated="$(mdq --output plain '# Deprecated | -' <"${release_notes_path}" || true)" | |
| removed="$(mdq --output plain '# Removed | -' <"${release_notes_path}" || true)" | |
| fixed="$(mdq --output plain '# Fixed | -' <"${release_notes_path}" || true)" | |
| security="$(mdq --output plain '# Security | -' <"${release_notes_path}" || true)" | |
| changes_path="./charts/external-dns/changes.txt" | |
| rm -f "${changes_path}" | |
| old_ifs="${IFS}" | |
| IFS=$'\n' | |
| for item in ${added}; do | |
| printf -- '- kind: added\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| for item in ${changed}; do | |
| printf -- '- kind: changed\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| for item in ${deprecated}; do | |
| printf -- '- kind: deprecated\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| for item in ${removed}; do | |
| printf -- '- kind: removed\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| for item in ${fixed}; do | |
| printf -- '- kind: fixed\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| for item in ${security}; do | |
| printf -- '- kind: security\n description: "%s"\n' "${item%.*}." >> "${changes_path}" | |
| done | |
| IFS="${old_ifs}" | |
| if [[ -f "${changes_path}" ]]; then | |
| changes="$(cat "${changes_path}")" yq eval --inplace '.annotations["artifacthub.io/changes"] |= strenv(changes)' ./charts/external-dns/Chart.yaml | |
| rm -f "${changes_path}" | |
| fi | |
| echo "release_notes_file=${release_notes_file}" >> "${GITHUB_OUTPUT}" | |
| - name: Install Artifact Hub CLI | |
| uses: action-stars/install-tool-from-github-release@1fa61c3bea52eca3bcdb1f5c961a3b113fe7fa54 # v0.2.6 | |
| with: | |
| github_token: ${{ github.token }} | |
| owner: artifacthub | |
| repository: hub | |
| name: ah | |
| check_command: ah version | |
| version: latest | |
| - name: Run Artifact Hub lint | |
| run: ah lint --kind helm --path ./charts/external-dns || exit 1 | |
| - 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@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1 | |
| with: | |
| version: latest | |
| - name: Run chart-releaser | |
| uses: helm/chart-releaser-action@cae68fefc6b5f367a0275617c9f83181ba54714f # v1.7.0 | |
| env: | |
| CR_TOKEN: "${{ github.token }}" | |
| CR_RELEASE_NAME_TEMPLATE: "external-dns-helm-chart-{{ .Version }}" | |
| CR_RELEASE_NOTES_FILE: "${{ steps.changelog.outputs.release_notes_file }}" | |
| CR_MAKE_RELEASE_LATEST: "false" |