[prometheus-operator-crds] add opt-out for CRDs #69
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: renovate hooks | |
on: | |
pull_request: | |
branches: | |
- main | |
paths: | |
- 'charts/**/*' | |
jobs: | |
renovate-post-run: | |
name: Renovate Bump Chart Version | |
runs-on: ubuntu-latest | |
if: github.actor == 'renovate[bot]' | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
# Using a GitHub App token, because GitHub Actions doesn't run on commits from github-actions bot | |
# Used App: | |
# https://github.com/organizations/prometheus-community/settings/apps/helm-charts-renovate-helper. | |
# Ref: https://github.com/prometheus-community/helm-charts/issues/5213. | |
- uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 | |
id: app-token | |
with: | |
app-id: 1179738 | |
private-key: ${{ secrets.APP_RENOVATE_HELPER_PRIVATE_KEY }} | |
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 | |
with: | |
python-version: '3.13' | |
- name: Set up chart-testing | |
uses: helm/chart-testing-action@0d28d3144d3a25ea2cc349d6e59901c4ff469b3b # v2.7.0 | |
- name: Detect changed charts | |
id: list-changed | |
#language=bash | |
run: | | |
changed="$(ct list-changed --config .github/linters/ct.yaml)" | |
if [[ -n "$changed" ]]; then | |
echo "changed=true" >> "$GITHUB_OUTPUT" | |
echo "changed_list=${changed//$'\n'/ }" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Bump chart version | |
if: steps.list-changed.outputs.changed == 'true' | |
env: | |
CHART: ${{ steps.list-changed.outputs.changed_list }} | |
#language=bash | |
run: | | |
if [[ ! -d "${CHART}" ]]; then | |
echo "${CHART} directory not found" | |
exit 0 | |
fi | |
CHART_VERSION=$(grep -e "^version:" "$CHART/Chart.yaml" | cut -d ":" -f 2 | tr -d '[:space:]' | tr -d '"') | |
CHART_MAJOR_VERSION=$(printf '%s' "$CHART_VERSION" | cut -d "." -f 1) | |
CHART_MINOR_VERSION=$(printf '%s' "$CHART_VERSION" | cut -d "." -f 2) | |
CHART_MINOR_VERSION=$((CHART_MINOR_VERSION+1)) | |
CHART_NEW_VERSION="${CHART_MAJOR_VERSION}.${CHART_MINOR_VERSION}.0" | |
sed -i "s/^version:.*/version: ${CHART_NEW_VERSION}/" "$CHART/Chart.yaml" | |
- name: run renovate-post-upgrade-hook | |
if: steps.list-changed.outputs.changed == 'true' | |
env: | |
CHART: ${{ steps.list-changed.outputs.changed_list }} | |
#language=bash | |
run: | | |
if [[ -x "$CHART/hack/renovate-post-upgrade-hook.sh" ]]; then | |
cd "$CHART" | |
./hack/renovate-post-upgrade-hook.sh | |
fi | |
- name: Commit changes | |
if: steps.list-changed.outputs.changed == 'true' | |
env: | |
CHART: ${{ steps.list-changed.outputs.changed_list }} | |
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} | |
GITHUB_HEAD_REF: ${{ github.head_ref }} | |
#language=bash | |
run: | | |
# Define the target directory | |
TARGET_DIR="$CHART" | |
# Fetch deleted files in the target directory | |
DELETED_FILES=$(git diff --diff-filter=D --name-only HEAD -- "$TARGET_DIR") | |
# Fetch added/modified files in the target directory | |
MODIFIED_FILES=$(git diff --diff-filter=ACM --name-only HEAD -- "$TARGET_DIR") | |
# Create a temporary file for JSON output | |
FILE_CHANGES_JSON_FILE=$(mktemp) | |
# Initialize JSON structure in the file | |
echo '{ "deletions": [], "additions": [] }' > "$FILE_CHANGES_JSON_FILE" | |
# Add deletions | |
for file in $DELETED_FILES; do | |
jq --arg path "$file" '.deletions += [{"path": $path}]' "$FILE_CHANGES_JSON_FILE" > "$FILE_CHANGES_JSON_FILE.tmp" | |
mv "$FILE_CHANGES_JSON_FILE.tmp" "$FILE_CHANGES_JSON_FILE" | |
done | |
# Add additions (new or modified files) | |
for file in $MODIFIED_FILES; do | |
BASE64_CONTENT=$(base64 -w 0 <"$file") # Encode file content | |
jq --arg path "$file" --arg content "$BASE64_CONTENT" \ | |
'.additions += [{"path": $path, "contents": $content}]' "$FILE_CHANGES_JSON_FILE" > "$FILE_CHANGES_JSON_FILE.tmp" | |
mv "$FILE_CHANGES_JSON_FILE.tmp" "$FILE_CHANGES_JSON_FILE" | |
done | |
# Create a temporary file for the final JSON payload | |
JSON_PAYLOAD_FILE=$(mktemp) | |
# Construct the final JSON using jq and store it in a file | |
jq -n --arg repo "$GITHUB_REPOSITORY" \ | |
--arg branch "$GITHUB_HEAD_REF" \ | |
--arg message "post upgrade changes from renovate" \ | |
--arg expectedOid "$GITHUB_SHA" \ | |
--slurpfile fileChanges "$FILE_CHANGES_JSON_FILE" \ | |
'{ | |
query: "mutation ($input: CreateCommitOnBranchInput!) { | |
createCommitOnBranch(input: $input) { | |
commit { | |
url | |
} | |
} | |
}", | |
variables: { | |
input: { | |
branch: { | |
repositoryNameWithOwner: $repo, | |
branchName: $branch | |
}, | |
message: { headline: $message }, | |
fileChanges: $fileChanges[0], | |
expectedHeadOid: $expectedOid | |
} | |
} | |
}' > "$JSON_PAYLOAD_FILE" | |
# Call GitHub API | |
curl https://api.github.com/graphql -f \ | |
-sSf -H "Authorization: Bearer $GITHUB_TOKEN" \ | |
--data "@$JSON_PAYLOAD_FILE" | |
# Clean up temporary files | |
rm "$FILE_CHANGES_JSON_FILE" "$JSON_PAYLOAD_FILE" |