diff --git a/.github/workflows/Procedure_push_docker_images.yml b/.github/workflows/Procedure_push_docker_images.yml index 09181426..9bc82507 100644 --- a/.github/workflows/Procedure_push_docker_images.yml +++ b/.github/workflows/Procedure_push_docker_images.yml @@ -347,13 +347,13 @@ jobs: DEV_STAGE=${tokens[1]} WAZUH_VER=${tokens[0]} if [ "${{ inputs.dev }}" = true ]; then - ./build-images.sh -v $WAZUH_VER -r $REVISION -d $DEV_STAGE -rg $IMAGE_REGISTRY -m -ref "$COMMIT_LIST" -c ${{ matrix.wazuh_component }} + ./build-images.sh -v $WAZUH_VER -r $REVISION -d $DEV_STAGE -rg $IMAGE_REGISTRY -m -refs "$COMMIT_LIST" -c ${{ matrix.wazuh_component }} else ./build-images.sh -v $WAZUH_VER -r $REVISION -d $DEV_STAGE -rg $IMAGE_REGISTRY -m -c ${{ matrix.wazuh_component }} fi else if [ "${{ inputs.dev }}" = true ]; then - ./build-images.sh -v $IMAGE_TAG -r $REVISION -rg $IMAGE_REGISTRY -m -ref "$COMMIT_LIST" -c ${{ matrix.wazuh_component }} + ./build-images.sh -v $IMAGE_TAG -r $REVISION -rg $IMAGE_REGISTRY -m -refs "$COMMIT_LIST" -c ${{ matrix.wazuh_component }} else ./build-images.sh -v $IMAGE_TAG -r $REVISION -rg $IMAGE_REGISTRY -m -c ${{ matrix.wazuh_component }} fi diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 6b7596ce..77e57fe8 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -19,7 +19,7 @@ WAZUH_REGISTRY=docker.io WAZUH_IMAGE_VERSION="5.0.0" WAZUH_TAG_REVISION="1" WAZUH_DEV_STAGE="" -WAZUH_TAG_REFERENCE="" +WAZUH_COMPONENTS_COMMIT_LIST="" # ----------------------------------------------------------------------------- @@ -63,26 +63,49 @@ build() { awk -F':' '!/^#/ && NF>1 {name=$1; val=substr($0,length(name)+3); gsub(/[-.]/,"_",name); print name "=" val}' $ARTIFACT_URLS_FILE > artifacts_env.txt - if [ "${WAZUH_DEV_STAGE}" ];then - if [ "${WAZUH_TAG_REFERENCE}" ];then - IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_DEV_STAGE,,}-${WAZUH_TAG_REFERENCE}" - else - IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_DEV_STAGE,,}" - fi - else - if [ "${WAZUH_TAG_REFERENCE}" ];then - IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_TAG_REFERENCE}" - else - IMAGE_TAG="${WAZUH_IMAGE_VERSION}" - fi + # Parse component commit list if provided + if [ -n "${WAZUH_COMPONENTS_COMMIT_LIST}" ]; then + # Extract individual commits from JSON array format: ["indexer", "manager", "dashboard", "agent"] + INDEXER_COMMIT=$(echo "${WAZUH_COMPONENTS_COMMIT_LIST}" | grep -o '"[^"]*"' | sed -n '1p' | tr -d '"') + MANAGER_COMMIT=$(echo "${WAZUH_COMPONENTS_COMMIT_LIST}" | grep -o '"[^"]*"' | sed -n '2p' | tr -d '"') + DASHBOARD_COMMIT=$(echo "${WAZUH_COMPONENTS_COMMIT_LIST}" | grep -o '"[^"]*"' | sed -n '3p' | tr -d '"') + AGENT_COMMIT=$(echo "${WAZUH_COMPONENTS_COMMIT_LIST}" | grep -o '"[^"]*"' | sed -n '4p' | tr -d '"') + + echo "Component commits parsed:" + echo " - Indexer: ${INDEXER_COMMIT}" + echo " - Manager: ${MANAGER_COMMIT}" + echo " - Dashboard: ${DASHBOARD_COMMIT}" + echo " - Agent: ${AGENT_COMMIT}" fi + # Function to get component-specific commit reference + get_component_commit() { + local component=$1 + case "${component}" in + wazuh-indexer) + echo "${INDEXER_COMMIT}" + ;; + wazuh-manager) + echo "${MANAGER_COMMIT}" + ;; + wazuh-dashboard) + echo "${DASHBOARD_COMMIT}" + ;; + wazuh-agent) + echo "${AGENT_COMMIT}" + ;; + *) + echo "" + ;; + esac + } + + # Global env file (without IMAGE_TAG - will be component-specific) echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > ../.env echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> ../.env echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> ../.env echo WAZUH_UI_REVISION=$WAZUH_UI_REVISION >> ../.env echo WAZUH_REGISTRY=$WAZUH_REGISTRY >> ../.env - echo IMAGE_TAG=$IMAGE_TAG >> ../.env set -a source ../.env @@ -121,6 +144,27 @@ build() { for component in "${components_to_build[@]}"; do echo "Building ${component} image..." + # Get component-specific commit reference + COMPONENT_COMMIT=$(get_component_commit "${component}") + + # Generate component-specific IMAGE_TAG + if [ "${WAZUH_DEV_STAGE}" ]; then + if [ -n "${COMPONENT_COMMIT}" ]; then + IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_DEV_STAGE,,}-${COMPONENT_COMMIT}" + else + IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_DEV_STAGE,,}" + fi + else + if [ -n "${COMPONENT_COMMIT}" ]; then + IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${COMPONENT_COMMIT}" + else + IMAGE_TAG="${WAZUH_IMAGE_VERSION}" + fi + fi + + echo "Using IMAGE_TAG: ${IMAGE_TAG} for ${component}" + export IMAGE_TAG="$IMAGE_TAG" + # Build common args (used by all components) build_args=( -t "${WAZUH_REGISTRY}/wazuh/${component}:${IMAGE_TAG}" @@ -180,7 +224,7 @@ help() { echo echo " -d, --dev [Optional] Set the development stage you want to build, example rc2 or beta1, not used by default." echo " -r, --revision [Optional] Package revision. By default ${WAZUH_TAG_REVISION}" - echo " -ref, --reference [Optional] Set the Wazuh reference to build development images. By default, the latest stable release." + echo " -refs, --references [Optional] Set each Wazuh component reference to be build (indexer, manager, dasboard and agent). By default, using the latest release: ['latest', 'latest', 'latest', 'latest']" echo " -rg, --registry [Optional] Set the Docker registry to push the images." echo " -c, --component [Required] Set the Wazuh component to build. Accepted values: 'wazuh-indexer', 'wazuh-manager', 'wazuh-dashboard', 'wazuh-agent'." echo " -v, --version [Optional] Set the Wazuh version should be builded. By default, ${WAZUH_IMAGE_VERSION}." @@ -219,9 +263,9 @@ main() { help 1 fi ;; - "-ref"|"--reference") + "-refs"|"--references") if [ -n "${2}" ]; then - WAZUH_TAG_REFERENCE="${2}" + WAZUH_COMPONENTS_COMMIT_LIST="${2}" shift 2 else help 1 diff --git a/docs/dev/build-image.md b/docs/dev/build-image.md index a9a95edd..f007b892 100644 --- a/docs/dev/build-image.md +++ b/docs/dev/build-image.md @@ -31,7 +31,7 @@ Usage: build-images.sh [OPTIONS] -d, --dev [Optional] Set the development stage you want to build, example rc2 or beta1, not used by default. -r, --revision [Optional] Package revision. By default 1 - -ref, --reference [Optional] Set the Wazuh reference to build development images. By default, the latest stable release. + -refs, --references [Optional] Set each Wazuh component reference to be build (indexer, manager, dasboard and agent). By default, using the latest release: ['latest', 'latest', 'latest', 'latest'] -rg, --registry [Optional] Set the Docker registry to push the images. -v, --version [Optional] Set the Wazuh version should be builded. By default, 5.0.0. -m, --multiarch [Optional] Enable multi-architecture builds.