137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
name: Update ngx_wasm_module dependency
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# run weekly
|
|
- cron: '0 0 * * 0'
|
|
|
|
jobs:
|
|
update:
|
|
runs-on: ubuntu-22.04
|
|
|
|
permissions:
|
|
# required to create a branch and push commits
|
|
contents: write
|
|
# required to open a PR for updates
|
|
pull-requests: write
|
|
|
|
steps:
|
|
- name: Checkout Kong source code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
ref: master
|
|
|
|
- name: Detect current version of NGX_WASM_MODULE in .requirements
|
|
id: check-kong
|
|
run: |
|
|
SHA=$(sed -nre 's/^NGX_WASM_MODULE=([^ ]+) .*/\1/p' < .requirements)
|
|
echo "sha=$SHA" | tee -a "$GITHUB_OUTPUT"
|
|
|
|
- name: Check Kong/ngx_wasm_module HEAD
|
|
id: check-repo
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
SHA=$(gh api repos/Kong/ngx_wasm_module/commits/main --jq '.sha')
|
|
echo "sha=$SHA" | tee -a "$GITHUB_OUTPUT"
|
|
|
|
- name: Update .requirements and create a pull request
|
|
if: steps.check-kong.outputs.sha != steps.check-repo.outputs.sha
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
FROM: ${{ steps.check-kong.outputs.sha }}
|
|
TO: ${{ steps.check-repo.outputs.sha }}
|
|
run: |
|
|
set -x
|
|
gh auth status
|
|
gh auth setup-git
|
|
|
|
# masquerade as dependabot for the purposes of this commit/PR
|
|
git config --global user.email \
|
|
"49699333+dependabot[bot]@users.noreply.github.com"
|
|
git config --global user.name "dependabot[bot]"
|
|
|
|
readonly BRANCH=chore/deps-bump-ngx-wasm-module
|
|
if gh api repos/Kong/kong/branches/"$BRANCH"; then
|
|
echo "branch ($BRANCH) already exists, exiting"
|
|
exit 1
|
|
fi
|
|
|
|
EXISTING_PRS=$(
|
|
gh pr list \
|
|
--json id \
|
|
--head "$BRANCH" \
|
|
| jq '.[]'
|
|
)
|
|
|
|
if [[ -n ${EXISTING_PRS:-} ]]; then
|
|
echo "existing PR for $BRANCH already exists, exiting"
|
|
echo "$EXISTING_PRS"
|
|
exit 1
|
|
fi
|
|
|
|
git switch --create "$BRANCH"
|
|
|
|
sed -i \
|
|
-re "s/^NGX_WASM_MODULE=.*/NGX_WASM_MODULE=$TO/" \
|
|
.requirements
|
|
|
|
git add .requirements
|
|
|
|
# create or update changelog file
|
|
readonly CHANGELOG_FILE=changelog/unreleased/kong/bump-ngx-wasm-module.yml
|
|
{
|
|
printf 'message: "Bumped `ngx_wasm_module` to `%s`"\n' "$TO"
|
|
printf 'type: dependency\n'
|
|
} > "$CHANGELOG_FILE"
|
|
|
|
git add "$CHANGELOG_FILE"
|
|
|
|
gh api repos/Kong/ngx_wasm_module/compare/"$FROM...$TO" \
|
|
--jq '.commits | reverse | .[] | {
|
|
sha: .sha[0:7],
|
|
url: .html_url,
|
|
message: ( .commit.message | split("\n") | .[0] )
|
|
}' \
|
|
> commits.json
|
|
|
|
# craft commit message
|
|
readonly HEADER="chore(deps): bump ngx_wasm_module to $TO"
|
|
{
|
|
printf '%s\n\nChanges since %s:\n\n' \
|
|
"$HEADER" "$FROM"
|
|
|
|
jq -r '"* \(.sha) - \(.message)"' \
|
|
< commits.json
|
|
} > commit.txt
|
|
|
|
git commit --file commit.txt
|
|
git push origin HEAD
|
|
|
|
# craft PR body
|
|
{
|
|
printf '## Changelog `%s...%s`\n\n' \
|
|
"${FROM:0:7}" "${TO:0:7}"
|
|
|
|
printf '[Compare on GitHub](%s/compare/%s...%s)\n\n' \
|
|
"https://github.com/Kong/ngx_wasm_module" \
|
|
"$FROM" "$TO"
|
|
|
|
# turn the commits into links for the PR body
|
|
jq -r \
|
|
'"* [`\(.sha)`](\(.url)) - \(.message)"' \
|
|
< commits.json
|
|
|
|
printf '\n\n'
|
|
printf '**IMPORTANT: Remember to scan this commit log for updates '
|
|
printf 'to Wasmtime/V8/Wasmer and update `.requirements` manually '
|
|
printf 'as needed**\n'
|
|
} > body.md
|
|
|
|
gh pr create \
|
|
--base master \
|
|
--head "$BRANCH" \
|
|
--title "$HEADER" \
|
|
--body-file body.md
|