diff --git a/.ci/bump-stack-version.sh b/.ci/bump-stack-version.sh new file mode 100755 index 00000000000..30192b07232 --- /dev/null +++ b/.ci/bump-stack-version.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# +# Given the stack version this script will bump the version. +# +# This script is executed by the automation we are putting in place +# and it requires the git add/commit commands. +# +# Parameters: +# $1 -> the version to be bumped. Mandatory. +# $2 -> whether to create a branch where to commit the changes to. +# this is required when reusing an existing Pull Request. +# Optional. Default true. +# +set -euo pipefail +MSG="parameter missing." +VERSION=${1:?$MSG} +CREATE_BRANCH=${2:-true} + +OS=$(uname -s| tr '[:upper:]' '[:lower:]') + +if [ "${OS}" == "darwin" ] ; then + SED="sed -i .bck" +else + SED="sed -i" +fi + +FILES="testing/environments/snapshot-oss.yml +testing/environments/snapshot.yml +" + +echo "Update stack with version ${VERSION}" +for FILE in ${FILES} ; do + ${SED} -E -e "s#(image: docker\.elastic\.co/.*):[0-9]+\.[0-9]+\.[0-9]+(-[a-f0-9]{8})?#\1:${VERSION}#g" $FILE +done + +echo "Commit changes" +if [ "$CREATE_BRANCH" = "true" ]; then + git checkout -b "update-stack-version-$(date "+%Y%m%d%H%M%S")" +else + echo "Branch creation disabled." +fi +for FILE in ${FILES} ; do + git add $FILE +done +git diff --staged --quiet || git commit -m "bump stack version ${VERSION}" +git --no-pager log -1 + +echo "You can now push and create a Pull Request" diff --git a/.gitignore b/.gitignore index 2f5a63889a9..1f7b9ad9f11 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ x-pack/elastic-agent/pkg/agent/operation/tests/scripts/serviceable-1.0-darwin-x8 # Terraform *.terraform *.tfstate* + +# Files generated with the bump elastic stack version automation +testing/environments/*.bck diff --git a/.mergify.yml b/.mergify.yml index 96e6d470031..3711f17c84f 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -65,3 +65,12 @@ pull_request_rules: git merge upstream/{{base}} git push upstream {{head}} ``` + - name: Automatic squash and merge with success checks and the files matching the regex ^testing/environments/snapshot* are modified. + conditions: + - check-success=beats-ci/pr-merge + - label=automation + - files~=^testing/environments/snapshot.*\.yml$ + actions: + merge: + method: squash + strict: smart+fasttrack