From 1b1be7c87cae15ebe538ebf41199b60bcfa1637b Mon Sep 17 00:00:00 2001 From: Vadim Troshchinskiy Shmelev Date: Fri, 21 Feb 2025 13:07:33 +0100 Subject: [PATCH] Build with Jenkins --- Dockerfile | 3 +- Jenkinsfile | 58 +++++++++++++++++++++++++++++++++++--- qtermwidget/CMakeLists.txt | 5 +++- src/CMakeLists.txt | 22 ++++++++++++++- 4 files changed, 81 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index df06f23..80df3ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,5 +4,6 @@ ENV DEBIAN_PRIORITY=critical RUN apt update RUN apt dist-upgrade -y -RUN apt install -y build-essential cmake g++ qt6-base-dev qt6-webengine-dev linguist-qt6 libgl1-mesa-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libqt6core5compat6-dev lxqt-build-tools qt6-webengine-dev-tools libqt6webenginecore6-bin +RUN apt install -y openssh-client build-essential cmake g++ qt6-base-dev qt6-webengine-dev linguist-qt6 libgl1-mesa-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libqt6core5compat6-dev lxqt-build-tools qt6-webengine-dev-tools libqt6webenginecore6-bin ninja-build + diff --git a/Jenkinsfile b/Jenkinsfile index 0ebd082..e81291e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,29 +1,79 @@ pipeline { agent { docker { - image 'ubuntu:24.04' + image 'ogbrowser-build:latest' + args '-u root:root' + label 'jenkins-slave' } } stages { - stage('Install Dependencies') { + stage('Prepare environment') { steps { sh ''' apt-get update - apt-get install -y build-essential cmake g++ qt6-base-dev qt6-webengine-dev linguist-qt6 libgl1-mesa-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libqt6core5compat6-dev lxqt-build-tools qt6-webengine-dev-tools libqt6webenginecore6-bin + apt-get install -y openssh-client ''' } } + + + stage('Install Dependencies') { + steps { + sshagent (credentials: ['aptly-key']) { + + sh ''' + pwd + uname -a + df + env + + + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get install -y build-essential cmake g++ qt6-base-dev qt6-webengine-dev linguist-qt6 libgl1-mesa-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libqt6core5compat6-dev lxqt-build-tools qt6-webengine-dev-tools libqt6webenginecore6-bin ninja-build + + + echo "Test" + aptly=172.17.8.68 + ssh aptly@${aptly} -o StrictHostKeyChecking=no "uptime" + + ''' + } + } + } stage('Build') { steps { sh ''' mkdir -p build cd build - cmake .. -G Ninja + cmake .. -DCPACK_PACKAGE_VERSION_PATCH=${BUILD_NUMBER} -G Ninja ninja ''' } } + stage('Create package') { + steps { + sh ''' + cd build + cpack -G DEB + ''' + } + } + + stage("Upload package to Aptly") { + steps { + sshagent (credentials : ['aptly-key']) { + withCredentials([string(credentialsId: 'aptly-gpg-passphrase', variable: 'GPG_PASSPHRASE')]) { + sh ''' + aptly=172.17.8.68 + scp -o StrictHostKeyChecking=no build/OGBrowser-2.0.${BUILD_NUMBER}-Linux.deb aptly@${aptly}:/tmp + ssh aptly@${aptly} -o StrictHostKeyChecking=no "aptly repo add opengnsys /tmp/OGBrowser-2.0.${BUILD_NUMBER}-Linux.deb" + ''' + } + } + } + } } post { always { diff --git a/qtermwidget/CMakeLists.txt b/qtermwidget/CMakeLists.txt index c325923..b664834 100644 --- a/qtermwidget/CMakeLists.txt +++ b/qtermwidget/CMakeLists.txt @@ -53,7 +53,10 @@ else() find_package(Qt5LinguistTools "${QT_MINIMUM_VERSION}" REQUIRED) endif() -find_package(lxqt2-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED) +find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} QUIET) +if (NOT lxqt-build-tools_FOUND) + find_package(lxqt2-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED) +endif() if(USE_UTF8PROC) find_package(Utf8Proc REQUIRED) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c92e60..2dc6ac0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,6 +8,24 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) + + +if (NOT DEFINED CPACK_PACKAGE_VERSION_MAJOR) + set(CPACK_PACKAGE_VERSION_MAJOR "2") +endif() + + + +if (NOT DEFINED CPACK_PACKAGE_VERSION_MINOR) + set(CPACK_PACKAGE_VERSION_MINOR "0") +endif() + + +if (NOT DEFINED CPACK_PACKAGE_VERSION_PATCH) + set(CPACK_PACKAGE_VERSION_PATCH "0") +endif() + + set(KB_LAYOUT_DIR "/usr/lib/qtermwidget/kb" CACHE INTERNAL "") @@ -16,6 +34,7 @@ find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets LinguistTools Network WebE message(STATUS "Building browser with Qt ${QT_VERSION}") +message(STATUS "Browser version is ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(SOURCES main.cpp @@ -56,7 +75,8 @@ set(CPACK_PACKAGE_NAME "OGBrowser") set(CPACK_PACKAGE_VENDOR "OpenGnsys") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenGnsys Browser") set(CMAKE_PROJECT_HOMEPAGE_URL "https://opengnsys.es/web/") -set(CPACK_PACKAGE_VERSION "2.0") + +set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_SET_DESTDIR true) set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")