diff --git a/.github/workflows/4_bumper_repository.yml b/.github/workflows/4_bumper_repository.yml index 10106278..c932fc35 100644 --- a/.github/workflows/4_bumper_repository.yml +++ b/.github/workflows/4_bumper_repository.yml @@ -14,6 +14,11 @@ on: default: '' required: false 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: description: 'Issue link in format https://github.com/wazuh//issues/' required: true @@ -76,16 +81,18 @@ jobs: env: VERSION: ${{ inputs.version }} STAGE: ${{ inputs.stage }} + TAG: ${{ inputs.tag }} run: | script_params="" version=${{ env.VERSION }} stage=${{ env.STAGE }} + tag=${{ env.TAG }} # 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}" - elif [[ -z "$version" && -n "$stage" ]]; then - script_params="--stage ${stage}" + elif [[ -n "$version" && -n "$stage" && "$tag" == "true" ]]; then + script_params="--version ${version} --stage ${stage} --tag ${tag}" fi issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}') @@ -132,4 +139,4 @@ jobs: echo "Branch: ${{ steps.vars.outputs.branch_name }}" echo "PR: ${{ steps.create_pr.outputs.pull_request_url }}" echo "Bumper scripts logs:" - cat ${BUMP_LOG_PATH}/repository_bumper*log + cat ${BUMP_LOG_PATH}/repository_bumper*log \ No newline at end of file diff --git a/.github/workflows/5_bumper_repository.yml b/.github/workflows/5_bumper_repository.yml index 04985874..39464ad7 100644 --- a/.github/workflows/5_bumper_repository.yml +++ b/.github/workflows/5_bumper_repository.yml @@ -14,6 +14,11 @@ on: default: '' required: false 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: description: "Enable main branch mode: bump version values only, keep branch references pointing to main" required: false @@ -81,10 +86,12 @@ jobs: env: VERSION: ${{ inputs.version }} STAGE: ${{ inputs.stage }} + TAG: ${{ inputs.tag }} run: | script_params="" version=${{ env.VERSION }} stage=${{ env.STAGE }} + tag=${{ env.TAG }} set_as_main=${{ inputs.set_as_main }} @@ -93,10 +100,10 @@ jobs: fi # 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}" - elif [[ -z "$version" && -n "$stage" ]]; then - script_params+=" --stage ${stage}" + elif [[ -n "$version" && -n "$stage" && "$tag" == "true" ]]; then + script_params+=" --version ${version} --stage ${stage} --tag ${tag}" fi issue_number=$(echo "${{ inputs.issue-link }}" | awk -F'/' '{print $NF}') diff --git a/CHANGELOG.md b/CHANGELOG.md index 9356fe62..b1d55001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. ### 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)) - 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)) diff --git a/tools/repository_bumper.sh b/tools/repository_bumper.sh index abf70f42..4712761a 100644 --- a/tools/repository_bumper.sh +++ b/tools/repository_bumper.sh @@ -10,7 +10,7 @@ LOG_FILE="${DIR}/tools/repository_bumper_$(date +"%Y-%m-%d_%H-%M-%S-%3N").log" VERSION="" STAGE="" 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() { 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. # It takes two arguments: the string to search for and the directory to search in. # Usage: grep_command - 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() { - 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_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_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 - 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 FILES_EDITED+=("${file}") fi 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 - 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 FILES_EDITED+=("${file}") fi 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 - 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 FILES_EDITED+=("${file}") fi @@ -74,6 +74,44 @@ update_stage_in_files() { FILES_EDITED+=("${file}") fi 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() { @@ -106,6 +144,10 @@ main() { TAG="$2" shift 2 ;; + --set-as-main) + set_as_main="yes" + shift 1 + ;; *) echo "Unknown argument: $1" exit 1 @@ -137,6 +179,12 @@ main() { exit 1 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 if [[ -n "${TAG}" && ! "${TAG}" =~ ^(true|false)$ ]]; then 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}" update_version_in_files "${VERSION}" fi - if [[ "${OLD_STAGE}" != "${STAGE}" ]]; then + if [[ -n "$STAGE" ]]; then echo "Updating stage from ${OLD_STAGE} to ${STAGE}" | tee -a "${LOG_FILE}" - update_stage_in_files "${STAGE}" + update_stage_in_files "$VERSION" "$STAGE" fi # Update Docker images tag if tag is true