Skip to content

Conversation

illescad
Copy link

@illescad illescad commented Oct 5, 2025

Providing support for SLES and Opensuse

Resolves #10875 by adding SLES v15.7 and Opensuse Leap 15.6 packaging. Opensuse repo images are minimal so adding -base to the target will case errors. To get around this multiple Dockerfiles were created for distro/opensuse/15.6*


Testing
Before we can approve your change; please submit the following in a comment:

  • [N/A] Example configuration file for the change

  • [N/A] Debug log output from testing the change

  • [N/A] Attached Valgrind output that shows no leaks or memory corruption was found

If this is a change to packaging of containers or native binaries then please confirm it works for all targets.

  • Run local packaging test showing all targets (including any new ones) build.
  • Set ok-package-test label to test for all targets (requires maintainer to do).

Documentation

  • [N/A] Documentation required for this feature

Backporting

  • [N/A] Backport to latest stable release.

Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.

Summary by CodeRabbit

  • New Features

    • Added official packages and repositories for openSUSE Leap 15.6 and SLES 15.7 (x86_64 and arm64).
    • install.sh now supports zypper, including optional version pinning.
    • Multi-arch build artifacts provided for these distros.
  • Documentation

    • Updated Linux distro support table with openSUSE 15.6 and SLES 15.7.
  • Tests

    • Extended release verification to cover zypper-based installations on openSUSE and SLES.
  • Chores

    • Added zypper-based repository update flow.
    • Improved build script to handle multi-arch builder selection for new distros.

Copy link

coderabbitai bot commented Oct 5, 2025

Walkthrough

Adds OpenSUSE Leap 15.6 and SLES 15.7 packaging support: new Dockerfiles for multi-arch builds, build config targets, zypper-based repo update script, test script path for zypper, installer branch for OpenSUSE/SLES, updated repo routing, and docs table update. Minor build script tweak to derive a builder stage name from distro/version.

Changes

Cohort / File(s) Summary of changes
SUSE distro Dockerfiles
packaging/distros/opensuse/Dockerfile, packaging/distros/sles/Dockerfile
New multi-stage, multi-arch Dockerfiles for OpenSUSE Leap 15.6 and SLES 15.7. Install build deps via zypper, enable aarch64 via qemu, configure CMake flags, build and package RPMs, output to /output.
Packaging configuration
packaging/build-config.json, packaging/update-repos.sh, packaging/update-zypper-repo.sh
Adds RPM targets for opensuse/leap:15.6 and sles/15.7 (x86_64 and arm64v8). Routes SUSE repos to new zypper-based updater. New script generates/signed RPM repo metadata and optional .repo files for SUSE/OpenSUSE.
Build and test scripts
packaging/build.sh, packaging/test-release-packages.sh
build.sh derives BASE_BUILDER from distro name and sanitized version. test-release-packages.sh adds ZYPPER_TARGETS and loop mirroring YUM tests to install and verify via zypper.
Installer
install.sh
Adds OpenSUSE/SLES branch using zypper: imports GPG, writes repo file, refreshes, and installs with optional parameters/version pinning. Introduces ZYPPER_PARAMETERS and ZYPPER_VERSION.
Docs
packaging/README.md
Expands Linux distros table with OpenSUSE 15.6 and SLES 15.7 (x86_64/arm64v8). Header formatting adjusted.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant InstallScript as install.sh
  participant OS as OpenSUSE/SLES Host
  participant Repo as Fluent Bit Repo

  User->>InstallScript: Run with RELEASE_VERSION/params
  InstallScript->>OS: Detect distro (opensuse-leap|sles)
  InstallScript->>OS: Import GPG key
  InstallScript->>OS: Write fluent-bit.repo (baseurl,gpgkey)
  InstallScript->>OS: zypper refresh
  InstallScript->>Repo: Fetch metadata/RPMs
  Repo-->>InstallScript: Packages/repodata
  InstallScript->>OS: zypper install fluent-bit[=ZYPPER_VERSION]
  OS-->>User: Installation result/version
