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:
parent
51b8525767
commit
04fdb981eb
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
# Node.js artifacts created by certain GitHub Actions
|
||||
/node_modules/
|
||||
/package-lock.json
|
Loading…
Reference in New Issue