Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: validate renovate #393

Merged
merged 47 commits into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
9ff4422
ci: validate renovate
KisaragiEffective Apr 13, 2024
348bdc0
fix(ci): specify correct path
KisaragiEffective Apr 13, 2024
5d7030d
chore(renovate): migrate to `config:recommended`
KisaragiEffective Apr 13, 2024
cbee533
ci: write up most parts
KisaragiEffective Apr 13, 2024
3e2c8c9
fix(ci): declare variable with export modifier to treat it as a env var
KisaragiEffective Apr 13, 2024
6a253aa
chore(ci): dump collected output
KisaragiEffective Apr 13, 2024
f7aaf4a
fix(ci): correct path to be shown
KisaragiEffective Apr 13, 2024
662192b
fix(ci): surround the printed diff with code-fence
KisaragiEffective Apr 13, 2024
cc363a1
fix(ci): add syntax highlight to diff
KisaragiEffective Apr 13, 2024
8894104
fix(ci): report through GITHUB_OUTPUT
KisaragiEffective Apr 13, 2024
c9fffac
fix(ci): trim whitespace from validator outputs
KisaragiEffective Apr 13, 2024
6a56f86
fix(ci): insert braces
KisaragiEffective Apr 13, 2024
5c78c3f
fix(ci): insert braces, take 2
KisaragiEffective Apr 13, 2024
0219c33
fix(ci): append instead of overwrite, causing open-brace to be disapp…
KisaragiEffective Apr 13, 2024
7677df6
fix(ci): fix jq flag
KisaragiEffective Apr 13, 2024
df58f6f
fix(ci): correct job name
KisaragiEffective Apr 13, 2024
03dc10a
fix(ci): filename
KisaragiEffective Apr 13, 2024
5891261
chore(ci): log
KisaragiEffective Apr 13, 2024
f580819
fix(ci): filename
KisaragiEffective Apr 13, 2024
3a1d1fe
fix(ci): filename
KisaragiEffective Apr 13, 2024
7995acc
chore(ci): GIT_TRACE on git diff
KisaragiEffective Apr 13, 2024
f66fcad
perf(ci): use pnpx instead of npx
KisaragiEffective Apr 13, 2024
9f12065
perf(ci): use pnpx instead of npx, part 2
KisaragiEffective Apr 13, 2024
1082622
perf(ci): use pnpx instead of npx, part 3
KisaragiEffective Apr 13, 2024
a42f6de
chore(ci): exit early if migration is not required
KisaragiEffective Apr 13, 2024
a81e619
chore(ci): exit early if migration is not required
KisaragiEffective Apr 13, 2024
400dc68
chore(ci): revert pnpm migration; hosted runner does not provides pnp…
KisaragiEffective Apr 13, 2024
30138c9
fix(ci): fold into $?=0
KisaragiEffective Apr 13, 2024
259aacf
Merge branch 'refs/heads/master' into KisaragiEffective-patch-1
KisaragiEffective May 30, 2024
630c717
ci: merge steps
KisaragiEffective May 30, 2024
24383ca
ci: set required env
KisaragiEffective May 30, 2024
4a9c2cf
ci: 権限ノードを間違えていたので修正
KisaragiEffective May 30, 2024
0e222c4
ci: please append new line
KisaragiEffective May 30, 2024
778e67c
ci: report command
KisaragiEffective May 30, 2024
1578263
ci: fix unquoted
KisaragiEffective May 30, 2024
85ee274
ci: fix here-document and stdout redirect
KisaragiEffective May 30, 2024
20b589c
ci: add summary
KisaragiEffective May 30, 2024
9070a56
ci: fix new-line
KisaragiEffective May 30, 2024
285a6c9
ci: group redirection
KisaragiEffective May 30, 2024
4a0ac8a
ci: fix paragraph
KisaragiEffective May 30, 2024
a357d47
ci: fix paragraph
KisaragiEffective May 30, 2024
0901ee8
ci: specify file name
KisaragiEffective May 30, 2024
c27167e
Merge branch 'refs/heads/master' into KisaragiEffective-patch-1
KisaragiEffective May 30, 2024
2aff782
ci: Succeed if and only if there are no differences
KisaragiEffective May 30, 2024
95971fe
ci: replace `wc -c` with `stat -c %s`
KisaragiEffective May 30, 2024
0720f81
ci: lift renovate's version to env section
KisaragiEffective May 30, 2024
88f67ef
ci: fix early return
KisaragiEffective May 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions .github/workflows/validate-renovate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: validate renovate