Loading
sequenceDiagram
  autonumber
  participant Updater as packaging/update-repos.sh
  participant ZypperUpdater as update-zypper-repo.sh
  participant YumUpdater as update-yum-repo.sh
  participant S3 as AWS S3

  Updater->>Updater: For each RPM_REPO_PATH
  alt opensuse/* or sles/*
    Updater->>ZypperUpdater: Update repo (sign RPMs, createrepo_c)
    opt AWS_S3_BUCKET set
      ZypperUpdater->>S3: Write .repo file (baseurl,gpgkey)
    end
  else other RPM repos
    Updater->>YumUpdater: Update repo (existing path)
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • niedbalski
  • celalettin1286
  • patrick-stephens

Poem

A rabbit taps the zypper drum—tuk-tuk, RPMs hum,
New SUSE trails, two arches sail, to /output they come.
Repos signed, the carrots lined, metadata’s neat,
Leap and SLES now join the fest—how fleet!
hop hop—install complete. 🥕🐇

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title clearly and concisely reflects the primary change by stating that packaging support is being added for OpenSUSE Leap 15.6 and SLES 15.7, matching the contents of the changeset without extraneous detail.
Linked Issues Check ✅ Passed The pull request fully addresses each coding objective from issue #10875 by adding native SLES and OpenSUSE packaging support, introducing Dockerfiles for both distros, extending the test script with zypper targets, adding the update-zypper-repo.sh script, and updating configuration and install scripts accordingly.
Out of Scope Changes Check ✅ Passed All modifications directly support the new OpenSUSE and SLES packaging objectives, and there are no unrelated or extraneous changes outside the scope of the linked issue.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 964ebca and f4ff22a.

📒 Files selected for processing (8)
  • packaging/README.md (1 hunks)
  • packaging/build-config.json (1 hunks)
  • packaging/distros/opensuse/15.6.arm64v8/Dockerfile (1 hunks)
  • packaging/distros/opensuse/15.6/Dockerfile (1 hunks)
  • packaging/distros/opensuse/Dockerfile (1 hunks)
  • packaging/distros/sles/Dockerfile (1 hunks)
  • packaging/test-release-packages.sh (1 hunks)
  • packaging/update-repos.sh (1 hunks)
🔇 Additional comments (3)
packaging/distros/opensuse/15.6.arm64v8/Dockerfile (1)

12-24: Confirm availability of cmake3-full.

On Leap 15.x the package is usually cmake/cmake-full; cmake3-full may not exist and would break the build. Please confirm the package name and adjust if necessary (likely cmake-full).

packaging/distros/opensuse/15.6/Dockerfile (1)

7-19: Verify the cmake3-full dependency.

Same concern as the arm64 Dockerfile: ensure cmake3-full exists on Leap 15.6; otherwise switch to cmake-full to avoid install failures.

packaging/distros/opensuse/Dockerfile (1)

16-28: Please double-check the cmake3-full install.

For the generic OpenSUSE builder we also request confirmation that cmake3-full is present on the chosen Leap image; if not, use the available cmake-full package instead.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (4)
packaging/README.md (1)

40-43: Docs update looks good; minor style nit

Entries are correct. Consider dropping bold on “SLES” to match the table’s neutral style used for other distros.

packaging/test-release-packages.sh (1)

123-141: Harden zypper invocations to avoid key prompts

Add --gpg-auto-import-keys to refresh/install to eliminate potential non-interactive key prompts on fresh images.

-        sh -c "zypper --non-interactive refresh && zypper --non-interactive install gpg curl; $INSTALL_CMD && /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
+        sh -c "zypper --non-interactive --gpg-auto-import-keys refresh && zypper --non-interactive --gpg-auto-import-keys install gpg curl; $INSTALL_CMD && /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
install.sh (2)

158-172: Avoid non-interactive key prompts on repo refresh/install

Add --gpg-auto-import-keys to the zypper commands to ensure fully non-interactive runs across images.

- zypper --non-interactive refresh
- $INSTALL_CMD_PREFIX zypper --non-interactive $ZYPPER_PARAMETERS install $INSTALL_PACKAGE_NAME$ZYPPER_VERSION
+ zypper --non-interactive --gpg-auto-import-keys refresh
+ $INSTALL_CMD_PREFIX zypper --non-interactive --gpg-auto-import-keys $ZYPPER_PARAMETERS install $INSTALL_PACKAGE_NAME$ZYPPER_VERSION

161-169: Optional repo metadata fields

Consider adding type=rpm-md and autorefresh=1 for clarity and default behavior parity with common SUSE repo snippets. Not required.

 [fluent-bit]
 name = Fluent Bit
 baseurl = $RELEASE_URL/$SUSE_OS/$SUSE_VER
 gpgcheck=1
 repo_gpgcheck=1
 gpgkey=$RELEASE_KEY
 enabled=1
+type=rpm-md
+autorefresh=1
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f4ff22a and 9249b7b.

📒 Files selected for processing (3)
  • install.sh (3 hunks)
  • packaging/README.md (1 hunks)
  • packaging/test-release-packages.sh (2 hunks)
🔇 Additional comments (4)
packaging/test-release-packages.sh (1)

63-66: Good targets

Correct images for openSUSE Leap and SLES (BCI base). Nice fix separating Zypper-based distros.

install.sh (3)

17-17: Env parameter passthrough looks good

ZYPPER_PARAMETERS addition mirrors APT/YUM patterns. No issues.


52-57: Version pinning parity

ZYPPER_VERSION addition aligns with YUM_VERSION format. Good for consistent pinning.


151-172: Consistency check passed: packaging/update-repos.sh and packaging/build-config.json already include opensuse/15.6 and sles/15.7.

@patrick-stephens patrick-stephens added the ok-package-test Run PR packaging tests label Oct 7, 2025
@patrick-stephens
Copy link
Collaborator

@illescad can you raise and link a docs PR as well? Also just tweak the commits and PR title to include packaging: prefix and ensure the DCO is done.

@illescad illescad force-pushed the illescad-sles-packaging branch from 75c6d92 to f52823d Compare October 7, 2025 14:07
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 75c6d92 and f52823d.

📒 Files selected for processing (9)
  • install.sh (3 hunks)
  • packaging/README.md (1 hunks)
  • packaging/build-config.json (1 hunks)
  • packaging/distros/opensuse/15.6.arm64v8/Dockerfile (1 hunks)
  • packaging/distros/opensuse/15.6/Dockerfile (1 hunks)
  • packaging/distros/opensuse/Dockerfile (1 hunks)
  • packaging/distros/sles/Dockerfile (1 hunks)
  • packaging/test-release-packages.sh (2 hunks)
  • packaging/update-repos.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • packaging/README.md
  • packaging/distros/sles/Dockerfile
  • install.sh
  • packaging/distros/opensuse/15.6/Dockerfile
  • packaging/build-config.json
  • packaging/distros/opensuse/Dockerfile
  • packaging/update-repos.sh

Comment on lines 11 to 24
RUN zypper up -y && \
zypper install -y --no-recommends \
rpm-build \
curl ca-certificates wget unzip flex bison \
gcc gcc-c++ \
cmake3-full \
make \
bash \
systemd-devel \
postgresql postgresql-devel postgresql-server \
cyrus-sasl cyrus-sasl-devel \
libopenssl3 libopenssl-3-devel \
libyaml-devel && \
zypper clean -a && rm -rf /var/cache/zypp/*
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

cmake3-full doesn’t exist in Leap 15.x repos

zypper install … cmake3-full will fail because the package name in Leap/SLES is cmake (with the optional cmake-full pattern), not cmake3-full. The Docker build will therefore break before we even reach CMake configure. Please swap in the correct package name (typically cmake or cmake-full) so the image can install successfully.

🤖 Prompt for AI Agents
In packaging/distros/opensuse/15.6.arm64v8/Dockerfile around lines 11-24, the
Dockerfile attempts to install a non-existent package named cmake3-full on Leap
15.x; replace cmake3-full with the correct package name (typically cmake or the
cmake-full pattern) in the zypper install line so the install succeeds, then
rebuild the image to verify CMake is available.

Comment on lines 139 to 141
sh -c "zypper --non-interactive --gpg-auto-import-keys refresh \
zypper --non-interactive --gpg-auto-import-keys install gpg curl; \
$INSTALL_CMD /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Fix command chaining in the zypper loop

The escaped newline glues both zypper invocations into a single command (zypper … refresh zypper … install …), which fails, and $INSTALL_CMD /opt/… treats the version check as arguments to the installer, so /opt/fluent-bit/bin/fluent-bit --version never runs. Use explicit && separators just like the YUM/APT blocks.

-        sh -c "zypper --non-interactive --gpg-auto-import-keys refresh \
-               zypper --non-interactive --gpg-auto-import-keys install gpg curl; \
-               $INSTALL_CMD /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
+        sh -c "zypper --non-interactive --gpg-auto-import-keys refresh && \
+               zypper --non-interactive --gpg-auto-import-keys install gpg curl && \
+               $INSTALL_CMD && /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sh -c "zypper --non-interactive --gpg-auto-import-keys refresh \
zypper --non-interactive --gpg-auto-import-keys install gpg curl; \
$INSTALL_CMD /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
sh -c "zypper --non-interactive --gpg-auto-import-keys refresh && \
zypper --non-interactive --gpg-auto-import-keys install gpg curl && \
$INSTALL_CMD && /opt/fluent-bit/bin/fluent-bit --version" | tee "$LOG_FILE"
🤖 Prompt for AI Agents
In packaging/test-release-packages.sh around lines 139 to 141, the zypper
commands are joined by an escaped newline which concatenates them into a single
invalid command and causes the version check to be passed as arguments to the
installer; change the chaining to use explicit && between commands (e.g. zypper
... refresh && zypper ... install gpg curl && $INSTALL_CMD
/opt/fluent-bit/bin/fluent-bit --version) so each zypper invocation runs
sequentially and the --version check executes as a separate command.

@illescad illescad force-pushed the illescad-sles-packaging branch from f52823d to f15e9e4 Compare October 7, 2025 14:13
@patrick-stephens patrick-stephens changed the title Packaging for Opensuse Leap 15.6 and SLES 15.7 packaging: add support for Opensuse Leap 15.6 and SLES 15.7 Oct 7, 2025
@patrick-stephens
Copy link
Collaborator

@illescad if you can sort the DCO and docs PR that would be great so we can merge? Plus just check the CodeRabbit comments and resolve/fix as needed.

…is not working. Currently testing ./build.sh -d opensuse/leap:15.6

Signed-off-by: Dan Illescas <[email protected]>
…n test-release-packages.sh

Signed-off-by: Dan Illescas <[email protected]>
@illescad illescad force-pushed the illescad-sles-packaging branch from c6c3a76 to 3389284 Compare October 8, 2025 14:34
@illescad
Copy link
Author

illescad commented Oct 8, 2025

@patrick-stephens working through the the docs PR today and any coderabbit fixes

@patrick-stephens
Copy link
Collaborator

@patrick-stephens working through the the docs PR today and any coderabbit fixes

Thanks mate, let me know when you're done and I'll re-approve for merge. Looks good to me and I'll probably take it downstream to our repo straightaway anyway!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (7)
packaging/update-zypper-repo.sh (7)

2-2: Harden shell options

Add pipefail to catch errors in pipelines; optionally gate xtrace with a DEBUG flag.

-set -eux
+set -euo pipefail
+${DEBUG:+set -x}

36-41: realpath flags portability; add fallback

realpath -sm may not be available on all images. Provide a fallback to readlink -f or drop -s.

-REPO_DIR=$(realpath -sm "$BASE_PATH/$RPM_REPO")
+if command -v realpath >/dev/null 2>&1; then
+  REPO_DIR=$(realpath -m "$BASE_PATH/$RPM_REPO")
+elif command -v readlink >/dev/null 2>&1; then
+  REPO_DIR=$(readlink -f "$BASE_PATH/$RPM_REPO")
+else
+  REPO_DIR=$(cd "$BASE_PATH/$RPM_REPO" && pwd -P)
+fi

Please confirm realpath -s exists on your target SUSE/Leap images.


42-46: RPM signing: robustness and batching

  • Use null-delimited paths and batch to reduce process spawn and handle odd filenames.
  • Ensure we only target regular files.
-    find "$REPO_DIR" -name "*-bit-*.rpm" -exec rpm --define "_gpg_name $GPG_KEY" --addsign {} \;
+    find "$REPO_DIR" -type f -name "*-bit-*.rpm" -print0 | \
+      xargs -0 -r rpm --define "_gpg_name $GPG_KEY" --addsign

50-66: Align metadata signing with zypper checks

You sign repomd.xml, but the generated .repo lacks repo_gpgcheck=1. Either add it (recommended) or skip metadata signing.

 baseurl=https://$AWS_S3_BUCKET.s3.amazonaws.com/$RPM_REPO/
 enabled=1
 gpgkey=https://$AWS_S3_BUCKET.s3.amazonaws.com/fluentbit.key
 gpgcheck=1
+repo_gpgcheck=1
 autorefresh=1

If you prefer not to enforce repo metadata verification, remove the repomd signatures to avoid confusion.

Also applies to: 68-76


60-63: Allow overriding base URL (CDN/region)

Hardcoding the S3 endpoint can be limiting. Support REPO_BASEURL override while keeping current default.

-baseurl=https://$AWS_S3_BUCKET.s3.amazonaws.com/$RPM_REPO/
+baseurl=${REPO_BASEURL:-https://$AWS_S3_BUCKET.s3.amazonaws.com/$RPM_REPO/}

29-31: Package name hint

On SUSE, the package providing createrepo is typically createrepo_c. Adjust helper text.

-echo "ERROR: 'createrepo' command not found. Please install it, e.g., 'zypper install createrepo'."
+echo "ERROR: 'createrepo' command not found. Install it, e.g., 'zypper install createrepo_c'."

1-3: Set a sane umask for repo files

Ensure world-readable artifacts.

 #!/bin/bash
-set -euo pipefail
+umask 022
+set -euo pipefail
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3389284 and b8d8fb5.

📒 Files selected for processing (1)
  • packaging/update-zypper-repo.sh (1 hunks)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you need this as it should be part of the opensuse/Dockerfile?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had an issue with docker finding the correct base image when trying to set the specific leap versions. So if using the opensuse/Dockerfile and setting the target to something like
./packaging/build.sh -d opensuse/leap:15.6
Then the build.sh will add a -base to the image name, opensuse/leap:15.6-base, which does not exist for opensuse. The standard naming convention is opensuse/leap:15.6 which is already the minimal image.

I wasnt sure how to correctly get around this, I can also add a check in build.sh if DISTRO is opensuse to not append the -base. Or maybe there is another way I am not understanding

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you need this as it should be part of the opensuse/Dockerfile?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think i discovered the problem i had on why i thought i needed multiple Dockerfiles. The build.sh needs to be updated to replace : with - if i want to call ./build.sh -d opensuse/leap:15.6. I'll push an update to remove the extra Dockerfiles.

Is there a preference on the name we will pass the target distro to build.sh?
./build.sh -d opensuse/leap:15.6
or
./build.sh -d opensuse/leap-15.6
or
./build.sh -d opensuse/15.6

opensuse/leap:15.6 makes sense to me and I can make a change to build.sh to replace : with - to make sure its a valid stage name.

FROM multiarch/qemu-user-static:x86_64-aarch64 AS multiarch-aarch64

# opensuse/leap base image
FROM registry.suse.com/bci/bci-base:15.7 AS sles-15.7-base
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the main deltas between opensuse and sles? Just want to make sure we capture which one people should use for their targets.

Copy link
Author

@illescad illescad Oct 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah i think I caused some confusion, I need to update that comment to say its the SLES base container image not # opensuse/leap base image. But its just building from SLES image vs the community os opensuse, and people would want to target the os they are building for.
@jhansonhpe do you have a better explanation for main deltas?

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
packaging/README.md (1)

40-43: Docs addition looks consistent; consider noting Tumbleweed unsupported

Targets and “Target Option” values align with build.sh and repo paths. Optional: add a short note that openSUSE Tumbleweed isn’t supported via install.sh to avoid confusion.

packaging/update-zypper-repo.sh (2)

28-39: Honor CREATE_REPO_CMD in availability check and message

You define CREATE_REPO_CMD but check for a hardcoded createrepo. Use the variable for consistency and overrides.

-# Check for createrepo
-if ! command -v createrepo &> /dev/null; then
-    echo "ERROR: 'createrepo' command not found. Please install it, e.g., 'zypper install createrepo'."
+# Check for createrepo-compatible command
+if ! command -v "$CREATE_REPO_CMD" &> /dev/null; then
+    echo "ERROR: '$CREATE_REPO_CMD' not found. Install it, e.g., 'zypper install createrepo'."
     exit 1
 fi

49-53: Robust signing: handle spaces and show failures

Minor hardening: use -print0 with xargs and fail the script if any signing fails.

-if [[ "$DISABLE_SIGNING" != "true" ]]; then
-    # Sign all RPMs created for this target, cover both fluent-bit and legacy packages
-    find "$REPO_DIR" -name "*-bit-*.rpm" -exec rpm --define "_gpg_name $GPG_KEY" --addsign {} \;
-fi
+if [[ "$DISABLE_SIGNING" != "true" ]]; then
+    # Sign all RPMs (fluent-bit and legacy td-agent-bit)
+    find "$REPO_DIR" -name "*-bit-*.rpm" -print0 | xargs -0 -r -n1 \
+      rpm --define "_gpg_name $GPG_KEY" --addsign
+fi
packaging/update-repos.sh (1)

61-68: Pass BASE_PATH explicitly to child scripts to reduce env coupling

update-zypper-repo.sh expects BASE_PATH via env or $1. Pass it to be explicit and resilient.

-        "opensuse/"* | "sles/"*)
-            /bin/bash -eux "$SCRIPT_DIR/update-zypper-repo.sh"
+        "opensuse/"* | "sles/"*)
+            /bin/bash -eux "$SCRIPT_DIR/update-zypper-repo.sh" "$BASE_PATH"
             ;;
         *)
-            /bin/bash -eux "$SCRIPT_DIR/update-yum-repo.sh"
+            /bin/bash -eux "$SCRIPT_DIR/update-yum-repo.sh" "$BASE_PATH"
             ;;
packaging/distros/sles/Dockerfile (1)

63-71: CMake flags: remove unused FLB_OUT_KAFKA arg or wire it through

You define FLB_OUT_KAFKA but pass FLB_KAFKA to CMake. Either drop FLB_OUT_KAFKA or add the corresponding -DFLB_OUT_KAFKA flag if intended.

-ARG FLB_OUT_KAFKA=On
...
-    -DFLB_KAFKA="$FLB_KAFKA" \
+    -DFLB_KAFKA="$FLB_KAFKA" \
+    # If separate output toggle exists, include:
+    # -DFLB_OUT_KAFKA="$FLB_OUT_KAFKA" \
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b8d8fb5 and 1e4ad4d.

📒 Files selected for processing (8)
  • install.sh (3 hunks)
  • packaging/README.md (1 hunks)
  • packaging/build-config.json (1 hunks)
  • packaging/build.sh (1 hunks)
  • packaging/distros/opensuse/Dockerfile (1 hunks)
  • packaging/distros/sles/Dockerfile (1 hunks)
  • packaging/update-repos.sh (2 hunks)
  • packaging/update-zypper-repo.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • packaging/distros/opensuse/Dockerfile
  • packaging/build-config.json
🔇 Additional comments (5)
install.sh (2)

151-169: openSUSE Leap zypper branch LGTM

Repo stanza, key import, refresh, and install flow look correct for Leap using VERSION_ID.


171-188: Verify zypper’s $releasever expansion on SLES 15.7
Test on a SLES 15.7 instance to confirm $releasever is correctly expanded in the repo URL; if it isn’t, replace with $VERSION_ID (or a sanitized SLES version):

- baseurl = $RELEASE_URL/sles/\$releasever
+ baseurl = $RELEASE_URL/sles/$VERSION_ID
packaging/update-repos.sh (1)

46-48: Repo list update LGTM

New SUSE paths present: opensuse/leap/15.6 and sles/15.7.

packaging/build.sh (1)

63-71: Stage name derivation matches versioned base stages

Constructing BASE_BUILDER as "-<cleaned_version>-base" aligns with SLES stage names (e.g., sles-15.7-base) and likely the opensuse/leap:15.6 Dockerfile. Good.

If opensuse’s Dockerfile uses unversioned base stage names, update it to include the version or adjust this derivation accordingly.

packaging/distros/sles/Dockerfile (1)

9-20: Base images and tooling look correct for SLES 15.7

Multi-arch bases, qemu setup, zypper install set, and cleanup steps are appropriate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-required ok-package-test Run PR packaging tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add suse and sles as packing/distros

2 participants