diff --git a/.github/workflows/perl-cpan-libraries.yml b/.github/workflows/perl-cpan-libraries.yml index 988cc04cf6..576b394ba0 100644 --- a/.github/workflows/perl-cpan-libraries.yml +++ b/.github/workflows/perl-cpan-libraries.yml @@ -32,110 +32,20 @@ jobs: strategy: fail-fast: false matrix: - distrib: [el8, el9] + distrib: [el7] name: [ - "ARGV::Struct", - "Authen::SASL::SASLprep", - "Authen::SCRAM::Client", - "BSON", - "BSON::XS", - "Config::AWS", - "Convert::Binary::C", - "Convert::EBCDIC", - "Crypt::Blowfish_PP", "Crypt::OpenSSL::AES", - "DataStruct::Flat", - "DateTime::Format::Duration::ISO8601", - "DBD::Sybase", - "Device::Modbus", - "Device::Modbus::RTU::Client", - "Device::Modbus::TCP::Client", - "Email::Send::SMTP::Gmail", - "FFI::CheckLib", - "FFI::Platypus", - "File::SearchPath", - "HTTP::ProxyPAC", - "JMX::Jmx4Perl", - "Mojo::IOLoop::Signal", - "MongoDB", - "MooseX::ClassAttribute", - "Net::Amazon::Signature::V4", - "Net::DHCP", - "Net::FTPSSL", - "Net::HTTPTunnel", - "Net::NTP", - "Net::SMTPS", - "Net::SMTP_auth", - "Net::Subnet", - "Net::TFTP", - "Paws", - "PBKDF2::Tiny", - "Statistics::Descriptive", - "Statistics::Regression", - "Term::Clui", - "Unicode::Stringprep", - "URI::Template", - "URL::Encode", - "URL::Encode::XS", - "UUID", - "UUID::URandom", - "WWW::Selenium", - "XML::LibXML::Simple", - "ZMQ::Constants", - "ZMQ::FFI", - "ZMQ::LibZMQ4" ] include: - - build_distribs: "el8,el9" + - build_distribs: "el7" - rpm_dependencies: "" - rpm_provides: "" - - version: "" + - version: "0.21" - spec_file: "" - - distrib: el8 - package_extension: rpm - image: packaging-plugins-alma8 - - distrib: el9 + - distrib: el7 package_extension: rpm - image: packaging-plugins-alma9 - - name: "BSON" - rpm_provides: "perl(BSON::Bytes) perl(BSON::Code) perl(BSON::DBRef) perl(BSON::OID) perl(BSON::Raw) perl(BSON::Regex) perl(BSON::Time) perl(BSON::Timestamp) perl(BSON::Types) perl(BSON)" - - name: "DateTime::Format::Duration::ISO8601" - rpm_provides: "perl(DateTime-Format-Duration-ISO8601)" - - name: "Device::Modbus::RTU::Client" - version: "0.022" - - name: "Device::Modbus::TCP::Client" - version: "0.026" - - name: "FFI::CheckLib" - rpm_dependencies: "perl(Env)" - - name: "FFI::Platypus" - rpm_provides: "perl(FFI::Platypus::Buffer) perl(FFI::Platypus::Memory)" - rpm_dependencies: "perl(Capture::Tiny) perl(FFI::CheckLib) perl(File::Spec::Functions) perl(IPC::Cmd) perl(JSON::PP) perl(List::Util) perl(autodie) perl(constant) perl(parent)" - no-auto-depends: true - - name: "Net::DHCP" - rpm_provides: "perl(Net::DHCP::Constants) perl(Net::DHCP::Packet)" - - name: "Net::SMTPS" - build_distribs: el9 - - name: "Statistics::Descriptive" - build_distribs: el9 - - name: "Statistics::Regression" - version: "0.53" - - name: "URL::Encode::XS" - build_distribs: el9 - - name: "UUID" - version: "0.31" - - name: "ZMQ::Constants" - build_distribs: "el9" - - name: "ZMQ::FFI" - rpm_dependencies: "zeromq" - - name: "ZMQ::LibZMQ4" - version: "0.01" - rpm_dependencies: "zeromq" - - name: "Mojo::IOLoop::Signal" - rpm_dependencies: "perl-Mojolicious" - rpm_provides: "perl(Mojo::IOLoop::Signal)" - no-auto-depends: true - + image: packaging-plugins-centos7 name: package ${{ matrix.distrib }} ${{ matrix.name }} container: @@ -170,7 +80,7 @@ jobs: - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} name: Build and install fpm # waiting https://github.com/jordansissel/fpm/pull/2066 run: | - dnf install -y bsdtar + yum install -y bsdtar cd fpm gem install bundler bundle install @@ -213,15 +123,6 @@ jobs: fpm -s cpan -t ${{ matrix.package_extension }} --rpm-dist ${{ matrix.distrib }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES$PACKAGE_PROVIDES$PACKAGE_VERSION ${{ matrix.name }} shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file != '' }} - run: | - mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} - - rpmbuild --undefine=_disable_source_fetch -ba ${{ matrix.spec_file }} - - cp -r ~/rpmbuild/RPMS/noarch/*.rpm . - shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} name: Replace '::' with - in the feature path id: package-name @@ -304,270 +205,8 @@ jobs: path: ./*.rpm key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} - package-deb: - needs: [get-environment] - if: | - needs.get-environment.outputs.skip_workflow == 'false' && - needs.get-environment.outputs.stability != 'stable' - - runs-on: ${{ matrix.runner_name }} - strategy: - fail-fast: false - matrix: - image: [packaging-plugins-bullseye, packaging-plugins-bookworm, packaging-plugins-jammy, packaging-plugins-bullseye-arm64] - name: - [ - "ARGV::Struct", - "Authen::SCRAM::Client", - "Config::AWS", - "Convert::EBCDIC", - "Crypt::Blowfish_PP", - "Crypt::OpenSSL::AES", - "DataStruct::Flat", - "DateTime::Format::Duration::ISO8601", - "Device::Modbus", - "Device::Modbus::RTU::Client", - "Device::Modbus::TCP::Client", - "Digest::SHA1", - "Email::Send::SMTP::Gmail", - "Hash::Ordered", - "HTTP::ProxyPAC", - "JMX::Jmx4Perl", - "Mojo::IOLoop::Signal", - "Net::Amazon::Signature::V4", - "Net::FTPSSL", - "Net::HTTPTunnel", - "Net::MQTT::Simple", - "Net::SMTP_auth", - "Paws", - "Statistics::Regression", - "WWW::Selenium", - "ZMQ::Constants", - "ZMQ::LibZMQ4" - ] - include: - - runner_name: ubuntu-24.04 - - arch: amd64 - - build_distribs: "bullseye,bookworm,jammy" - - deb_dependencies: "" - - rpm_provides: "" - - version: "" - - use_dh_make_perl: "true" - - spec_file: "" - - distrib: bullseye - package_extension: deb - image: packaging-plugins-bullseye - - distrib: bookworm - package_extension: deb - image: packaging-plugins-bookworm - - distrib: jammy - package_extension: deb - image: packaging-plugins-jammy - - distrib: bullseye - package_extension: deb - image: packaging-plugins-bullseye-arm64 - arch: arm64 - runner_name: ["self-hosted", "collect-arm64"] - - name: "Device::Modbus::RTU::Client" - build_distribs: "bookworm" - - name: "Device::Modbus::TCP::Client" - build_distribs: "bookworm" - - name: "Net::Amazon::Signature::V4" - build_distribs: ["bullseye", "jammy"] - - name: "Net::MQTT::Simple" - version: "1.29" - - name: "Paws" - use_dh_make_perl: "false" - deb_dependencies: "libmoose-perl libmoosex-classattribute-perl libjson-maybexs-perl liburl-encode-perl libargv-struct-perl libmoo-perl libtype-tiny-perl libdatastruct-flat-perl libmodule-find-perl libthrowable-perl liburi-template-perl libnet-amazon-signature-v4-perl" - no-auto-depends: true - - name: "Statistics::Regression" - build_distribs: "bullseye" - version: "0.53" - - name: "ZMQ::LibZMQ4" - use_dh_make_perl: "false" - version: "0.01" - deb_dependencies: "libzmq5" - name: package ${{ matrix.distrib }} ${{ matrix.arch }} ${{ matrix.name }} - container: - image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest - credentials: - username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }} - password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }} - - steps: - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - name: Parse distrib name - id: parse-distrib - uses: ./.github/actions/parse-distrib - with: - distrib: ${{ matrix.distrib }} - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - name: Get package version - id: package-version - run: | - apt-get update - apt-get install -y cpanminus - - if [ -z "${{ matrix.version }}" ]; then - CPAN_PACKAGE_VERSION=$(cpanm --info ${{ matrix.name }} | sed 's/\.tar\.gz$//' | sed 's/.*\-//' | sed 's/v//') - - if [[ ! $CPAN_PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+ ]]; then - echo "::error::Invalid version number: ${CPAN_PACKAGE_VERSION}" - exit 1 - fi - - PACKAGE_VERSION="${CPAN_PACKAGE_VERSION}" - else - PACKAGE_VERSION="${{ matrix.version }}" - fi - - echo "package_version=$(echo $PACKAGE_VERSION)" >> $GITHUB_OUTPUT - shell: bash - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'false' }} - run: | - apt-get install -y ruby libcurl4-openssl-dev libssh-dev uuid-dev libczmq-dev - - if [ -z "${{ matrix.deb_dependencies }}" ]; then - PACKAGE_DEPENDENCIES="" - else - for PACKAGE_DEPENDENCY in `echo ${{ matrix.deb_dependencies }}`; do - PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --depends $PACKAGE_DEPENDENCY" - done - fi - - if [ ! -z "${{ matrix.no-auto-depends }}" ]; then - PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --no-auto-depends" - fi - - cpanm Module::Build::Tiny - cpanm Module::Install - - gem install fpm - # Patch to apply fpm fix for debian package generation while waiting for the official fix to be released. - patch -i .github/patch/fpm-deb.rb.diff $(find / -type f -name "deb.rb") - - fpm -a native -s cpan -t ${{ matrix.package_extension }} --deb-dist ${{ matrix.distrib }} --iteration ${{ steps.parse-distrib.outputs.package_distrib_name }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES -v ${{ steps.package-version.outputs.package_version }} ${{ matrix.name }} - shell: bash - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'true' }} - run: | - apt-get install -y libcurl4-openssl-dev dh-make-perl libssh-dev uuid-dev libczmq-dev libmodule-install-perl libmodule-build-tiny-perl - # module-build-tiny is required for Mojo::IOLoop::Signal build. - - DEB_BUILD_OPTIONS="nocheck nodocs notest" dh-make-perl make --dist ${{ matrix.distrib }} --build --version ${{ steps.package-version.outputs.package_version }}${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} --cpan ${{ matrix.name }} - shell: bash - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - name: Replace '::' with - in the feature path - id: package-name - run: | - name="${{ matrix.name }}" - name_with_dash="${name//::/-}" - echo "Modified Name: $name_with_dash" - echo "name_with_dash=$name_with_dash" >> $GITHUB_OUTPUT - shell: bash - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: - name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ matrix.arch }}-${{ steps.package-name.outputs.name_with_dash}} - path: ./*.${{ matrix.package_extension }} - retention-days: 1 - - merge-package-deb-artifacts: - needs: [get-environment, package-deb] - if: | - needs.get-environment.outputs.skip_workflow == 'false' && - needs.get-environment.outputs.stability != 'stable' - runs-on: ubuntu-24.04 - strategy: - matrix: - distrib: [bullseye, bookworm, jammy] - - steps: - - name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 - with: - name: packages-deb-${{ matrix.distrib }} - pattern: packages-deb-${{ matrix.distrib }}-* - delete-merged: false # cannot be set to true due to random fails: Failed to DeleteArtifact: Unable to make request: ECONNRESET + name: packages-signed-rpm-${{ matrix.distrib }} + path: ./*.rpm retention-days: 1 - - - name: Delete merged artifacts - uses: geekyeggo/delete-artifact@f275313e70c08f6120db482d7a6b98377786765b # v5.1.0 - with: - name: packages-deb-${{ matrix.distrib }}-* - failOnError: false - - download-and-cache-deb: - needs: [get-environment, merge-package-deb-artifacts] - if: | - needs.get-environment.outputs.skip_workflow == 'false' && - needs.get-environment.outputs.stability != 'stable' - runs-on: ubuntu-24.04 - strategy: - matrix: - distrib: [bullseye, bookworm, jammy] - steps: - - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 - with: - name: packages-deb-${{ matrix.distrib }} - path: ./ - - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: ./*.deb - key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} - - deliver-packages: - needs: [get-environment, sign-rpm, download-and-cache-deb] - if: | - needs.get-environment.outputs.skip_workflow == 'false' && - (contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) && - ! cancelled() && - ! contains(needs.*.result, 'failure') && - ! contains(needs.*.result, 'cancelled') - runs-on: ubuntu-24.04 - strategy: - fail-fast: false - matrix: - include: - - distrib: el8 - package_extension: rpm - - distrib: el9 - package_extension: rpm - - distrib: bullseye - package_extension: deb - - distrib: bookworm - package_extension: deb - - distrib: jammy - package_extension: deb - - name: deliver ${{ matrix.distrib }} - steps: - - name: Checkout sources - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - - - name: Delivery - uses: ./.github/actions/package-delivery - with: - module_name: perl-cpan-libraries - distrib: ${{ matrix.distrib }} - cache_key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }} - stability: ${{ needs.get-environment.outputs.stability }} - release_type: ${{ needs.get-environment.outputs.release_type }} - artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} - - set-skip-label: - needs: [get-environment, deliver-packages] - if: | - needs.get-environment.outputs.skip_workflow == 'false' && - ! cancelled() && - ! contains(needs.*.result, 'failure') && - ! contains(needs.*.result, 'cancelled') - uses: ./.github/workflows/set-pull-request-skip-label.yml