forked from wazuh/wazuh-docker
Merge pull request #2293 from wazuh/change/2276-set_as_main-option
Add set_as_main option
This commit is contained in:
@@ -14,6 +14,11 @@ on:
|
|||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
tag:
|
||||||
|
description: 'Change branches references to tag-like references (e.g. v4.12.0-alpha7)'
|
||||||
|
default: false
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
issue-link:
|
issue-link:
|
||||||
description: 'Issue link in format https://github.com/wazuh/<REPO>/issues/<ISSUE-NUMBER>'
|
description: 'Issue link in format https://github.com/wazuh/<REPO>/issues/<ISSUE-NUMBER>'
|
||||||
required: true
|
required: true
|
||||||
@@ -76,16 +81,18 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
VERSION: ${{ inputs.version }}
|
VERSION: ${{ inputs.version }}
|
||||||
STAGE: ${{ inputs.stage }}
|
STAGE: ${{ inputs.stage }}
|
||||||
|
TAG: ${{ inputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
script_params=""
|
script_params=""
|
||||||
version=${{ env.VERSION }}
|
version=${{ env.VERSION }}
|
||||||
stage=${{ env.STAGE }}
|
stage=${{ env.STAGE }}
|
||||||
|
tag=${{ env.TAG }}
|
||||||
|
|
||||||
# Both version and stage provided
|
# Both version and stage provided
|
||||||
if [[ -n "$version" && -n "$stage" ]]; then
|
if [[ -n "$version" && -n "$stage" && "$tag" != "true" ]]; then
|
||||||
script_params="--version ${version} --stage ${stage}"
|
script_params="--version ${version} --stage ${stage}"
|
||||||
elif [[ -z "$version" && -n "$stage" ]]; then
|
elif [[ -n "$version" && -n "$stage" && "$tag" == "true" ]]; then
|
||||||
script_params="--stage ${stage}"
|
script_params="--version ${version} --stage ${stage} --tag ${tag}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
|
issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
|
||||||
@@ -132,4 +139,4 @@ jobs:
|
|||||||
echo "Branch: ${{ steps.vars.outputs.branch_name }}"
|
echo "Branch: ${{ steps.vars.outputs.branch_name }}"
|
||||||
echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}"
|
echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}"
|
||||||
echo "Bumper scripts logs:"
|
echo "Bumper scripts logs:"
|
||||||
cat ${BUMP_LOG_PATH}/repository_bumper*log
|
cat ${BUMP_LOG_PATH}/repository_bumper*log
|
||||||
@@ -14,6 +14,11 @@ on:
|
|||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
tag:
|
||||||
|
description: 'Change branches references to tag-like references (e.g. v4.12.0-alpha7)'
|
||||||
|
default: false
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
set_as_main:
|
set_as_main:
|
||||||
description: "Enable main branch mode: bump version values only, keep branch references pointing to main"
|
description: "Enable main branch mode: bump version values only, keep branch references pointing to main"
|
||||||
required: false
|
required: false
|
||||||
@@ -81,10 +86,12 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
VERSION: ${{ inputs.version }}
|
VERSION: ${{ inputs.version }}
|
||||||
STAGE: ${{ inputs.stage }}
|
STAGE: ${{ inputs.stage }}
|
||||||
|
TAG: ${{ inputs.tag }}
|
||||||
run: |
|
run: |
|
||||||
script_params=""
|
script_params=""
|
||||||
version=${{ env.VERSION }}
|
version=${{ env.VERSION }}
|
||||||
stage=${{ env.STAGE }}
|
stage=${{ env.STAGE }}
|
||||||
|
tag=${{ env.TAG }}
|
||||||
|
|
||||||
set_as_main=${{ inputs.set_as_main }}
|
set_as_main=${{ inputs.set_as_main }}
|
||||||
|
|
||||||
@@ -93,10 +100,10 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Both version and stage provided
|
# Both version and stage provided
|
||||||
if [[ -n "$version" && -n "$stage" ]]; then
|
if [[ -n "$version" && -n "$stage" && "$tag" != "true" ]]; then
|
||||||
script_params+=" --version ${version} --stage ${stage}"
|
script_params+=" --version ${version} --stage ${stage}"
|
||||||
elif [[ -z "$version" && -n "$stage" ]]; then
|
elif [[ -n "$version" && -n "$stage" && "$tag" == "true" ]]; then
|
||||||
script_params+=" --stage ${stage}"
|
script_params+=" --version ${version} --stage ${stage} --tag ${tag}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
|
issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}')
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- Add set_as_main option ([#2293](https://github.com/wazuh/wazuh-docker/pull/2293))
|
||||||
- Adapt bumper workflows to change main branch ([#2294](https://github.com/wazuh/wazuh-docker/pull/2294))
|
- Adapt bumper workflows to change main branch ([#2294](https://github.com/wazuh/wazuh-docker/pull/2294))
|
||||||
- Delete all API user and password references and Wazuh agent references ([#2289](https://github.com/wazuh/wazuh-docker/pull/2289))
|
- Delete all API user and password references and Wazuh agent references ([#2289](https://github.com/wazuh/wazuh-docker/pull/2289))
|
||||||
- Create certificate directory with default user and group ([#2287](https://github.com/wazuh/wazuh-docker/pull/2287))
|
- Create certificate directory with default user and group ([#2287](https://github.com/wazuh/wazuh-docker/pull/2287))
|
||||||
|
|||||||
+60
-12
@@ -10,7 +10,7 @@ LOG_FILE="${DIR}/tools/repository_bumper_$(date +"%Y-%m-%d_%H-%M-%S-%3N").log"
|
|||||||
VERSION=""
|
VERSION=""
|
||||||
STAGE=""
|
STAGE=""
|
||||||
FILES_EDITED=()
|
FILES_EDITED=()
|
||||||
FILES_EXCLUDED='--exclude="repository_bumper_*.log" --exclude="CHANGELOG.md" --exclude="repository_bumper.sh" --exclude="*_bumper_repository.yml"'
|
FILES_EXCLUDED='--exclude="repository_bumper_*.log" --exclude="CHANGELOG.md" --exclude="repository_bumper.sh" --exclude="*_bumper_repository.yml" --exclude="mermaid-init.js" --exclude="mermaid.min.js"'
|
||||||
|
|
||||||
get_old_version_and_stage() {
|
get_old_version_and_stage() {
|
||||||
local VERSION_FILE="${DIR}/VERSION.json"
|
local VERSION_FILE="${DIR}/VERSION.json"
|
||||||
@@ -25,34 +25,34 @@ grep_command() {
|
|||||||
# This function is used to search for a specific string in the specified directory.
|
# This function is used to search for a specific string in the specified directory.
|
||||||
# It takes two arguments: the string to search for and the directory to search in.
|
# It takes two arguments: the string to search for and the directory to search in.
|
||||||
# Usage: grep_command <string> <directory>
|
# Usage: grep_command <string> <directory>
|
||||||
eval grep -Rl "${1}" "${2}" --exclude-dir=".git" $FILES_EXCLUDED "${3}"
|
eval grep -Rl \"${1}\" \"${2}\" --exclude-dir=".git" $FILES_EXCLUDED "${3}"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_version_in_files() {
|
update_version_in_files() {
|
||||||
|
|
||||||
local OLD_MAYOR="$(echo "${OLD_VERSION}" | cut -d '.' -f 1)"
|
local OLD_MAJOR="$(echo "${OLD_VERSION}" | cut -d '.' -f 1)"
|
||||||
local OLD_MINOR="$(echo "${OLD_VERSION}" | cut -d '.' -f 2)"
|
local OLD_MINOR="$(echo "${OLD_VERSION}" | cut -d '.' -f 2)"
|
||||||
local OLD_PATCH="$(echo "${OLD_VERSION}" | cut -d '.' -f 3)"
|
local OLD_PATCH="$(echo "${OLD_VERSION}" | cut -d '.' -f 3)"
|
||||||
local NEW_MAYOR="$(echo "${VERSION}" | cut -d '.' -f 1)"
|
local NEW_MAJOR="$(echo "${VERSION}" | cut -d '.' -f 1)"
|
||||||
local NEW_MINOR="$(echo "${VERSION}" | cut -d '.' -f 2)"
|
local NEW_MINOR="$(echo "${VERSION}" | cut -d '.' -f 2)"
|
||||||
local NEW_PATCH="$(echo "${VERSION}" | cut -d '.' -f 3)"
|
local NEW_PATCH="$(echo "${VERSION}" | cut -d '.' -f 3)"
|
||||||
m_m_p_files=( $(grep_command "${OLD_MAYOR}\.${OLD_MINOR}\.${OLD_PATCH}" "${DIR}") )
|
m_m_p_files=( $(grep_command "${OLD_MAJOR}\.${OLD_MINOR}\.${OLD_PATCH}" "${DIR}") )
|
||||||
for file in "${m_m_p_files[@]}"; do
|
for file in "${m_m_p_files[@]}"; do
|
||||||
sed -i "s/\bv${OLD_MAYOR}\.${OLD_MINOR}\.${OLD_PATCH}\b/v${NEW_MAYOR}\.${NEW_MINOR}\.${NEW_PATCH}/g; s/\b${OLD_MAYOR}\.${OLD_MINOR}\.${OLD_PATCH}/${NEW_MAYOR}\.${NEW_MINOR}\.${NEW_PATCH}/g" "${file}"
|
sed -i "s/\bv${OLD_MAJOR}\.${OLD_MINOR}\.${OLD_PATCH}\b/v${NEW_MAJOR}\.${NEW_MINOR}\.${NEW_PATCH}/g; s/\b${OLD_MAJOR}\.${OLD_MINOR}\.${OLD_PATCH}/${NEW_MAJOR}\.${NEW_MINOR}\.${NEW_PATCH}/g" "${file}"
|
||||||
if [[ $(git diff --name-only "${file}") ]]; then
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
FILES_EDITED+=("${file}")
|
FILES_EDITED+=("${file}")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
m_m_files=( $(grep_command "${OLD_MAYOR}\.${OLD_MINOR}" "${DIR}") )
|
m_m_files=( $(grep_command "${OLD_MAJOR}\.${OLD_MINOR}" "${DIR}") )
|
||||||
for file in "${m_m_files[@]}"; do
|
for file in "${m_m_files[@]}"; do
|
||||||
sed -i -E "/[0-9]+\.[0-9]+\.[0-9]+/! s/(^|[^0-9.])(${OLD_MAYOR}\.${OLD_MINOR})([^0-9.]|$)/\1${NEW_MAYOR}.${NEW_MINOR}\3/g" "$file"
|
sed -i -E "/[0-9]+\.[0-9]+\.[0-9]+/! s/(^|[^0-9.])(${OLD_MAJOR}\.${OLD_MINOR})([^0-9.]|$)/\1${NEW_MAJOR}.${NEW_MINOR}\3/g" "$file"
|
||||||
if [[ $(git diff --name-only "${file}") ]]; then
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
FILES_EDITED+=("${file}")
|
FILES_EDITED+=("${file}")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
m_x_files=( $(grep_command "${OLD_MAYOR}\.x" "${DIR}") )
|
m_x_files=( $(grep_command "${OLD_MAJOR}\.x" "${DIR}") )
|
||||||
for file in "${m_x_files[@]}"; do
|
for file in "${m_x_files[@]}"; do
|
||||||
sed -i "s/\b${OLD_MAYOR}\.x\b/${NEW_MAYOR}\.x/g" "${file}"
|
sed -i "s/\b${OLD_MAJOR}\.x\b/${NEW_MAJOR}\.x/g" "${file}"
|
||||||
if [[ $(git diff --name-only "${file}") ]]; then
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
FILES_EDITED+=("${file}")
|
FILES_EDITED+=("${file}")
|
||||||
fi
|
fi
|
||||||
@@ -74,6 +74,44 @@ update_stage_in_files() {
|
|||||||
FILES_EDITED+=("${file}")
|
FILES_EDITED+=("${file}")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ $STAGE != "alpha0" ]; then
|
||||||
|
version_tag_string=": 'v${VERSION}'"
|
||||||
|
files_tag=( $(grep_command "${version_tag_string}" "${DIR}") )
|
||||||
|
for file in "${files_tag[@]}"; do
|
||||||
|
sed -i -E "s/(: )'v${VERSION}'/\1'v${VERSION}-${STAGE}'/g" "${file}"
|
||||||
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
|
FILES_EDITED+=("${file}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
version_number_string=": '${VERSION}'"
|
||||||
|
files_version=( $(grep -RlE ": '[0-9]\.[0-9]+\.[0-9]+'" "${DIR}") )
|
||||||
|
for file in "${files_version[@]}"; do
|
||||||
|
sed -i -E "s/(: )'${VERSION}'/\1'v${VERSION}-${STAGE}'/g" "${file}"
|
||||||
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
|
FILES_EDITED+=("${file}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
update_main_in_files() {
|
||||||
|
if [[ $STAGE == "alpha0" ]]; then
|
||||||
|
bump_value="${VERSION}"
|
||||||
|
else
|
||||||
|
bump_value="v${VERSION}"
|
||||||
|
fi
|
||||||
|
main_string=": 'main'"
|
||||||
|
files=( $(grep_command "${main_string}" "${DIR}") )
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
if [[ "$skip_urls" != "yes" ]]; then
|
||||||
|
sed -Ei "s/(:[[:space:]])'main'/\1'${bump_value}'/g" "${file}"
|
||||||
|
fi
|
||||||
|
if [[ $(git diff --name-only "${file}") ]]; then
|
||||||
|
FILES_EDITED+=("${file}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
update_docker_images_tag() {
|
update_docker_images_tag() {
|
||||||
@@ -106,6 +144,10 @@ main() {
|
|||||||
TAG="$2"
|
TAG="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
--set-as-main)
|
||||||
|
set_as_main="yes"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown argument: $1"
|
echo "Unknown argument: $1"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -137,6 +179,12 @@ main() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Set skip_urls variable based on set_as_main flag
|
||||||
|
if [[ -z "$set_as_main" ]]; then
|
||||||
|
echo "Updating version from main to $VERSION" | tee -a "${LOG_FILE}"
|
||||||
|
update_main_in_files "$VERSION" "$STAGE"
|
||||||
|
fi
|
||||||
|
|
||||||
# Validate if tag is true or false
|
# Validate if tag is true or false
|
||||||
if [[ -n "${TAG}" && ! "${TAG}" =~ ^(true|false)$ ]]; then
|
if [[ -n "${TAG}" && ! "${TAG}" =~ ^(true|false)$ ]]; then
|
||||||
echo "Error: --tag must be either true or false." | tee -a "${LOG_FILE}"
|
echo "Error: --tag must be either true or false." | tee -a "${LOG_FILE}"
|
||||||
@@ -150,9 +198,9 @@ main() {
|
|||||||
echo "Updating version from ${OLD_VERSION} to ${VERSION}" | tee -a "${LOG_FILE}"
|
echo "Updating version from ${OLD_VERSION} to ${VERSION}" | tee -a "${LOG_FILE}"
|
||||||
update_version_in_files "${VERSION}"
|
update_version_in_files "${VERSION}"
|
||||||
fi
|
fi
|
||||||
if [[ "${OLD_STAGE}" != "${STAGE}" ]]; then
|
if [[ -n "$STAGE" ]]; then
|
||||||
echo "Updating stage from ${OLD_STAGE} to ${STAGE}" | tee -a "${LOG_FILE}"
|
echo "Updating stage from ${OLD_STAGE} to ${STAGE}" | tee -a "${LOG_FILE}"
|
||||||
update_stage_in_files "${STAGE}"
|
update_stage_in_files "$VERSION" "$STAGE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update Docker images tag if tag is true
|
# Update Docker images tag if tag is true
|
||||||
|
|||||||
Reference in New Issue
Block a user