mirror of
https://github.com/deviantony/docker-elk.git
synced 2025-12-12 09:50:48 +01:00
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:
78
.github/workflows/update.yml
vendored
Normal file
78
.github/workflows/update.yml
vendored
Normal 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
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Node.js artifacts created by certain GitHub Actions
|
||||
/node_modules/
|
||||
/package-lock.json
|
||||
Reference in New Issue
Block a user