From c6f83c179d270ee627c50c0978b2208ae9832462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Costa?= <andre.costa@ess.eu> Date: Tue, 8 Apr 2025 15:18:58 +0200 Subject: [PATCH 1/2] Style: clang-format update --- src/FlatbufferMessage.h | 8 ++++---- src/Kafka/ProducerDeliveryCb.h | 2 +- src/Metrics/CarbonSink.h | 2 +- src/Metrics/InternalMetric.h | 2 +- src/Metrics/Registrar.h | 2 +- src/NeXusDataset/AdcDatasets.h | 6 +++--- src/NeXusDataset/EpicsAlarmDatasets.h | 9 +++++---- src/Status/StatusReporterBase.h | 2 +- src/WriterModule/ep01/ConnectionStatusDatasets.h | 2 +- src/WriterModuleBase.h | 4 ++-- .../ReaderRegistrationTests.cpp | 16 ++++++++++++---- tests/KafkaToNexusTests.cpp | 2 +- tests/MessageTests.cpp | 12 +++++++++--- tests/Metrics/MetricsReporterTest.cpp | 2 +- tests/Metrics/MockSink.h | 2 +- tests/NeXusDataset/NeXusDatasetTests.cpp | 12 +++++++++--- tests/ProducerTests.cpp | 6 ++---- tests/StatusReporterTests.cpp | 4 ++-- tests/helpers/KafkaMocks.h | 2 +- 19 files changed, 58 insertions(+), 39 deletions(-) diff --git a/src/FlatbufferMessage.h b/src/FlatbufferMessage.h index dc3766446..fb56f5694 100644 --- a/src/FlatbufferMessage.h +++ b/src/FlatbufferMessage.h @@ -22,25 +22,25 @@ public: class BufferTooSmallError : public FlatbufferError { public: explicit BufferTooSmallError(const std::string &what) - : FlatbufferError(what){}; + : FlatbufferError(what) {}; }; class UnknownFlatbufferID : public FlatbufferError { public: explicit UnknownFlatbufferID(const std::string &what) - : FlatbufferError(what){}; + : FlatbufferError(what) {}; }; class InvalidFlatbufferTimestamp : public FlatbufferError { public: explicit InvalidFlatbufferTimestamp(const std::string &what) - : FlatbufferError(what){}; + : FlatbufferError(what) {}; }; class NotValidFlatbuffer : public FlatbufferError { public: explicit NotValidFlatbuffer(const std::string &what) - : FlatbufferError(what){}; + : FlatbufferError(what) {}; }; /// \brief A wrapper around a databuffer which holds a flatbuffer. diff --git a/src/Kafka/ProducerDeliveryCb.h b/src/Kafka/ProducerDeliveryCb.h index c5bc02e7f..6d279d65b 100644 --- a/src/Kafka/ProducerDeliveryCb.h +++ b/src/Kafka/ProducerDeliveryCb.h @@ -19,7 +19,7 @@ namespace Kafka { class ProducerDeliveryCb : public RdKafka::DeliveryReportCb { public: - explicit ProducerDeliveryCb(ProducerStats &Stats) : Stats(Stats){}; + explicit ProducerDeliveryCb(ProducerStats &Stats) : Stats(Stats) {}; void dr_cb(RdKafka::Message &Message) override { if (Message.err() != RdKafka::ERR_NO_ERROR) { diff --git a/src/Metrics/CarbonSink.h b/src/Metrics/CarbonSink.h index 2f8a782c7..60f352438 100644 --- a/src/Metrics/CarbonSink.h +++ b/src/Metrics/CarbonSink.h @@ -19,7 +19,7 @@ namespace Metrics { class CarbonSink : public Sink { public: CarbonSink(std::string Host, uint16_t const Port) - : CarbonConnection(std::move(Host), Port){}; + : CarbonConnection(std::move(Host), Port) {}; void reportMetric(InternalMetric &MetricToBeReported) override; LogTo getType() const override { return LogTo::CARBON; }; bool isHealthy() const override; diff --git a/src/Metrics/InternalMetric.h b/src/Metrics/InternalMetric.h index f3fd85fe1..1e7e659ca 100644 --- a/src/Metrics/InternalMetric.h +++ b/src/Metrics/InternalMetric.h @@ -23,7 +23,7 @@ struct InternalMetric { Counter(MetricToGetDetailsFrom.getCounterPtr()), DescriptionString(MetricToGetDetailsFrom.getDescription()), LastValue(MetricToGetDetailsFrom.getCounterPtr()->load()), - ValueSeverity(MetricToGetDetailsFrom.getSeverity()){}; + ValueSeverity(MetricToGetDetailsFrom.getSeverity()) {}; std::string const Name; std::string const FullName; // Including prefix from local registrar CounterType *Counter{nullptr}; diff --git a/src/Metrics/Registrar.h b/src/Metrics/Registrar.h index 2c6f9fb1d..53efb1e7a 100644 --- a/src/Metrics/Registrar.h +++ b/src/Metrics/Registrar.h @@ -28,7 +28,7 @@ public: explicit Registrar( std::string MetricsPrefix, std::vector<std::shared_ptr<Reporter>> const &Reporters = {}) - : Prefix(std::move(MetricsPrefix)), ReporterList(Reporters){}; + : Prefix(std::move(MetricsPrefix)), ReporterList(Reporters) {}; ~Registrar() override = default; void registerMetric(Metric &NewMetric, diff --git a/src/NeXusDataset/AdcDatasets.h b/src/NeXusDataset/AdcDatasets.h index dfb01b885..ecb6bd0c9 100644 --- a/src/NeXusDataset/AdcDatasets.h +++ b/src/NeXusDataset/AdcDatasets.h @@ -20,7 +20,7 @@ public: Amplitude(hdf5::node::Group const &Parent, Mode CMode, size_t ChunkSize = 1024) : ExtensibleDataset<std::uint32_t>(Parent, "adc_pulse_amplitude", CMode, - ChunkSize){}; + ChunkSize) {}; }; /// \brief Represents a NeXus dataset with the name "adc_pulse_peak_area". @@ -29,7 +29,7 @@ public: PeakArea() = default; PeakArea(hdf5::node::Group const &Parent, Mode CMode, size_t ChunkSize = 1024) : ExtensibleDataset<std::uint32_t>(Parent, "adc_pulse_peak_area", CMode, - ChunkSize){}; + ChunkSize) {}; }; /// \brief Represents a NeXus dataset with the name "adc_pulse_background". @@ -39,7 +39,7 @@ public: Background(hdf5::node::Group const &Parent, Mode CMode, size_t ChunkSize = 1024) : ExtensibleDataset<std::uint32_t>(Parent, "adc_pulse_background", CMode, - ChunkSize){}; + ChunkSize) {}; }; /// \brief Represents a NeXus dataset with the name "adc_pulse_threshold_time". diff --git a/src/NeXusDataset/EpicsAlarmDatasets.h b/src/NeXusDataset/EpicsAlarmDatasets.h index 2ec97f8e7..d7e811708 100644 --- a/src/NeXusDataset/EpicsAlarmDatasets.h +++ b/src/NeXusDataset/EpicsAlarmDatasets.h @@ -20,7 +20,8 @@ public: AlarmStatus() = default; AlarmStatus(hdf5::node::Group const &Parent, Mode CMode, size_t StringSize = 32, size_t ChunkSize = 1024) - : FixedSizeString(Parent, "alarm_status", CMode, StringSize, ChunkSize){}; + : FixedSizeString(Parent, "alarm_status", CMode, StringSize, ChunkSize) { + }; }; /// \brief Represents a dataset with the name "alarm_message". @@ -29,8 +30,8 @@ public: AlarmMsg() = default; AlarmMsg(hdf5::node::Group const &Parent, Mode CMode, size_t StringSize = 200, size_t ChunkSize = 1024) - : FixedSizeString(Parent, "alarm_message", CMode, StringSize, - ChunkSize){}; + : FixedSizeString(Parent, "alarm_message", CMode, StringSize, ChunkSize) { + }; }; /// \brief Represents a dataset with the name "alarm_severity". @@ -40,7 +41,7 @@ public: AlarmSeverity(hdf5::node::Group const &Parent, Mode CMode, size_t ChunkSize = 1024) : ExtensibleDataset<std::int16_t>(Parent, "alarm_severity", CMode, - ChunkSize){}; + ChunkSize) {}; }; /// \brief Represents a timestamp dataset. diff --git a/src/Status/StatusReporterBase.h b/src/Status/StatusReporterBase.h index 9e94d48e0..66a066771 100644 --- a/src/Status/StatusReporterBase.h +++ b/src/Status/StatusReporterBase.h @@ -77,7 +77,7 @@ protected: void reportStatus(); private: - virtual void postReportStatusActions(){}; + virtual void postReportStatusActions() {}; mutable std::shared_mutex StatusMutex; std::shared_ptr<Kafka::Producer> Producer; std::unique_ptr<Kafka::IProducerTopic> StatusProducerTopic; diff --git a/src/WriterModule/ep01/ConnectionStatusDatasets.h b/src/WriterModule/ep01/ConnectionStatusDatasets.h index 252aab325..8b0fb01a8 100644 --- a/src/WriterModule/ep01/ConnectionStatusDatasets.h +++ b/src/WriterModule/ep01/ConnectionStatusDatasets.h @@ -39,6 +39,6 @@ public: ConnectionStatus(hdf5::node::Group const &Parent, Mode CMode, size_t ChunkSize = 1024) : ExtensibleDataset<std::int16_t>(Parent, "connection_status", CMode, - ChunkSize){}; + ChunkSize) {}; }; } // namespace NeXusDataset diff --git a/src/WriterModuleBase.h b/src/WriterModuleBase.h index 65d8ac703..2721d397d 100644 --- a/src/WriterModuleBase.h +++ b/src/WriterModuleBase.h @@ -74,7 +74,7 @@ public: /// example: converting a string to an enum, it should /// be done in this function. This function is called by the application right /// after the constructor and parse_config(). - virtual void config_post_processing(){}; + virtual void config_post_processing() {}; /// \brief Override this function to register meta data values/fields. /// @@ -88,7 +88,7 @@ public: /// class that is used to keep track of known meta-data fields. virtual void register_meta_data([[maybe_unused]] hdf5::node::Group const &HDFGroup, - [[maybe_unused]] MetaData::TrackerPtr const &Tracker){}; + [[maybe_unused]] MetaData::TrackerPtr const &Tracker) {}; /// \brief Initialise the writer instance for writing. /// diff --git a/tests/AccessMessageMetadata/ReaderRegistrationTests.cpp b/tests/AccessMessageMetadata/ReaderRegistrationTests.cpp index 763b43727..27129ed93 100644 --- a/tests/AccessMessageMetadata/ReaderRegistrationTests.cpp +++ b/tests/AccessMessageMetadata/ReaderRegistrationTests.cpp @@ -43,14 +43,18 @@ TEST_F(ReaderRegistrationTest, SimpleRegistration) { FlatbufferReaderRegistry::getReaders(); std::string TestKey("temp"); EXPECT_EQ(Readers.size(), 0u); - { FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); + } EXPECT_EQ(Readers.size(), 1u); EXPECT_NE(Readers.find(TestKey), Readers.end()); } TEST_F(ReaderRegistrationTest, SameKeyRegistration) { std::string TestKey("temp"); - { FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); + } EXPECT_THROW( FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey), std::runtime_error); @@ -72,13 +76,17 @@ TEST_F(ReaderRegistrationTest, KeyTooLong) { TEST_F(ReaderRegistrationTest, StrKeyFound) { std::string TestKey("t3mp"); - { FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); + } EXPECT_NE(FlatbufferReaderRegistry::find(TestKey).get(), nullptr); } TEST_F(ReaderRegistrationTest, StrKeyNotFound) { std::string TestKey("t3mp"); - { FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<DummyReader> RegisterIt(TestKey); + } std::string FailKey("trump"); EXPECT_THROW(FlatbufferReaderRegistry::find(FailKey), std::exception); } diff --git a/tests/KafkaToNexusTests.cpp b/tests/KafkaToNexusTests.cpp index 917ed1469..cb1b185a9 100644 --- a/tests/KafkaToNexusTests.cpp +++ b/tests/KafkaToNexusTests.cpp @@ -23,7 +23,7 @@ public: std::unique_ptr<Status::StatusReporterBase> Reporter) : FileWriter::Master( Config, std::move(Listener), std::move(Reporter), - std::make_unique<Metrics::Registrar>("some_prefix")){}; + std::make_unique<Metrics::Registrar>("some_prefix")) {}; MAKE_MOCK0(stopNow, void(), override); MAKE_MOCK0(writingIsFinished, bool(), override); }; diff --git a/tests/MessageTests.cpp b/tests/MessageTests.cpp index e6ec9833b..cc2928d76 100644 --- a/tests/MessageTests.cpp +++ b/tests/MessageTests.cpp @@ -59,7 +59,9 @@ public: }; TEST_F(MessageClassTest, Success) { - { FlatbufferReaderRegistry::Registrar<MsgDummyReader1> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<MsgDummyReader1> RegisterIt(TestKey); + } std::memcpy(TestData.get() + 4, TestKey.c_str(), 4); auto CurrentMessage = FlatbufferMessage(TestData.get(), 8); EXPECT_TRUE(CurrentMessage.isValid()); @@ -78,14 +80,18 @@ TEST_F(MessageClassTest, WrongFlatbufferID) { } TEST_F(MessageClassTest, SizeTooSmall) { - { FlatbufferReaderRegistry::Registrar<MsgDummyReader1> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<MsgDummyReader1> RegisterIt(TestKey); + } std::memcpy(TestData.get() + 4, TestKey.c_str(), 4); ASSERT_THROW(FlatbufferMessage(TestData.get(), 7), FileWriter::BufferTooSmallError); } TEST_F(MessageClassTest, InvalidFlatbuffer) { - { FlatbufferReaderRegistry::Registrar<InvalidReader> RegisterIt(TestKey); } + { + FlatbufferReaderRegistry::Registrar<InvalidReader> RegisterIt(TestKey); + } std::memcpy(TestData.get() + 4, TestKey.c_str(), 4); ASSERT_THROW(FlatbufferMessage(TestData.get(), 8), FileWriter::NotValidFlatbuffer); diff --git a/tests/Metrics/MetricsReporterTest.cpp b/tests/Metrics/MetricsReporterTest.cpp index edb9513c7..dcc272f11 100644 --- a/tests/Metrics/MetricsReporterTest.cpp +++ b/tests/Metrics/MetricsReporterTest.cpp @@ -13,7 +13,7 @@ namespace Metrics { class MockUnhealthySink : public Sink { public: explicit MockUnhealthySink(LogTo LogToSink = LogTo::LOG_MSG) - : SinkType(LogToSink){}; + : SinkType(LogToSink) {}; MAKE_MOCK1(reportMetric, void(InternalMetric &), override); LogTo getType() const override { return SinkType; }; bool isHealthy() const override { return false; }; diff --git a/tests/Metrics/MockSink.h b/tests/Metrics/MockSink.h index 3adc0077a..2617d3795 100644 --- a/tests/Metrics/MockSink.h +++ b/tests/Metrics/MockSink.h @@ -15,7 +15,7 @@ namespace Metrics { class MockSink : public Sink { public: - explicit MockSink(LogTo LogToSink = LogTo::LOG_MSG) : SinkType(LogToSink){}; + explicit MockSink(LogTo LogToSink = LogTo::LOG_MSG) : SinkType(LogToSink) {}; MAKE_MOCK1(reportMetric, void(InternalMetric &), override); LogTo getType() const override { return SinkType; }; bool isHealthy() const override { return true; }; diff --git a/tests/NeXusDataset/NeXusDatasetTests.cpp b/tests/NeXusDataset/NeXusDatasetTests.cpp index bf5850c62..7f6d3f350 100644 --- a/tests/NeXusDataset/NeXusDatasetTests.cpp +++ b/tests/NeXusDataset/NeXusDatasetTests.cpp @@ -29,7 +29,9 @@ template <class Dataset, typename DatasetType> void defaultDatasetCreation(hdf5::node::Group &RootGroup, std::string DatasetName) { size_t ChunkSize = 256; - { Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); } + { + Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); + } ASSERT_TRUE(RootGroup.has_dataset(DatasetName)) << "Missing dataset: " << DatasetName; hdf5::node::Dataset TestDataset = RootGroup.get_dataset(DatasetName); @@ -46,7 +48,9 @@ template <class Dataset, typename DatasetType> void defaultTimeDatasetCreation(hdf5::node::Group &RootGroup, std::string DatasetName) { size_t ChunkSize = 256; - { Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); } + { + Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); + } ASSERT_TRUE(RootGroup.has_dataset(DatasetName)) << "Missing dataset: " << DatasetName; hdf5::node::Dataset TestDataset = RootGroup.get_dataset(DatasetName); @@ -92,7 +96,9 @@ template <class Dataset> void failOnReCreateDataset(hdf5::node::Group &RootGroup, std::string DatasetName) { size_t ChunkSize = 256; - { Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); } + { + Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize); + } EXPECT_THROW( Dataset UnderTest(RootGroup, NeXusDataset::Mode::Create, ChunkSize), std::runtime_error) diff --git a/tests/ProducerTests.cpp b/tests/ProducerTests.cpp index 9962af48a..7ead3bdc2 100644 --- a/tests/ProducerTests.cpp +++ b/tests/ProducerTests.cpp @@ -24,7 +24,7 @@ protected: class ProducerStandIn : public Kafka::Producer { public: explicit ProducerStandIn(Kafka::BrokerSettings &Settings) - : Producer(Settings){}; + : Producer(Settings) {}; using Producer::ProducerID; using Producer::ProducerPtr; }; @@ -43,9 +43,7 @@ public: int64_t /*offset*/) override { return RdKafka::ERR_NO_ERROR; }; - struct rd_kafka_topic_s *c_ptr() override { - return {}; - }; + struct rd_kafka_topic_s *c_ptr() override { return {}; }; }; TEST_F(ProducerTests, creatingForwarderIncrementsForwarderCounter) { diff --git a/tests/StatusReporterTests.cpp b/tests/StatusReporterTests.cpp index 9ca481834..9bf85501e 100644 --- a/tests/StatusReporterTests.cpp +++ b/tests/StatusReporterTests.cpp @@ -16,7 +16,7 @@ class ProducerStandIn : public Kafka::Producer { public: explicit ProducerStandIn(Kafka::BrokerSettings &Settings) - : Producer(Settings){}; + : Producer(Settings) {}; using Producer::ProducerID; using Producer::ProducerPtr; }; @@ -25,7 +25,7 @@ class ProducerTopicStandIn : public Kafka::ProducerTopic { public: ProducerTopicStandIn(std::shared_ptr<Kafka::Producer> ProducerPtr, std::string TopicName) - : ProducerTopic(std::move(ProducerPtr), std::move(TopicName)){}; + : ProducerTopic(std::move(ProducerPtr), std::move(TopicName)) {}; int produce( [[maybe_unused]] std::unique_ptr<Kafka::ProducerMessage> Msg) override { return 0; diff --git a/tests/helpers/KafkaMocks.h b/tests/helpers/KafkaMocks.h index fbb0c5c81..1bf6c5432 100644 --- a/tests/helpers/KafkaMocks.h +++ b/tests/helpers/KafkaMocks.h @@ -17,7 +17,7 @@ class MockConsumer : public trompeloeil::mock_interface<Kafka::ConsumerInterface> { public: explicit MockConsumer( - [[maybe_unused]] const Kafka::BrokerSettings &Settings){}; + [[maybe_unused]] const Kafka::BrokerSettings &Settings) {}; using PollReturnType = std::pair<Kafka::PollStatus, FileWriter::Msg>; IMPLEMENT_MOCK0(poll); IMPLEMENT_MOCK3(addPartitionAtOffset); -- GitLab From 5c09825ba93b468313cfdb3bb37dd7c412830805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Costa?= <andre.costa@ess.eu> Date: Tue, 8 Apr 2025 15:20:49 +0200 Subject: [PATCH 2/2] ECDC-4661: Update CI, Artifactory publish --- .gitlab-ci.yml | 221 ++++++++++++++++++++++++------------------------- 1 file changed, 110 insertions(+), 111 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 91d5e032d..8ecb8754e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,28 +6,33 @@ default: workflow: rules: - - if: '$CI_PIPELINE_SOURCE == "push"' - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_TAG + +variables: + ALMALINUX9_IMAGE: "registry.esss.lu.se/ecdc/ess-dmsc/docker-almalinux9-conan:1.2.0" + CENTOS7_IMAGE: "registry.esss.lu.se/ecdc/ess-dmsc/build-nodes/centos7:1.0" + BUILD_DIR: "build" stages: - - check + - test - build - archive - domain - integration - - release - -.check: - stage: check - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-ubuntu2204-build-node:latest + - publish clang-format: - extends: .check + stage: test + image: $ALMALINUX9_IMAGE script: - ci/check-formatting.sh + allow_failure: true black: - extends: .check + stage: test + image: $ALMALINUX9_IMAGE script: - python3 -m venv .venv - .venv/bin/python -m pip install -r integration-tests/requirements.txt @@ -37,7 +42,8 @@ black: - .venv/bin/python -m black --check domain-tests cppcheck: - extends: .check + stage: test + image: $ALMALINUX9_IMAGE script: - cppcheck --version - > @@ -49,136 +55,123 @@ cppcheck: --enable=all \ --inconclusive \ src/ 2> cppcheck.xml - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' -.build: - stage: build +.conan-config: &conan-config before_script: - - mkdir build - - cd build - - > - conan remote add \ - --insert 0 \ - ecdc-conan-virtual \ - $ESS_ARTIFACTORY_ECDC_CONAN_VIRTUAL_REMOTE_URL - - $SCL conan install --build missing .. - - $SCL conan info ../conanfile.txt > CONAN_INFO - after_script: - - > - conan remote add \ - ecdc-conan-external \ - $ESS_ARTIFACTORY_ECDC_CONAN_EXTERNAL_REMOTE_URL - - > - conan user \ - --password $ESS_ARTIFACTORY_ECDC_CONAN_TOKEN \ - --remote ecdc-conan-external \ - $ESS_ARTIFACTORY_ECDC_CONAN_USER - # Store built packages to save build time on subsequent builds - - conan upload '*' --all --confirm --remote ecdc-conan-external + - | + if [ -f /etc/os-release ]; then + . /etc/os-release + if [[ "$ID" == "centos" ]]; then + CONAN_PROFILE=linux_x86_64_gcc11_legacy + echo 'source /opt/rh/devtoolset-11/enable' >> ~/.bashrc + source ~/.bashrc + fi + fi + - conan config install $ESS_CONAN_CONFIG_URL -build-debug: - extends: .build - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-centos7-build-node:latest - variables: - SCL: scl enable devtoolset-11 rh-python38 -- +centos7-debug: + stage: build + image: $CENTOS7_IMAGE + <<: *conan-config script: - - $SCL cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCONAN=MANUAL -DRUN_DOXYGEN=ON -DCOV=ON .. - - $SCL ninja all UnitTests docs - - $SCL ninja coverage + - mkdir -p $BUILD_DIR && cd $BUILD_DIR + - conan install .. --build=missing + - conan info ../conanfile.txt > CONAN_INFO + - cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCONAN=MANUAL -DRUN_DOXYGEN=ON -DCOV=ON .. + - ninja all UnitTests docs + - ninja coverage - cat coverage.txt coverage: '/^TOTAL.*\s+(\d+\%)$/' artifacts: paths: - - build/coverage.xml + - $BUILD_DIR/coverage.xml reports: coverage_report: coverage_format: cobertura - path: build/coverage.xml + path: $BUILD_DIR/coverage.xml -build-release: - extends: .build - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-centos7-build-node:latest - variables: - SCL: scl enable devtoolset-11 rh-python38 -- + +centos7-release: + stage: build + image: $CENTOS7_IMAGE + <<: *conan-config script: - - $SCL ../ci/configure-release.sh .. . - - $SCL ninja all UnitTests docs + - mkdir -p $BUILD_DIR && cd $BUILD_DIR + - conan install .. --build=missing + - conan info ../conanfile.txt > CONAN_INFO + - ../ci/configure-release.sh .. . + - ninja all UnitTests docs - ./bin/kafka-to-nexus --version - ./bin/UnitTests --gtest_output=xml:test-output.xml artifacts: paths: - - build/test-output.xml - - build/CONAN_INFO - - build/bin - - build/lib - - build/licenses + - $BUILD_DIR/test-output.xml + - $BUILD_DIR/CONAN_INFO + - $BUILD_DIR/bin + - $BUILD_DIR/lib + - $BUILD_DIR/licenses reports: - junit: build/test-output.xml + junit: $BUILD_DIR/test-output.xml + +almalinux9-debug: + stage: build + image: $ALMALINUX9_IMAGE + <<: *conan-config + script: + - mkdir -p $BUILD_DIR && cd $BUILD_DIR + - conan install .. --build=missing --profile=linux_x86_64_gcc11 + - conan info ../conanfile.txt > CONAN_INFO + - cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCONAN=MANUAL -DRUN_DOXYGEN=ON .. + - ninja all UnitTests docs + - ./bin/kafka-to-nexus --version + - ./bin/UnitTests + +archive: + stage: archive + image: alpine:latest + dependencies: + - centos7-release + script: + - cd $BUILD_DIR + - mkdir -p archive/kafka-to-nexus/bin + - cp ./bin/file-maker ./bin/kafka-to-nexus ./bin/template-maker archive/kafka-to-nexus/bin/ + - cp -a ./lib archive/kafka-to-nexus + - cp -a ./licenses archive/kafka-to-nexus + - cp ./CONAN_INFO archive/kafka-to-nexus + - tar czf kafka-to-nexus-centos7.tar.gz -C archive kafka-to-nexus + artifacts: + paths: + - $BUILD_DIR/kafka-to-nexus-centos7.tar.gz domain_tests: stage: domain - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-centos7-build-node:latest + image: $CENTOS7_IMAGE dependencies: - - build-release + - centos7-release variables: SCL: scl enable devtoolset-11 rh-python38 -- before_script: - - ls - cd domain-tests script: - $SCL python -m venv venv - source venv/bin/activate - python -m pip install -r requirements.txt - - pytest --file-maker-binary=../build/bin/file-maker --junitxml=DomainTestsOutput.xml + - pytest --file-maker-binary=../$BUILD_DIR/bin/file-maker --junitxml=DomainTestsOutput.xml artifacts: when: always paths: - domain-tests/DomainTestsOutput.xml reports: - junit: Domain-tests/DomainTestsOutput.xml - -build-alt-distro: - extends: .build - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-$DISTRO-build-node:latest - script: - - $SCL cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCONAN=MANUAL -DRUN_DOXYGEN=ON .. - - $SCL ninja all UnitTests docs - - ./bin/kafka-to-nexus --version - - ./bin/UnitTests - - parallel: - matrix: - - DISTRO: - - debian11 - - ubuntu2204 - - DISTRO: almalinux8 - SCL: scl enable gcc-toolset-12 -- - -archive: - stage: archive - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-centos7-build-node:latest - script: - - cd build - - mkdir -p archive/kafka-to-nexus/bin - - cp ./bin/kafka-to-nexus archive/kafka-to-nexus/bin/ - - cp -r ./lib archive/kafka-to-nexus/ - - cp -r ./licenses archive/kafka-to-nexus/ - - cp ./CONAN_INFO archive/kafka-to-nexus/ - - cd archive - - tar czf kafka-to-nexus.tar.gz kafka-to-nexus - dependencies: - - build-release - artifacts: - paths: - - build/archive/kafka-to-nexus.tar.gz + junit: domain-tests/DomainTestsOutput.xml integration-tests: stage: integration image: docker:latest + dependencies: + - archive before_script: - cd integration-tests - - ./setup.sh ../build/archive/kafka-to-nexus.tar.gz + - ./setup.sh ../$BUILD_DIR/kafka-to-nexus-centos7.tar.gz script: - ./run-integration-tests.sh after_script: @@ -192,8 +185,6 @@ integration-tests: FILEWRITER_FILEWRITER_CONTAINER_NAME: filewriter-$CI_JOB_ID HTTP_PROXY: $ESS_HTTP_PROXY HTTPS_PROXY: $ESS_HTTP_PROXY - dependencies: - - archive artifacts: when: always paths: @@ -203,16 +194,24 @@ integration-tests: reports: junit: integration-tests/IntegrationTestsOutput.xml -keep-artifacts: - stage: release - image: registry.esss.lu.se/ecdc/ess-dmsc/docker-centos7-build-node:latest - script: - - ls build/archive/kafka-to-nexus.tar.gz +publish: + stage: publish + image: alpine/curl:latest dependencies: - archive - artifacts: - paths: - - build/archive/kafka-to-nexus.tar.gz - expire_in: never + before_script: + - cp $BUILD_DIR/kafka-to-nexus-centos7.tar.gz . + - curl -fL https://install-cli.jfrog.io | sh + - jf config add $ESS_ARTIFACTORY_ID --url=$ESS_ARTIFACTORY_URL --user=$ESS_ARTIFACTORY_ECDC_USER --password=$ESS_ARTIFACTORY_ECDC_GENERIC_TOKEN + - jf config show + script: + - jf rt u --build-name="kafka-to-nexus-centos7" --build-number=${CI_PIPELINE_IID} kafka-to-nexus-centos7.tar.gz ecdc-generic-release/${ARTIFACTORY_UPLOAD_PATH} rules: + - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + variables: + ARTIFACTORY_UPLOAD_PATH: "${CI_PROJECT_NAME}/${CI_DEFAULT_BRANCH}/${CI_PIPELINE_IID}/" - if: $CI_COMMIT_TAG + variables: + ARTIFACTORY_UPLOAD_PATH: "${CI_PROJECT_NAME}/tags/${CI_COMMIT_TAG}/" + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: never -- GitLab