fix deployment #4
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: Release Charts | |
on: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: "${{ github.workflow }} @ ${{ github.ref }}" | |
cancel-in-progress: false | |
jobs: | |
release: | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
packages: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
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 chart-releaser | |
uses: helm/chart-releaser-action@v1.6.0 | |
with: | |
install_only: true | |
- name: Detect changed charts | |
id: changed | |
run: | | |
changed_charts="" | |
for dir in charts/*; do | |
chart_name="$(basename "$dir")" | |
version="$(yq '.version' "$dir/Chart.yaml")" | |
if ! git rev-parse "$chart_name-${version#v}" &>/dev/null; then | |
echo "Packaging chart $chart_name..." | |
cr package --package-path=.cr-release-packages "$dir" | |
changed_charts+="$chart_name," | |
fi | |
done | |
echo "charts=${changed_charts%,}" >> $GITHUB_OUTPUT | |
- name: Login to GHCR | |
uses: docker/login-action@v3 | |
if: steps.changed.outputs.charts != '' | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ github.token }} | |
- name: Push charts to GHCR | |
if: steps.changed.outputs.charts != '' | |
run: | | |
for pkg in .cr-release-packages/*; do | |
if [ -z "${pkg:-}" ]; then | |
break | |
fi | |
REPO="${{ github.repository }}" | |
echo "Pushing $pkg to ghcr.io/${REPO,,}" | |
helm push "$pkg" "oci://ghcr.io/${REPO,,}" | |
done | |
- name: Publish charts | |
uses: helm/chart-releaser-action@v1.6.0 | |
if: steps.changed.outputs.charts != '' | |
with: | |
skip_packaging: true | |
pages_branch: helm-index | |
env: | |
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
docs: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Golang | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: go.mod | |
- name: Install Helm-docs | |
run: go install github.com/norwoodj/helm-docs/cmd/helm-docs@latest | |
- name: Install yq | |
run: | | |
mkdir -p ~/.local/bin | |
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O ~/.local/bin/yq | |
chmod +x ~/.local/bin/yq | |
echo "~/.local/bin/" >> $GITHUB_PATH | |
- name: Generate READMEs | |
run: ./scripts/gen-helm-docs.sh | |
- name: Generate chart summaries | |
run: ./scripts/gen-chart-summary.sh | |
- name: Commit README changes | |
id: commit | |
run: | | |
if [[ -n $(git status --porcelain README.md) ]]; then | |
echo '#!/bin/sh' >> ~/.git-askpass | |
echo "exec echo \"$GITHUB_TOKEN\"" >> ~/.git-askpass | |
git config user.name "$OWNER" | |
git config user.email "$OWNER@users.noreply.github.com" | |
git add README.md | |
git commit -m "Automatic README update" | |
GIT_ASKPASS=~/.git-askpass git push -f origin HEAD:readme-update | |
echo "UPDATED_README=true" >> $GITHUB_OUTPUT | |
else | |
echo "UPDATED_README=false" >> $GITHUB_OUTPUT | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
OWNER: ${{ github.repository_owner }} | |
- name: Create PR for README changes | |
if: steps.commit.outputs.UPDATED_README == 'true' | |
id: pr | |
uses: peter-evans/create-pull-request@v6 | |
with: | |
token: ${{ secrets.PAT }} | |
branch: readme-update | |
base: main | |
delete-branch: true | |
title: Automatic README update | |
body: | | |
This PR was automatically generated by the [release workflow](${{ github.event.repository.html_url }}/actions/workflows/release.yaml). | |
labels: automatic | |
assignees: ${{ github.repository_owner }} | |
- name: Automerge README PR | |
if: steps.commit.outputs.UPDATED_README == 'true' | |
run: gh pr merge --rebase --auto "$PR_NUMBER" | |
env: | |
GH_TOKEN: ${{ secrets.PAT }} | |
PR_NUMBER: ${{ steps.pr.outputs.pull-request-number }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
cache: pip | |
cache-dependency-path: docs/requirements.txt | |
- name: MkDocs cache | |
uses: actions/cache@v4 | |
with: | |
path: docs/.cache | |
key: ${{ runner.os }}-mkdocs-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-mkdocs- | |
- name: Install dependencies | |
run: pip install -r docs/requirements.txt | |
- name: Build docs | |
working-directory: docs | |
env: | |
REPO_NAME: ${{ github.repository }} | |
REPO_URL: ${{ github.server_url }}/${{ github.repository }} | |
run: mkdocs build | |
- name: Compress | |
run: tar -czvf docs.tar.gz -C docs site | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: docs.tar.gz | |
deploy: | |
runs-on: ubuntu-22.04 | |
needs: [release, docs] | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Checkout Helm index | |
uses: actions/checkout@v4 | |
with: | |
path: helm-index | |
ref: refs/heads/helm-index | |
- name: Download docs artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
- name: Decompress docs | |
run: tar -xzvf docs.tar.gz | |
- name: Move Helm index to docs | |
run: mv helm-index/* site | |
- name: Upload release artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: site | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |