From 88902aa572f7f959589f598b2a8fe5737a23700a Mon Sep 17 00:00:00 2001 From: Torsten Wierschin Date: Thu, 8 Oct 2026 10:29:24 +0000 Subject: [PATCH] Adds rpm/deb package building option --- .../qt6-migrated-legatus/new_docker_build.sh | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/qt6-after/qt6-migrated-legatus/new_docker_build.sh b/qt6-after/qt6-migrated-legatus/new_docker_build.sh index 00e55eb27..c5661905d 100755 --- a/qt6-after/qt6-migrated-legatus/new_docker_build.sh +++ b/qt6-after/qt6-migrated-legatus/new_docker_build.sh @@ -103,6 +103,14 @@ Environment variable overrides: DELETE_PREBUILT_IMAGE=ON|OFF DOCKER_IMAGE= +Jenkins builder options (for RPM/DEB package production): + --run-jenkins-builder Run jenkins_builder_ubuntu26.sh inside container to produce packages + --package-output-dir DIR Directory to mount for package output (default: ./packages-out) + --lts-version VERSION LTS version for package (default: 1.0) + --project NAME Project name for package (default: guez) + --build-number NUM Build number for package (default: 1) + --build-tag TAG Build tag for package (default: manual-build) + Required .envrc variable: MIGRATE_PIPELINE_ROOT= @@ -129,6 +137,19 @@ Defaults: RUN_CTEST=ON Release: ON (tests in Lts/Common + Z components) TESTS_ONLY=OFF INTEGRATION_TEST=OFF + VERIFY_RPM=OFF + USE_PREBUILT_IMAGE=OFF + BUILD_PREBUILT_IMAGE=OFF + DELETE_PREBUILT_IMAGE=OFF + DOCKER_IMAGE=legatus-qt6-prebuilt:latest + RUN_JENKINS_BUILDER=OFF + PACKAGE_OUTPUT_DIR=./packages-out + LTS_VERSION=1.0 + PROJECT=guez + GUEZ_MODE=ON + BUILD_NUMBER=1 + BUILD_TAG=manual-build + INTEGRATION_TEST=OFF VERIFY_RPM=OFF Release: OFF (optional package verification) USE_PREBUILT_IMAGE=OFF BUILD_PREBUILT_IMAGE=OFF @@ -273,6 +294,11 @@ APT_PACKAGES=( vlc-plugin-base git python3-pip + # Packaging tools for RPM/DEB build + rpm + debhelper + dpkg-dev + fakeroot ) # INTERFACE libraries (header-only) are built automatically as dependencies @@ -738,6 +764,14 @@ INTEGRATION_TEST="${INTEGRATION_TEST:-OFF}" USE_PREBUILT_IMAGE="${USE_PREBUILT_IMAGE:-OFF}" BUILD_PREBUILT_IMAGE="${BUILD_PREBUILT_IMAGE:-OFF}" DELETE_PREBUILT_IMAGE="${DELETE_PREBUILT_IMAGE:-OFF}" +# Jenkins builder options for RPM/DEB package production +RUN_JENKINS_BUILDER="${RUN_JENKINS_BUILDER:-OFF}" +PACKAGE_OUTPUT_DIR="${PACKAGE_OUTPUT_DIR:-./packages-out}" +LTS_VERSION="${LTS_VERSION:-1.0}" +PROJECT="${PROJECT:-guez}" +GUEZ_MODE="${GUEZ_MODE:-ON}" +BUILD_NUMBER="${BUILD_NUMBER:-1}" +BUILD_TAG="${BUILD_TAG:-manual-build}" export QT_VERSION="${QT_VERSION:-6.10.2}" export QT_ARCH="${QT_ARCH:-linux_gcc_64}" # aqtinstall uses 'linux_gcc_64' but creates directory 'gcc_64' @@ -879,6 +913,34 @@ while [[ $# -gt 0 ]]; do [[ $# -gt 0 ]] || die "--cmake_build_flags requires a flag string" CMAKE_BUILD_FLAGS="$1" ;; + --run-jenkins-builder) + RUN_JENKINS_BUILDER=ON + ;; + --package-output-dir) + shift + [[ $# -gt 0 ]] || die "--package-output-dir requires a directory path" + PACKAGE_OUTPUT_DIR="$1" + ;; + --lts-version) + shift + [[ $# -gt 0 ]] || die "--lts-version requires a version string" + LTS_VERSION="$1" + ;; + --project) + shift + [[ $# -gt 0 ]] || die "--project requires a project name" + PROJECT="$1" + ;; + --build-number) + shift + [[ $# -gt 0 ]] || die "--build-number requires a build number" + BUILD_NUMBER="$1" + ;; + --build-tag) + shift + [[ $# -gt 0 ]] || die "--build-tag requires a build tag" + BUILD_TAG="$1" + ;; -h|--help) usage exit 0 @@ -1427,6 +1489,41 @@ else log_info "Skipping CTest" fi +# Jenkins builder execution (optional - produces RPM/DEB packages) +if [[ "${RUN_JENKINS_BUILDER}" == "ON" ]]; then + log_info "=== Jenkins Builder Execution (RPM/DEB Package Production) ===" + + # Set up environment variables for jenkins_builder_ubuntu26.sh + export OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -d'"' -f2) + export WORKSPACE=/workspace + export PROJECT_BASE_DIR=/workspace + + log_info "Running jenkins_builder_ubuntu26.sh with:" + log_info " PROJECT=${PROJECT}" + log_info " OS_VERSION=${OS_VERSION}" + log_info " LTS_VERSION=${LTS_VERSION}" + log_info " GUEZ_MODE=${GUEZ_MODE}" + log_info " WORKSPACE=${WORKSPACE}" + log_info " PROJECT_BASE_DIR=${PROJECT_BASE_DIR}" + log_info " BUILD_NUMBER=${BUILD_NUMBER}" + log_info " BUILD_TAG=${BUILD_TAG}" + + # Execute jenkins_builder_ubuntu26.sh + if [[ -f "${MIGRATE_PIPELINE_ROOT}/jenkins-ci-rme/jenkins_builder_ubuntu26.sh" ]]; then + bash "${MIGRATE_PIPELINE_ROOT}/jenkins-ci-rme/jenkins_builder_ubuntu26.sh" || JENKINS_BUILDER_RESULT=$? + if [[ "${JENKINS_BUILDER_RESULT:-0}" -ne 0 ]]; then + log_info "Jenkins builder completed with errors (exit code: ${JENKINS_BUILDER_RESULT})" + else + log_info "Jenkins builder completed successfully" + fi + else + log_error "jenkins_builder_ubuntu26.sh not found at ${MIGRATE_PIPELINE_ROOT}/jenkins-ci-rme/jenkins_builder_ubuntu26.sh" + JENKINS_BUILDER_RESULT=1 + fi +else + log_info "Skipping Jenkins builder execution" +fi + # RPM/DEB package verification (optional) if [[ "${VERIFY_RPM}" == "ON" ]]; then log_info "=== Package Verification (RPM/DEB) ===" @@ -1500,6 +1597,13 @@ docker run --rm \ -e INTEGRATION_TEST \ -e VERIFY_RPM \ -e USE_PREBUILT_IMAGE \ + -e RUN_JENKINS_BUILDER \ + -e PACKAGE_OUTPUT_DIR \ + -e LTS_VERSION \ + -e PROJECT \ + -e GUEZ_MODE \ + -e BUILD_NUMBER \ + -e BUILD_TAG \ -e CMAKE_BUILD_FLAGS \ -e QT_VERSION \ -e QT_ARCH \ @@ -1521,5 +1625,6 @@ docker run --rm \ -v "${RTI_LICENSE_FILE_HOST}:/workspace/rti_license.dat" \ -v "${MIGRATE_PIPELINE_ROOT}/external:/workspace/external:ro" \ -v "${CONTAINER_SCRIPT_HOST}:/tmp/run-build-inside-container.sh:ro" \ + -v "${PACKAGE_OUTPUT_DIR}:/workspace/packages-out" \ "${DOCKER_IMAGE}" \ bash /tmp/run-build-inside-container.sh \ No newline at end of file