Skip to content

Commit a91d766

Browse files
yenienserranoasteriscosDesvelaoclauderodrigofez
authored
Merge 5.0.1 into main (#1565)
* Merge 5.0.0 into 5.0.1 (#1518) * Report skipped bumps in the repository bumper workflow (#1492) Improve repository bumper error handling * Recalculate flyout position when the sidecar is opened (#1503) * Adapt flyout position in relation to the sidecar * Add changelog * Change resizable button emphasis style from :focus to :active (#1508) * fix(sidecar): change resizable button emphasis style from :focus to :active Update the .sidecar-resizableButton CSS to emphasize the "grab" icon on :active instead of :focus, matching the intended interaction feedback when dragging the resizer. Closes wazuh/wazuh-dashboard-plugins#8989 Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): remove leftover native focus outline on resizable button The resizable button programmatically calls .focus() on every click, so after removing the custom :focus emphasis in favor of :active, the browser's default focus outline was left showing as an unstyled colored border until focus moved elsewhere. Suppress it for mouse/touch interaction while keeping it for keyboard users via :focus-visible. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): opt out resizable button from the global focus-ring animation The resizable button programmatically calls .focus() on every click, which triggered OSD's global brute-force focus-ring animation (:focus:not([class^="eui"]):not(.osd-resetFocusState) in _base.scss) since the button isn't an EUI component. That showed as a lingering colored border after dragging, independent from the button's own :active styling. Opt out via the "osd-resetFocusState" class, which is the mechanism _base.scss already documents for components with hand-crafted focus states, instead of fighting the rule's !important/specificity locally. Supersedes the previous outline:none attempt, which didn't target the actual animation. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * feat(sidecar): allow configuring the resizable button className Add an optional className prop to ResizableButton, and forward it from a new classNameButton option on OverlaySidecarOpenOptions/Sidecar, so callers of overlays.sidecar.open() can style/opt-out the resizer button (e.g. pass "osd-resetFocusState" to drop the global focus-ring animation) without hardcoding it in the component. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude <noreply@anthropic.com> * Change top bar health-check icon (#1505) * feat: update health check indicator * Change top bar health-check icon to a pulse shown only when attention is needed Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * fix(core): use kebab-case for sidecar docked-mode CSS variable Rename --osdSidecarSize to --osd-sidecar-size and switch attribute selectors to double quotes to satisfy the repo's stylelint rules (custom-property-pattern, string-quotes), registering sidecar.scss in the global selectors allowlist for its .euiFlyout references. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * chore: use constant * Rework health-check popover * Rework health-check popover * List failing health checks in the nav-button popover Show the enabled non-green checks as an EuiHealth list in the health-check popover, labelled by the check name and with the error surfaced in a tooltip. Use the shared mapTaskStatusToHealthColor helper and TASK.RUN_RESULT constants instead of magic strings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * Fix popover closes when clicking inside * Close popover after navigating to the health check --------- Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> * Bump 5.0.0 branch (#1513) feat: bump 5.0.0 * Fix RPM changelog entry order causing build failure (#1516) Fix RPM changelog entry order for 5.0.0 The 5.0.0 changelog entry was placed out of descending chronological order, causing rpmbuild to fail while parsing %changelog. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1517) Remove unnecessary debhelper install-time dependency (#1484) fix: remove unnecessary debhelper install-time dependency debhelper is only required to build the .deb package (declared under Build-Depends in dev-tools/build-packages/deb/debian/control), not to install a pre-built one. Remove it from the apt-get install steps used to test package install/upgrade. Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Rodrigo López <37187963+rodrigofez@users.noreply.github.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Wazuh CI <22834044+wazuhci@users.noreply.github.com> * Merge 5.0.0 into 5.0.1 (#1541) * Report skipped bumps in the repository bumper workflow (#1492) Improve repository bumper error handling * Recalculate flyout position when the sidecar is opened (#1503) * Adapt flyout position in relation to the sidecar * Add changelog * Change resizable button emphasis style from :focus to :active (#1508) * fix(sidecar): change resizable button emphasis style from :focus to :active Update the .sidecar-resizableButton CSS to emphasize the "grab" icon on :active instead of :focus, matching the intended interaction feedback when dragging the resizer. Closes wazuh/wazuh-dashboard-plugins#8989 Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): remove leftover native focus outline on resizable button The resizable button programmatically calls .focus() on every click, so after removing the custom :focus emphasis in favor of :active, the browser's default focus outline was left showing as an unstyled colored border until focus moved elsewhere. Suppress it for mouse/touch interaction while keeping it for keyboard users via :focus-visible. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): opt out resizable button from the global focus-ring animation The resizable button programmatically calls .focus() on every click, which triggered OSD's global brute-force focus-ring animation (:focus:not([class^="eui"]):not(.osd-resetFocusState) in _base.scss) since the button isn't an EUI component. That showed as a lingering colored border after dragging, independent from the button's own :active styling. Opt out via the "osd-resetFocusState" class, which is the mechanism _base.scss already documents for components with hand-crafted focus states, instead of fighting the rule's !important/specificity locally. Supersedes the previous outline:none attempt, which didn't target the actual animation. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * feat(sidecar): allow configuring the resizable button className Add an optional className prop to ResizableButton, and forward it from a new classNameButton option on OverlaySidecarOpenOptions/Sidecar, so callers of overlays.sidecar.open() can style/opt-out the resizer button (e.g. pass "osd-resetFocusState" to drop the global focus-ring animation) without hardcoding it in the component. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude <noreply@anthropic.com> * Change top bar health-check icon (#1505) * feat: update health check indicator * Change top bar health-check icon to a pulse shown only when attention is needed Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * fix(core): use kebab-case for sidecar docked-mode CSS variable Rename --osdSidecarSize to --osd-sidecar-size and switch attribute selectors to double quotes to satisfy the repo's stylelint rules (custom-property-pattern, string-quotes), registering sidecar.scss in the global selectors allowlist for its .euiFlyout references. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * chore: use constant * Rework health-check popover * Rework health-check popover * List failing health checks in the nav-button popover Show the enabled non-green checks as an EuiHealth list in the health-check popover, labelled by the check name and with the error surfaced in a tooltip. Use the shared mapTaskStatusToHealthColor helper and TASK.RUN_RESULT constants instead of magic strings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * Fix popover closes when clicking inside * Close popover after navigating to the health check --------- Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> * Bump 5.0.0 branch (#1513) feat: bump 5.0.0 * Fix RPM changelog entry order causing build failure (#1516) Fix RPM changelog entry order for 5.0.0 The 5.0.0 changelog entry was placed out of descending chronological order, causing rpmbuild to fail while parsing %changelog. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1517) Remove unnecessary debhelper install-time dependency (#1484) fix: remove unnecessary debhelper install-time dependency debhelper is only required to build the .deb package (declared under Build-Depends in dev-tools/build-packages/deb/debian/control), not to install a pre-built one. Remove it from the apt-get install steps used to test package install/upgrade. Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1537) Merge 4.14.9 into 5.0.0: no changes (verified 2026-08-28) * fix: remove inert opensearch_security.cookie.ttl setting (#1534) The dashboard config declares opensearch_security.cookie.ttl, but the security plugin never reads it: only opensearch_security.session.ttl governs session/cookie expiry. Shipping the setting misleads operators into believing it bounds the cookie lifetime. Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude <noreply@anthropic.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Rodrigo López <37187963+rodrigofez@users.noreply.github.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Wazuh CI <22834044+wazuhci@users.noreply.github.com> * Merge 5.0.0 into 5.0.1 (#1564) * Report skipped bumps in the repository bumper workflow (#1492) Improve repository bumper error handling * Recalculate flyout position when the sidecar is opened (#1503) * Adapt flyout position in relation to the sidecar * Add changelog * Change resizable button emphasis style from :focus to :active (#1508) * fix(sidecar): change resizable button emphasis style from :focus to :active Update the .sidecar-resizableButton CSS to emphasize the "grab" icon on :active instead of :focus, matching the intended interaction feedback when dragging the resizer. Closes wazuh/wazuh-dashboard-plugins#8989 Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): remove leftover native focus outline on resizable button The resizable button programmatically calls .focus() on every click, so after removing the custom :focus emphasis in favor of :active, the browser's default focus outline was left showing as an unstyled colored border until focus moved elsewhere. Suppress it for mouse/touch interaction while keeping it for keyboard users via :focus-visible. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * fix(sidecar): opt out resizable button from the global focus-ring animation The resizable button programmatically calls .focus() on every click, which triggered OSD's global brute-force focus-ring animation (:focus:not([class^="eui"]):not(.osd-resetFocusState) in _base.scss) since the button isn't an EUI component. That showed as a lingering colored border after dragging, independent from the button's own :active styling. Opt out via the "osd-resetFocusState" class, which is the mechanism _base.scss already documents for components with hand-crafted focus states, instead of fighting the rule's !important/specificity locally. Supersedes the previous outline:none attempt, which didn't target the actual animation. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * feat(sidecar): allow configuring the resizable button className Add an optional className prop to ResizableButton, and forward it from a new classNameButton option on OverlaySidecarOpenOptions/Sidecar, so callers of overlays.sidecar.open() can style/opt-out the resizer button (e.g. pass "osd-resetFocusState" to drop the global focus-ring animation) without hardcoding it in the component. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude <noreply@anthropic.com> * Change top bar health-check icon (#1505) * feat: update health check indicator * Change top bar health-check icon to a pulse shown only when attention is needed Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * fix(core): use kebab-case for sidecar docked-mode CSS variable Rename --osdSidecarSize to --osd-sidecar-size and switch attribute selectors to double quotes to satisfy the repo's stylelint rules (custom-property-pattern, string-quotes), registering sidecar.scss in the global selectors allowlist for its .euiFlyout references. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> * chore: use constant * Rework health-check popover * Rework health-check popover * List failing health checks in the nav-button popover Show the enabled non-green checks as an EuiHealth list in the health-check popover, labelled by the check name and with the error surfaced in a tooltip. Use the shared mapTaskStatusToHealthColor helper and TASK.RUN_RESULT constants instead of magic strings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> * Fix popover closes when clicking inside * Close popover after navigating to the health check --------- Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> * Bump 5.0.0 branch (#1513) feat: bump 5.0.0 * Fix RPM changelog entry order causing build failure (#1516) Fix RPM changelog entry order for 5.0.0 The 5.0.0 changelog entry was placed out of descending chronological order, causing rpmbuild to fail while parsing %changelog. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1517) Remove unnecessary debhelper install-time dependency (#1484) fix: remove unnecessary debhelper install-time dependency debhelper is only required to build the .deb package (declared under Build-Depends in dev-tools/build-packages/deb/debian/control), not to install a pre-built one. Remove it from the apt-get install steps used to test package install/upgrade. Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1537) Merge 4.14.9 into 5.0.0: no changes (verified 2026-08-28) * fix: remove inert opensearch_security.cookie.ttl setting (#1534) The dashboard config declares opensearch_security.cookie.ttl, but the security plugin never reads it: only opensearch_security.session.ttl governs session/cookie expiry. Shipping the setting misleads operators into believing it bounds the cookie lifetime. Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Claude <noreply@anthropic.com> * Bump 5.0.0 branch (#1545) feat: bump 5.0.0 * Revert bump 5.0.0 branch (#1546) feat: revert 5.0.0 references * Fix changelog not in descending chronological order (#1548) * fix: keep RPM changelog entries in descending date order on re-bump (#1549) Re-bumping an existing version updated its date in place instead of repositioning it, so a newer date could end up below older entries and rpmbuild rejected the spec (%changelog not in descending chronological order). The entry is now removed and reinserted at the position matching its date. Also fixes date/sed portability on macOS (BSD date/sed vs GNU), and makes an invalid date abort the script instead of writing the error text into the changelog. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * Bump 5.0.0 branch (#1551) feat: bump 5.0.0 * Review the 5.0.0 changelog (#1556) * docs(changelog): review the 5.0.0 entries Removed the open redirect fix entry (#1285) and the pre install script check entry (#1328, #1365). Reordered the sections to Added, Changed, Removed, Fixed, and qualified the two wazuh-dashboard-plugins references so they no longer read as wazuh-dashboard issues. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(changelog): reference issues instead of pull requests Each entry now links the issue the pull request closed, so the reference carries the description and the discussion instead of just the diff. Where an entry listed several references that resolve the same issue, it collapses to that one; where they resolve different issues, the entry keeps the main one and the rest are attached to it as sub-issues on GitHub, following the shape of wazuh-dashboard-plugins#8789. Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(changelog): merge the health check service and app entries Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> * docs(changelog): point the health check entry at its parent issue Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> --------- Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * Merge 4.14.9 into 5.0.0 (#1563) Merge 4.14.8 into 4.14.9 (#1562) Merge pull request #1507 from wazuh/change/1506-add-dev-image-construction-in-4x Add dev image build tooling for 4.14.x # Conflicts: # dev-tools/build-dev-image/README.md # dev-tools/build-dev-image/build-multiarch.sh # dev-tools/build-dev-image/install-plugins.sh # dev-tools/build-dev-image/plugins # dev-tools/build-dev-image/warmup-opensearch_dashboards.yml # dev-tools/build-dev-image/warmup-optimizer.sh # dev-tools/build-dev-image/wzd.dockerfile --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Rodrigo López <37187963+rodrigofez@users.noreply.github.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Wazuh CI <22834044+wazuhci@users.noreply.github.com> * Update header help menu snapshot to the 5.1 documentation URL WAZUH_DOCUMENTATION_URL is derived from the product version, so on main it now resolves to https://documentation.wazuh.com/5.1/ while the committed snapshot still held 5.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Signed-off-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Signed-off-by: Rodrigo Lopez <rodrigo.lopez@wazuh.com> Signed-off-by: Ian Yenien Serrano <63758389+yenienserrano@users.noreply.github.com> Co-authored-by: Federico Rodriguez <federico.rodriguez@wazuh.com> Co-authored-by: Antonio <34042064+Desvelao@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Rodrigo López <37187963+rodrigofez@users.noreply.github.com> Co-authored-by: Antonio David Gutiérrez <antonio.gutierrez@wazuh.com> Co-authored-by: Wazuh CI <22834044+wazuhci@users.noreply.github.com>
1 parent 7c8ba51 commit a91d766

5 files changed

Lines changed: 221 additions & 30 deletions

File tree

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# This workflow automates the build and push of Wazuh dashboard development
2+
# Docker images for different architectures (amd64 and arm64).
3+
#
4+
# This workflow:
5+
# - Builds multi-architecture Docker images for Wazuh dashboard development.
6+
# - Pushes individual architecture images to Quay.io registry.
7+
# - Creates and pushes a multi-arch manifest combining both architectures.
8+
# - Automatically extracts the Node.js version from .nvmrc and the OpenSearch
9+
# Dashboards version from package.json.
10+
# - Uses the branch the workflow runs on for wazuh-dashboard, and a single
11+
# optional input for the branch/tag of the plugin repositories
12+
# (wazuh-security-dashboards-plugin and wazuh-dashboard-plugins), which
13+
# defaults to that same branch when not provided.
14+
15+
name: (4.14.x) Build and Push Dev Image
16+
17+
on:
18+
workflow_dispatch:
19+
inputs:
20+
plugins_branch:
21+
description: 'Branch/tag/commit of wazuh-security-dashboards-plugin and wazuh-dashboard-plugins (defaults to the branch this workflow runs on)'
22+
required: false
23+
default: ''
24+
type: string
25+
tag:
26+
description: 'Tag for the Docker image'
27+
required: false
28+
default: ''
29+
type: string
30+
31+
jobs:
32+
extract-versions:
33+
runs-on: codebuild-github-actions-codebuild-runner-dashboard-amd-${{ github.run_id }}-${{ github.run_attempt }}
34+
outputs:
35+
node_version: ${{ steps.versions.outputs.node_version }}
36+
opensearch_version: ${{ steps.versions.outputs.opensearch_version }}
37+
tag: ${{ steps.versions.outputs.tag }}
38+
wazuh_branch: ${{ steps.versions.outputs.wazuh_branch }}
39+
plugins_branch: ${{ steps.versions.outputs.plugins_branch }}
40+
steps:
41+
- name: Checkout code
42+
uses: actions/checkout@v4
43+
44+
- name: Extract versions from repository
45+
id: versions
46+
run: |
47+
OPENSEARCH_VERSION=$(node -p "require('./package.json').version")
48+
NODE_VERSION=$(cat .nvmrc)
49+
50+
WAZUH_BRANCH="${{ github.ref_name }}"
51+
PLUGINS_BRANCH="${{ inputs.plugins_branch || github.ref_name }}"
52+
53+
TAG="${{ inputs.tag }}"
54+
if [ -z "$TAG" ]; then
55+
TAG="$OPENSEARCH_VERSION"
56+
fi
57+
58+
echo "node_version=${NODE_VERSION}" >> $GITHUB_OUTPUT
59+
echo "opensearch_version=${OPENSEARCH_VERSION}" >> $GITHUB_OUTPUT
60+
echo "tag=${TAG}" >> $GITHUB_OUTPUT
61+
echo "wazuh_branch=${WAZUH_BRANCH}" >> $GITHUB_OUTPUT
62+
echo "plugins_branch=${PLUGINS_BRANCH}" >> $GITHUB_OUTPUT
63+
64+
echo "📦 OpenSearch Dashboards Version: ${OPENSEARCH_VERSION}"
65+
echo "🏷️ Tag: ${TAG}"
66+
echo "📟 Node Version: ${NODE_VERSION}"
67+
echo "🌿 Wazuh Dashboard Branch: ${WAZUH_BRANCH}"
68+
echo "🌿 Plugins Branch: ${PLUGINS_BRANCH}"
69+
70+
build:
71+
runs-on: ${{ matrix.runner }}
72+
needs: [extract-versions]
73+
strategy:
74+
matrix:
75+
include:
76+
- platform: linux/amd64
77+
runner: ${{ format('codebuild-github-actions-codebuild-runner-dashboard-amd-{0}-{1}', github.run_id, github.run_attempt) }}
78+
arch: amd64
79+
- platform: linux/arm64
80+
runner: ${{ format('codebuild-github-actions-codebuild-runner-dashboard-arm-{0}-{1}', github.run_id, github.run_attempt) }}
81+
arch: arm64
82+
steps:
83+
- name: Checkout code
84+
uses: actions/checkout@v4
85+
86+
# Workaround: AWS CodeBuild runners do not start the Docker daemon automatically
87+
- name: Start Docker daemon
88+
run: |
89+
sudo nohup dockerd --storage-driver vfs > /var/log/dockerd.log 2>&1 &
90+
timeout 60 bash -c 'until docker info &>/dev/null 2>&1; do sleep 1; done'
91+
92+
- name: Set up Docker Buildx
93+
uses: docker/setup-buildx-action@v3
94+
with:
95+
driver-opts: |
96+
network=host
97+
98+
- name: Login to Quay.io
99+
uses: docker/login-action@v3
100+
with:
101+
registry: quay.io
102+
username: ${{ secrets.QUAY_USERNAME }}
103+
password: ${{ secrets.QUAY_TOKEN }}
104+
105+
- name: Build ${{ matrix.arch }} image
106+
run: |
107+
chmod +x ./dev-tools/build-dev-image/build-multiarch.sh
108+
cd ./dev-tools/build-dev-image
109+
110+
./build-multiarch.sh \
111+
--node-version "${{ needs.extract-versions.outputs.node_version }}" \
112+
--wazuh-branch "${{ needs.extract-versions.outputs.wazuh_branch }}" \
113+
--security-branch "${{ needs.extract-versions.outputs.plugins_branch }}" \
114+
--plugins-branch "${{ needs.extract-versions.outputs.plugins_branch }}" \
115+
--tag "${{ needs.extract-versions.outputs.tag }}-${{ matrix.arch }}" \
116+
--platform "${{ matrix.platform }}" \
117+
--push
118+
119+
create-manifest:
120+
runs-on: codebuild-github-actions-codebuild-runner-dashboard-amd-${{ github.run_id }}-${{ github.run_attempt }}
121+
needs: [extract-versions, build]
122+
steps:
123+
# Workaround: AWS CodeBuild runners do not start the Docker daemon automatically
124+
- name: Start Docker daemon
125+
run: |
126+
sudo nohup dockerd --storage-driver vfs > /var/log/dockerd.log 2>&1 &
127+
timeout 60 bash -c 'until docker info &>/dev/null 2>&1; do sleep 1; done'
128+
129+
- name: Set up Docker Buildx
130+
uses: docker/setup-buildx-action@v3
131+
132+
- name: Login to Quay.io
133+
uses: docker/login-action@v3
134+
with:
135+
registry: quay.io
136+
username: ${{ secrets.QUAY_USERNAME }}
137+
password: ${{ secrets.QUAY_TOKEN }}
138+
139+
- name: Create and push multi-arch manifest
140+
run: |
141+
TAG="${{ needs.extract-versions.outputs.tag }}"
142+
143+
docker buildx imagetools create -t quay.io/wazuh/osd-dev:${TAG} \
144+
quay.io/wazuh/osd-dev:${TAG}-amd64 \
145+
quay.io/wazuh/osd-dev:${TAG}-arm64
146+
147+
echo "✅ Multi-arch manifest created and pushed!"
148+
echo "📦 Image available at: quay.io/wazuh/osd-dev:${TAG}"

dev-tools/build-packages/deb/debian/changelog

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ wazuh-dashboard (5.0.0-RELEASE) stable; urgency=low
1414

1515
* More info: https://documentation.wazuh.com/current/release-notes/release-5-0-0.html
1616

17-
-- Wazuh, Inc <info@wazuh.com> Wed, 09 Sep 2026 12:00:00 +0000
17+
-- Wazuh, Inc <info@wazuh.com> Wed, 23 Sep 2026 12:00:00 +0000
1818

1919
wazuh-dashboard (4.14.9-RELEASE) stable; urgency=low
2020

dev-tools/build-packages/rpm/wazuh-dashboard.spec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,12 +481,12 @@ rm -fr %{buildroot}
481481
%changelog
482482
* Wed Sep 30 2026 support <info@wazuh.com> - 5.1.0
483483
- More info: https://documentation.wazuh.com/current/release-notes/release-5-1-0.html
484+
* Wed Sep 23 2026 support <info@wazuh.com> - 5.0.0
485+
- More info: https://documentation.wazuh.com/current/release-notes/release-5-0-0.html
484486
* Wed Sep 16 2026 support <info@wazuh.com> - 4.14.9
485487
- More info: https://documentation.wazuh.com/current/release-notes/release-4-14-9.html
486488
* Wed Sep 09 2026 support <info@wazuh.com> - 5.0.1
487489
- More info: https://documentation.wazuh.com/current/release-notes/release-5-0-1.html
488-
* Wed Sep 09 2026 support <info@wazuh.com> - 5.0.0
489-
- More info: https://documentation.wazuh.com/current/release-notes/release-5-0-0.html
490490
* Thu Sep 03 2026 support <info@wazuh.com> - 4.10.5
491491
- More info: https://documentation.wazuh.com/current/release-notes/release-4-10-5.html
492492
* Wed Sep 02 2026 support <info@wazuh.com> - 4.14.8

src/core/public/chrome/ui/header/__snapshots__/header_help_menu.test.tsx.snap

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/repository_bumper.sh

Lines changed: 64 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -532,21 +532,37 @@ update_build_docker_dev_multiarch_readme() {
532532
# Function to convert date from yyyy-mm-dd to RPM format (e.g., "Thu Sep 04 2025")
533533
convert_date_to_rpm_format() {
534534
local input_date="$1"
535-
# Use date command to convert and format with English locale
536-
LC_ALL=C date -d "$input_date" "+%a %b %d %Y" 2>/dev/null || {
537-
log "ERROR: Invalid date format: $input_date"
538-
exit 1
539-
}
535+
# Use date command to convert and format with English locale (GNU date on Linux, BSD date on macOS)
536+
if [[ "$OSTYPE" == "darwin"* ]]; then
537+
LC_ALL=C date -j -f "%Y-%m-%d" "$input_date" "+%a %b %d %Y" 2>/dev/null && return 0
538+
else
539+
LC_ALL=C date -d "$input_date" "+%a %b %d %Y" 2>/dev/null && return 0
540+
fi
541+
log "ERROR: Invalid date format: $input_date"
542+
return 1
543+
}
544+
545+
# Function to convert an RPM changelog date (e.g. "Thu Sep 10 2026") to epoch seconds, for ordering comparisons
546+
rpm_date_to_epoch() {
547+
local rpm_date="$1"
548+
if [[ "$OSTYPE" == "darwin"* ]]; then
549+
LC_ALL=C date -j -f "%a %b %d %Y" "$rpm_date" "+%s" 2>/dev/null
550+
else
551+
LC_ALL=C date -d "$rpm_date" "+%s" 2>/dev/null
552+
fi
540553
}
541554

542555
# Function to convert date from yyyy-mm-dd to Debian RFC 2822 format (e.g., "Thu, 04 Sep 2025 12:00:00 +0000")
543556
convert_date_to_deb_format() {
544557
local input_date="$1"
545-
# Use date command to convert and format with English locale
546-
LC_ALL=C date -d "$input_date" "+%a, %d %b %Y 12:00:00 +0000" 2>/dev/null || {
547-
log "ERROR: Invalid date format: $input_date"
548-
exit 1
549-
}
558+
# Use date command to convert and format with English locale (GNU date on Linux, BSD date on macOS)
559+
if [[ "$OSTYPE" == "darwin"* ]]; then
560+
LC_ALL=C date -j -f "%Y-%m-%d" "$input_date" "+%a, %d %b %Y 12:00:00 +0000" 2>/dev/null && return 0
561+
else
562+
LC_ALL=C date -d "$input_date" "+%a, %d %b %Y 12:00:00 +0000" 2>/dev/null && return 0
563+
fi
564+
log "ERROR: Invalid date format: $input_date"
565+
return 1
550566
}
551567

552568
# Function to update RPM changelog
@@ -564,24 +580,50 @@ update_rpm_changelog() {
564580

565581
log "Updating RPM changelog..."
566582

567-
local rpm_date=$(convert_date_to_rpm_format "$DATE")
583+
local rpm_date
584+
rpm_date=$(convert_date_to_rpm_format "$DATE") || exit 1
568585
local changelog_entry="* $rpm_date support <info@wazuh.com> - $VERSION"
569586
local more_info_entry="- More info: https://documentation.wazuh.com/current/release-notes/release-$(echo $VERSION | tr '.' '-').html"
570587

588+
local new_epoch
589+
new_epoch=$(rpm_date_to_epoch "$rpm_date") || exit 1
590+
571591
# Check if entry already exists
572-
if grep -q "* .* support <info@wazuh.com> - $VERSION" "$RPM_CHANGELOG"; then
573-
log "RPM changelog entry for version $VERSION already exists. Updating date..."
574-
# Update existing entry date
575-
sed -i "s/^\* .* support <info@wazuh.com> - $VERSION$/$changelog_entry/" "$RPM_CHANGELOG"
576-
log "Successfully updated RPM changelog date for version $VERSION"
592+
if grep -q "^\* .* support <info@wazuh.com> - $VERSION\$" "$RPM_CHANGELOG"; then
593+
log "RPM changelog entry for version $VERSION already exists. Repositioning it with the updated date..."
594+
# Remove the existing entry (its changelog line and following "More info" line);
595+
# it gets reinserted below at the position matching its (possibly new) date, so
596+
# entries stay in descending order regardless of where the old entry used to sit.
597+
sed_inplace "/^\* .* support <info@wazuh.com> - $VERSION\$/,+1d" "$RPM_CHANGELOG"
577598
else
578599
log "Adding new RPM changelog entry for version $VERSION..."
579-
# Find the %changelog line and add new entry after it
580-
sed -i "/^%changelog$/a\\
600+
fi
601+
602+
# Entries must stay in descending date order (rpmbuild enforces it), so insert the
603+
# entry right before the first existing entry whose date is not newer than it.
604+
local insert_before_line=""
605+
local line_num=0
606+
while IFS= read -r line; do
607+
line_num=$((line_num + 1))
608+
if [[ "$line" =~ ^\*\ (.*)\ support ]]; then
609+
local existing_epoch
610+
existing_epoch=$(rpm_date_to_epoch "${BASH_REMATCH[1]}") || continue
611+
if [ "$existing_epoch" -le "$new_epoch" ]; then
612+
insert_before_line=$line_num
613+
break
614+
fi
615+
fi
616+
done < "$RPM_CHANGELOG"
617+
618+
if [ -n "$insert_before_line" ]; then
619+
sed_inplace "${insert_before_line}i\\
581620
$changelog_entry\\
582621
$more_info_entry" "$RPM_CHANGELOG"
583-
log "Successfully added new RPM changelog entry for version $VERSION"
622+
else
623+
# New entry is older than every existing one (or there are no entries yet): goes last
624+
printf '%s\n%s\n' "$changelog_entry" "$more_info_entry" >> "$RPM_CHANGELOG"
584625
fi
626+
log "Successfully updated RPM changelog entry for version $VERSION"
585627
}
586628

587629
# Function to update Debian changelog
@@ -599,7 +641,8 @@ update_deb_changelog() {
599641

600642
log "Updating Debian changelog..."
601643

602-
local deb_date=$(convert_date_to_deb_format "$DATE")
644+
local deb_date
645+
deb_date=$(convert_date_to_deb_format "$DATE") || exit 1
603646
local package_version="$VERSION-RELEASE"
604647
local changelog_header="wazuh-dashboard ($package_version) stable; urgency=low"
605648
local more_info_entry=" * More info: https://documentation.wazuh.com/current/release-notes/release-$(echo $VERSION | tr '.' '-').html"
@@ -613,7 +656,7 @@ update_deb_changelog() {
613656
log "Debian changelog entry for version $VERSION already exists. Updating date..."
614657
# Update existing entry date
615658
# Find the line with the version and then find the next maintainer line to update
616-
sed -i "/wazuh-dashboard ($escaped_package_version)/,/^ *-- Wazuh, Inc/ s|^ *-- Wazuh, Inc <info@wazuh.com> .*|$maintainer_line|" "$DEB_CHANGELOG"
659+
sed_inplace "/wazuh-dashboard ($escaped_package_version)/,/^ *-- Wazuh, Inc/ s|^ *-- Wazuh, Inc <info@wazuh.com> .*|$maintainer_line|" "$DEB_CHANGELOG"
617660
log "Successfully updated Debian changelog date for version $VERSION"
618661
else
619662
log "Adding new Debian changelog entry for version $VERSION..."

0 commit comments

Comments
 (0)