Restore "Send automated PR upon new stack release"

This reverts commit 9016e00e7b and updates
the 'latest' version detection logic to iterate over releases and pick
the latest matching semver, instead of relying on GitHub's
'/releases/latest' API.
This commit is contained in:
Antoine Cotten 2021-10-26 16:01:22 +02:00
parent 51b8525767
commit 04fdb981eb
No known key found for this signature in database
GPG Key ID: 94637E68D4A79DD0
2 changed files with 81 additions and 0 deletions

78
.github/workflows/update.yml vendored Normal file
View File

@ -0,0 +1,78 @@
name: Update Elastic release
on:
schedule:
- cron: '0 0 * * 0' # At 00:00 every Sunday
jobs:
check-and-update:
name: Check and update Elastic release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- run: npm install semver
- name: Get latest release version
uses: actions/github-script@v5
id: get-latest-release
with:
script: |
const semver = require('semver')
const latestVersion = await github.
paginate(github.rest.repos.listReleases, {
owner: 'elastic',
repo: 'elasticsearch'
})
.then(releases => {
for (const release of releases) {
// Results are returned sorted by created_at, so it is safe to assume
// that the first encountered match is also the series' latest release.
const version=semver.clean(release.tag_name)
if (semver.satisfies(version, '7.x')) {
return version
}
}
});
if (latestVersion) {
// Return an object so that the result can be handled as structured data
// instead of a quoted string in subsequent steps.
return { version: latestVersion }
}
- name: Update stack version
id: update-files
if: steps.get-latest-release.outputs.result
run: |
source .env
cur_ver="$ELK_VERSION"
new_ver=${{ fromJson(steps.get-latest-release.outputs.result).version }}
# Escape dot characters so sed interprets them as literal dots
cur_ver="$(echo $cur_ver | sed 's/\./\\./g')"
for f in .env docker-stack.yml README.md; do
sed -i "s/${cur_ver}/${new_ver}/g" "$f"
done
git_status="$(git status --porcelain)"
if [[ ${git_status} ]]; then
echo -e 'Changes to be committed:\n'
echo "${git_status}"
echo '::set-output name=has_changes::true'
fi
- name: Send pull request to update to new version
if: steps.update-files.outputs.has_changes
uses: peter-evans/create-pull-request@v3
with:
commit-message: Update to v${{ fromJson(steps.get-latest-release.outputs.result).version }}
title: Update to v${{ fromJson(steps.get-latest-release.outputs.result).version }}
delete-branch: true

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
# Node.js artifacts created by certain GitHub Actions
/node_modules/
/package-lock.json