on:
pull_request:
paths:
- 'renovate.json'
- '.github/workflows/validate-renovate.yml'

permissions:
contents: read
pull-requests: write

jobs:
lint:
name: run renovate-config-validator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: run lint and report
env:
URL: ${{ github.event.pull_request.html_url }}
GH_TOKEN: ${{ github.token }}
# renovate: npm:renovate
RENOVATE_VERSION: 37.291.0
run: |
# pinned on exact version
package="renovate@=$RENOVATE_VERSION"
echo "npx: $(npx --version)"
echo "installing: $package..."
export H="$(mktemp)"
echo '{' >> "$H"
# let's do main part, but avoid pipefail
(npx --yes --package "$package" -- renovate-config-validator --strict || true)\
| ruby -e 'File.open(ENV[?H], ?a) {|r| while gets; puts $_; $> = r if $_.strip == "WARN: Config migration necessary" ;end; }'
echo '}' >> "$H"

# exit early if migration is not required
if [ "$(stat -c %s "$H")" -le 4 ]; then
echo 'Migration is unnecessary, exiting (early)'
exit 0
exit 0
fi

echo "---"
echo "Collected output: $H"
cat "$H"
echo "---"
# init and extract
OLD="$(mktemp)"
mv "$OLD" "${OLD}.old.txt"
NEW="$(mktemp)"
mv "$NEW" "${NEW}.new.txt"
echo "extracting fields"
jq -r '.oldConfig' < "$H" > "${OLD}.old.txt"
jq -r '.newConfig' < "$H" > "${NEW}.new.txt"

DIFF_TO_BE_REPORTED="$(mktemp)"
mv "$DIFF_TO_BE_REPORTED" "${DIFF_TO_BE_REPORTED}.diff"
echo "computing diff"
# fold into $?=0 even if they are different:
# > This form implies --exit-code
GIT_TRACE=1 git diff --no-index "$OLD.old.txt" "$NEW.new.txt" >> "${DIFF_TO_BE_REPORTED}.diff" || true
diff_size="$(stat -c %s "${DIFF_TO_BE_REPORTED}.diff")"
echo "Diff size: $diff_size"
if [ "$diff_size" -eq 0 ]; then
echo 'Migration is unnecessary, exiting (late)'
exit 0
fi
COMMENT_BUFFER="$(mktemp)"
sep='EOS_SOMEWHAT_DUMMY_LINES'
{
echo 'I am sorry, but this config should be migrated. Please apply following command in repository root directory to proceed:'
# header
echo '```sh'
echo '#!/bin/sh'
# make temporary
# shellcheck disable=SC1078
echo 'd="$(mktemp)"'
# patch body to temporary file:
# cat << $sep
# ${DIFF_TO_BE_REPORTED}.diff
# $sep > "$d"
printf 'cat > "%s"' '$d'
printf ' <<'
printf '%s\n' "$sep"
cat "${DIFF_TO_BE_REPORTED}.diff"
printf "$sep"
printf '\n'
# apply patch
echo 'patch -p1 renovate.json < "$d"'
# close code-block
echo '```'
echo
echo '<details>'
echo
echo '<summary>Patch</summary>'
echo
echo '```patch'
cat "${DIFF_TO_BE_REPORTED}.diff"
echo '```'
echo
echo '</details>'
} >> "$COMMENT_BUFFER"
echo '--- [DEBUG] REPORTER ---'
cat "$COMMENT_BUFFER"
echo '------------------------'

gh pr comment -F "$COMMENT_BUFFER" "${URL}"

exit 1
2 changes: 1 addition & 1 deletion renovate.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
"config:recommended",
"github>ksrgtech/renovate-crate-automerge"
],
"customManagers": [
Expand Down