forked from wazuh/wazuh-docker
Add test cases if only version is pass through input parameter
This commit is contained in:
@@ -27,11 +27,11 @@ on:
|
|||||||
- multi-node
|
- multi-node
|
||||||
- both
|
- both
|
||||||
version:
|
version:
|
||||||
description: 'Image version to test (e.g. 5.0.0). Leave empty to build images from PR.'
|
description: 'Image version to test (e.g. 5.0.0).'
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
revision:
|
stage:
|
||||||
description: 'Image revision/stage (e.g. beta2). Required when version is set.'
|
description: 'Image stage suffix (e.g. beta1, beta2-latest, beta2-<commit>). Required when version is set.'
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
registry:
|
registry:
|
||||||
@@ -39,7 +39,7 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: choice
|
type: choice
|
||||||
options:
|
options:
|
||||||
- ERC
|
- ECR
|
||||||
- DockerHub
|
- DockerHub
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -197,8 +197,80 @@ jobs:
|
|||||||
echo "wazuh_stage=${STAGE}" >> $GITHUB_OUTPUT
|
echo "wazuh_stage=${STAGE}" >> $GITHUB_OUTPUT
|
||||||
echo "Version: ${VERSION} Stage: ${STAGE:-<release>}"
|
echo "Version: ${VERSION} Stage: ${STAGE:-<release>}"
|
||||||
|
|
||||||
|
- name: Show test plan
|
||||||
|
run: |
|
||||||
|
WAZUH_VERSION="${{ steps.version.outputs.wazuh_version }}"
|
||||||
|
WAZUH_STAGE="${{ steps.version.outputs.wazuh_stage }}"
|
||||||
|
INPUT_VERSION="${{ inputs.version }}"
|
||||||
|
INPUT_STAGE="${{ inputs.stage }}"
|
||||||
|
INPUT_REGISTRY="${{ inputs.registry }}"
|
||||||
|
|
||||||
|
echo "============================================="
|
||||||
|
echo " DOCKER INTEGRATION TEST PLAN"
|
||||||
|
echo "============================================="
|
||||||
|
echo ""
|
||||||
|
echo "Branch: ${{ steps.ctx.outputs.pr_head_ref }}"
|
||||||
|
echo "Trigger: ${{ github.event_name }}"
|
||||||
|
echo "Deployments: ${{ steps.ctx.outputs.deployment_matrix }}"
|
||||||
|
echo ""
|
||||||
|
echo "--- Version info (VERSION.json) ---"
|
||||||
|
echo "wazuh_version: ${WAZUH_VERSION}"
|
||||||
|
echo "wazuh_stage: ${WAZUH_STAGE:-<release>}"
|
||||||
|
echo ""
|
||||||
|
echo "--- Workflow inputs ---"
|
||||||
|
echo "version: ${INPUT_VERSION:-<not set>}"
|
||||||
|
echo "stage: ${INPUT_STAGE:-<not set>}"
|
||||||
|
echo "registry: ${INPUT_REGISTRY:-<not set>}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Determine effective case
|
||||||
|
if [ -z "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
|
||||||
|
DOCKER_VERSION="$WAZUH_VERSION"
|
||||||
|
DOCKER_STAGE_DISPLAY="${WAZUH_STAGE}"
|
||||||
|
if [ "$INPUT_REGISTRY" = "ECR" ] || [ "${{ github.event_name }}" = "issue_comment" ]; then
|
||||||
|
echo "Case: a.1 — No version/stage → BUILD images from PR → push to ECR"
|
||||||
|
echo "Action: BUILD + push to ECR, then test"
|
||||||
|
EFFECTIVE_TAG="${DOCKER_VERSION}${DOCKER_STAGE_DISPLAY:+-${DOCKER_STAGE_DISPLAY}}-latest"
|
||||||
|
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
|
||||||
|
else
|
||||||
|
echo "Case: a.2 — No version/stage → PULL from DockerHub"
|
||||||
|
echo "Action: PULL images (no build)"
|
||||||
|
EFFECTIVE_TAG="${DOCKER_VERSION}${DOCKER_STAGE_DISPLAY:+-${DOCKER_STAGE_DISPLAY}}"
|
||||||
|
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
|
||||||
|
fi
|
||||||
|
elif [ -n "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
|
||||||
|
DOCKER_VERSION="$INPUT_VERSION"
|
||||||
|
echo "Action: PULL images (no build)"
|
||||||
|
if [ "$INPUT_REGISTRY" = "ECR" ]; then
|
||||||
|
echo "Case: b.1 — Version only, ECR → tag = version-latest"
|
||||||
|
EFFECTIVE_TAG="${DOCKER_VERSION}-latest"
|
||||||
|
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
|
||||||
|
else
|
||||||
|
echo "Case: b.2 — Version only, DockerHub → tag = version"
|
||||||
|
EFFECTIVE_TAG="${DOCKER_VERSION}"
|
||||||
|
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Case: c — Version + stage provided as-is (no -latest appended)"
|
||||||
|
echo "Action: PULL images (no build)"
|
||||||
|
DOCKER_VERSION="${INPUT_VERSION:-${WAZUH_VERSION}}"
|
||||||
|
EFFECTIVE_TAG="${DOCKER_VERSION}-${INPUT_STAGE}"
|
||||||
|
if [ "$INPUT_REGISTRY" = "ECR" ]; then
|
||||||
|
EFFECTIVE_REGISTRY="ECR (${{ vars.IMAGE_REGISTRY_DEV }})"
|
||||||
|
else
|
||||||
|
EFFECTIVE_REGISTRY="DockerHub (${{ vars.IMAGE_REGISTRY_PROD }})"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "--- Effective image configuration ---"
|
||||||
|
echo "Registry: ${EFFECTIVE_REGISTRY}"
|
||||||
|
echo "Image tag: ${EFFECTIVE_TAG}"
|
||||||
|
echo "Example image: wazuh/wazuh-manager:${EFFECTIVE_TAG}"
|
||||||
|
echo "============================================="
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# Job 3: Build Docker images (only when no explicit version/revision provided).
|
# Job 3: Build Docker images (only for ECR, when no explicit version/stage provided).
|
||||||
# Calls Procedure_push_docker_images.yml and pushes to the dev registry.
|
# Calls Procedure_push_docker_images.yml and pushes to the dev registry.
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
build_images:
|
build_images:
|
||||||
@@ -207,7 +279,9 @@ jobs:
|
|||||||
if: |
|
if: |
|
||||||
always() &&
|
always() &&
|
||||||
needs.prepare.result == 'success' &&
|
needs.prepare.result == 'success' &&
|
||||||
inputs.version == ''
|
inputs.version == '' &&
|
||||||
|
inputs.stage == '' &&
|
||||||
|
(inputs.registry == 'ECR' || github.event_name == 'issue_comment')
|
||||||
uses: ./.github/workflows/Procedure_push_docker_images.yml
|
uses: ./.github/workflows/Procedure_push_docker_images.yml
|
||||||
with:
|
with:
|
||||||
image_tag: "${{ needs.prepare.outputs.wazuh_version }}-${{ needs.prepare.outputs.wazuh_stage }}"
|
image_tag: "${{ needs.prepare.outputs.wazuh_version }}-${{ needs.prepare.outputs.wazuh_stage }}"
|
||||||
@@ -254,36 +328,62 @@ jobs:
|
|||||||
|
|
||||||
- name: Resolve image configuration
|
- name: Resolve image configuration
|
||||||
run: |
|
run: |
|
||||||
# Source of truth for cert tool — always from VERSION.json (pr branch)
|
|
||||||
WAZUH_VERSION="${{ needs.prepare.outputs.wazuh_version }}"
|
WAZUH_VERSION="${{ needs.prepare.outputs.wazuh_version }}"
|
||||||
WAZUH_STAGE="${{ needs.prepare.outputs.wazuh_stage }}"
|
WAZUH_STAGE="${{ needs.prepare.outputs.wazuh_stage }}"
|
||||||
|
INPUT_VERSION="${{ inputs.version }}"
|
||||||
|
INPUT_STAGE="${{ inputs.stage }}"
|
||||||
|
|
||||||
# Map registry choice to actual URL (defined once)
|
# Map registry choice to actual URL (defined once)
|
||||||
if [ "${{ inputs.registry }}" = "ERC" ]; then
|
if [ "${{ inputs.registry }}" = "ECR" ]; then
|
||||||
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
|
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
|
||||||
else
|
else
|
||||||
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
|
SELECTED_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${{ inputs.version }}" ]; then
|
if [ -z "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
|
||||||
# Explicit version/revision: use the registry choice mapped above
|
# Case a: no version, no stage — use VERSION.json
|
||||||
DOCKER_VERSION="${{ inputs.version }}"
|
DOCKER_VERSION="$WAZUH_VERSION"
|
||||||
DOCKER_REVISION="${{ inputs.revision }}"
|
DOCKER_STAGE="$WAZUH_STAGE"
|
||||||
|
if [ "${{ inputs.registry }}" = "ECR" ] || [ "${{ github.event_name }}" = "issue_comment" ]; then
|
||||||
|
# Case a.1: ECR / PR comment — images were built by build_images job → tag = version-stage-latest
|
||||||
|
DOCKER_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
|
||||||
|
DOCKER_TAG="${DOCKER_VERSION}${DOCKER_STAGE:+-${DOCKER_STAGE}}-latest"
|
||||||
|
else
|
||||||
|
# Case a.2: DockerHub — pull pre-built tag = version-stage
|
||||||
|
DOCKER_REGISTRY="${{ vars.IMAGE_REGISTRY_PROD }}"
|
||||||
|
DOCKER_TAG="${DOCKER_VERSION}${DOCKER_STAGE:+-${DOCKER_STAGE}}"
|
||||||
|
fi
|
||||||
|
elif [ -n "$INPUT_VERSION" ] && [ -z "$INPUT_STAGE" ]; then
|
||||||
|
# Case b: version only, no stage
|
||||||
|
DOCKER_VERSION="$INPUT_VERSION"
|
||||||
|
DOCKER_STAGE=""
|
||||||
DOCKER_REGISTRY="$SELECTED_REGISTRY"
|
DOCKER_REGISTRY="$SELECTED_REGISTRY"
|
||||||
|
if [ "${{ inputs.registry }}" = "ECR" ]; then
|
||||||
|
# Case b.1: ECR — tag = version-latest
|
||||||
|
DOCKER_TAG="${DOCKER_VERSION}-latest"
|
||||||
|
else
|
||||||
|
# Case b.2: DockerHub — tag = version (no suffix)
|
||||||
|
DOCKER_TAG="${DOCKER_VERSION}"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# Build case: always dev registry (build_images job pushed there)
|
# Case c: version + stage provided as-is (no -latest appended)
|
||||||
DOCKER_VERSION="${WAZUH_VERSION}"
|
DOCKER_VERSION="${INPUT_VERSION:-${WAZUH_VERSION}}"
|
||||||
DOCKER_REVISION="${WAZUH_STAGE}"
|
DOCKER_STAGE="$INPUT_STAGE"
|
||||||
DOCKER_REGISTRY="${{ vars.IMAGE_REGISTRY_DEV }}"
|
DOCKER_REGISTRY="$SELECTED_REGISTRY"
|
||||||
|
DOCKER_TAG="${DOCKER_VERSION}-${DOCKER_STAGE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "WAZUH_VERSION=${WAZUH_VERSION}" >> $GITHUB_ENV
|
echo "WAZUH_VERSION=${WAZUH_VERSION}" >> $GITHUB_ENV
|
||||||
echo "WAZUH_STAGE=${WAZUH_STAGE}" >> $GITHUB_ENV
|
echo "WAZUH_STAGE=${WAZUH_STAGE}" >> $GITHUB_ENV
|
||||||
echo "WAZUH_REVISION=${DOCKER_REVISION:-1}" >> $GITHUB_ENV
|
echo "DOCKER_VERSION=${DOCKER_VERSION}" >> $GITHUB_ENV
|
||||||
echo "DOCKER_VERSION=${DOCKER_VERSION}" >> $GITHUB_ENV
|
echo "DOCKER_STAGE=${DOCKER_STAGE}" >> $GITHUB_ENV
|
||||||
echo "DOCKER_REVISION=${DOCKER_REVISION}" >> $GITHUB_ENV
|
echo "DOCKER_REGISTRY=${DOCKER_REGISTRY}" >> $GITHUB_ENV
|
||||||
echo "DOCKER_REGISTRY=${DOCKER_REGISTRY}" >> $GITHUB_ENV
|
echo "DOCKER_TAG=${DOCKER_TAG}" >> $GITHUB_ENV
|
||||||
echo "Image: ${DOCKER_REGISTRY}/wazuh/wazuh-*:${DOCKER_VERSION}-${DOCKER_REVISION}"
|
|
||||||
|
echo "=== Resolved image configuration ==="
|
||||||
|
echo "Registry: ${DOCKER_REGISTRY}"
|
||||||
|
echo "Tag: ${DOCKER_TAG}"
|
||||||
|
echo "Example: wazuh/wazuh-manager:${DOCKER_TAG}"
|
||||||
|
|
||||||
- name: Set up Python 3.12
|
- name: Set up Python 3.12
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
@@ -357,7 +457,7 @@ jobs:
|
|||||||
"
|
"
|
||||||
|
|
||||||
- name: Login VM to ECR registry
|
- name: Login VM to ECR registry
|
||||||
if: inputs.version == '' || inputs.registry == 'ERC'
|
if: inputs.registry == 'ECR' || github.event_name == 'issue_comment'
|
||||||
run: |
|
run: |
|
||||||
ECR_REGISTRY="${{ env.DOCKER_REGISTRY }}"
|
ECR_REGISTRY="${{ env.DOCKER_REGISTRY }}"
|
||||||
ECR_REGION=$(echo "$ECR_REGISTRY" | cut -d. -f4)
|
ECR_REGION=$(echo "$ECR_REGISTRY" | cut -d. -f4)
|
||||||
@@ -372,18 +472,11 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
DEPLOYMENT="${{ matrix.deployment_type }}"
|
DEPLOYMENT="${{ matrix.deployment_type }}"
|
||||||
COMPOSE="wazuh-docker/${DEPLOYMENT}/docker-compose.yml"
|
COMPOSE="wazuh-docker/${DEPLOYMENT}/docker-compose.yml"
|
||||||
VERSION="${{ env.DOCKER_VERSION }}"
|
TAG="${{ env.DOCKER_TAG }}"
|
||||||
REVISION="${{ env.DOCKER_REVISION }}"
|
|
||||||
REGISTRY="${{ env.DOCKER_REGISTRY }}"
|
REGISTRY="${{ env.DOCKER_REGISTRY }}"
|
||||||
|
|
||||||
if [ "$REGISTRY" = "${{ vars.IMAGE_REGISTRY_DEV }}" ]; then
|
|
||||||
TAG="${VERSION}${REVISION:+-${REVISION}}-latest"
|
|
||||||
else
|
|
||||||
TAG="${VERSION}${REVISION:+-${REVISION}}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$REGISTRY" = "${{ vars.IMAGE_REGISTRY_PROD }}" ] || [ -z "$REGISTRY" ]; then
|
if [ "$REGISTRY" = "${{ vars.IMAGE_REGISTRY_PROD }}" ] || [ -z "$REGISTRY" ]; then
|
||||||
echo "Patching ${COMPOSE}: wazuh/wazuh-*:${TAG} (DockerHub)"
|
echo "Patching ${COMPOSE}: wazuh/wazuh-*:${TAG} (DockerHub, no registry prefix)"
|
||||||
sed -i -E "s|(image: wazuh/wazuh-[^:]+:)[^ ]+|\1${TAG}|g" "$COMPOSE"
|
sed -i -E "s|(image: wazuh/wazuh-[^:]+:)[^ ]+|\1${TAG}|g" "$COMPOSE"
|
||||||
else
|
else
|
||||||
echo "Patching ${COMPOSE}: ${REGISTRY}/wazuh/wazuh-*:${TAG}"
|
echo "Patching ${COMPOSE}: ${REGISTRY}/wazuh/wazuh-*:${TAG}"
|
||||||
@@ -399,7 +492,7 @@ jobs:
|
|||||||
STAGE="${{ env.WAZUH_STAGE }}"
|
STAGE="${{ env.WAZUH_STAGE }}"
|
||||||
MAJOR=$(echo "$VERSION" | cut -d. -f1)
|
MAJOR=$(echo "$VERSION" | cut -d. -f1)
|
||||||
|
|
||||||
echo "Cert tool: ${VERSION}-${STAGE} Docker image: ${{ env.DOCKER_VERSION }}-${{ env.DOCKER_REVISION }}"
|
echo "Cert tool: ${VERSION}-${STAGE} Docker image: ${{ env.DOCKER_TAG }}"
|
||||||
|
|
||||||
# Download cert tool once on the runner
|
# Download cert tool once on the runner
|
||||||
if [ -n "$STAGE" ]; then
|
if [ -n "$STAGE" ]; then
|
||||||
@@ -595,7 +688,6 @@ jobs:
|
|||||||
--ssh-key-path "${{ env.SSH_KEY }}" \
|
--ssh-key-path "${{ env.SSH_KEY }}" \
|
||||||
--ssh-username "${{ env.SSH_USER }}" \
|
--ssh-username "${{ env.SSH_USER }}" \
|
||||||
--version "${{ env.DOCKER_VERSION }}" \
|
--version "${{ env.DOCKER_VERSION }}" \
|
||||||
--revision "${{ env.DOCKER_REVISION }}" \
|
|
||||||
--log-level INFO \
|
--log-level INFO \
|
||||||
--output github \
|
--output github \
|
||||||
--output-file "test-results-docker-${DEPLOYMENT}.github"
|
--output-file "test-results-docker-${DEPLOYMENT}.github"
|
||||||
|
|||||||
Reference in New Issue
Block a user