diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62cd2d51800..b016a3db0bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,8 @@ jobs: - {platform: ubuntu2404-container, os: ubuntu-latest, experimental: false} - {platform: fedora42-container, os: ubuntu-22.04, experimental: false} - {platform: fedora43-container, os: ubuntu-22.04, experimental: false} + - {platform: amazonlinux2023-container, os: ubuntu-22.04, experimental: true} + - {platform: amazonlinux2023-aarch64-container, os: ubuntu-22.04-arm, experimental: true} - {platform: centos-stream8-container, os: ubuntu-latest, experimental: false} - {platform: centos-stream9-container, os: ubuntu-22.04, experimental: false} - {platform: centos-stream10-container, os: ubuntu-22.04, experimental: false} @@ -61,7 +63,8 @@ jobs: # crun >= 1.9.1 is required on Ubuntu 20.04.6 # this workaround came from ... # https://github.com/kubernetes-sigs/kind/pull/3527 - curl -sLo /tmp/crun https://github.com/containers/crun/releases/download/1.14.3/crun-1.14.3-linux-amd64 + ARCH=$(arch | sed -e 's/x86_64/amd64/g' -e 's/aarch64/arm64/g') + curl -sLo /tmp/crun https://github.com/containers/crun/releases/download/1.14.3/crun-1.14.3-linux-$ARCH chmod +x /tmp/crun sudo cp /tmp/crun /usr/bin/crun diff --git a/build/ci/platforms/amazonlinux2023-aarch64-container.yml b/build/ci/platforms/amazonlinux2023-aarch64-container.yml new file mode 100644 index 00000000000..7b85eb8137f --- /dev/null +++ b/build/ci/platforms/amazonlinux2023-aarch64-container.yml @@ -0,0 +1,44 @@ +type: container + +artifactory: + package_type: rpm + deploy_path: /amazon/2023/aarch64/pcp + +container: + containerfile: | + FROM public.ecr.aws/amazonlinux/amazonlinux:2023 + RUN dnf install -y systemd gawk sudo + RUN useradd --create-home pcpbuild + RUN echo 'pcpbuild ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/pcpbuild + + CMD ["/usr/sbin/init"] + +tasks: + setup: | + sudo dnf install -y which hostname + sudo dnf -y install $(qa/admin/list-packages -m -v -x cpan -x pip3 -x not4ci) + build: | + ./Makepkgs --verbose --check + rpm -qp --requires $(echo pcp-*/build/rpm/pcp-*.src.rpm | sed "s/src/$(arch)/") | grep -q libuv.so + copy_build_artifacts: | + cp pcp-*/build/rpm/*.rpm ../artifacts/build + install: | + sudo rpm -Uv pcp-*/build/rpm/*.rpm + echo 'pcpqa ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/pcpqa + init_qa: | + sudo systemctl start valkey + sudo -i -u pcpqa ./check 002 + qa_sanity: | + set -o pipefail + sudo -i -u pcpqa ./check -TT -g sanity -x not_in_ci -x not_in_container |& tee ../artifacts/test/test.log + qa: | + set -o pipefail + DEFAULT_PCP_QA_ARGS="-x x11 -x remote -x not_in_ci -x not_in_container" + sudo -i -u pcpqa ./check -TT ${PCP_QA_ARGS:-${DEFAULT_PCP_QA_ARGS}} |& tee ../artifacts/test/test.log + copy_test_artifacts: | + cp /var/lib/pcp/testsuite/check.timings ../artifacts/test + # add current timestamp if the last QA test got stuck + [ $(awk 'END{print NF}' ../artifacts/test/check.timings) = 2 ] && date '+%s' >> ../artifacts/test/check.timings + shopt -s nullglob + for test in /var/lib/pcp/testsuite/*.out.bad; do cp $test ../artifacts/test; [ -f ${test/.out.bad/.full} ] && cp ${test/.out.bad/.full} ../artifacts/test; done + [ -x /var/lib/pcp/testsuite/admin/whatami ] && /var/lib/pcp/testsuite/admin/whatami >../artifacts/test/whatami diff --git a/build/ci/platforms/amazonlinux2023-container.yml b/build/ci/platforms/amazonlinux2023-container.yml new file mode 100644 index 00000000000..d274f89b1f9 --- /dev/null +++ b/build/ci/platforms/amazonlinux2023-container.yml @@ -0,0 +1,44 @@ +type: container + +artifactory: + package_type: rpm + deploy_path: /amazon/2023/x86_64/pcp + +container: + containerfile: | + FROM public.ecr.aws/amazonlinux/amazonlinux:2023 + RUN dnf install -y systemd gawk sudo + RUN useradd --create-home pcpbuild + RUN echo 'pcpbuild ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/pcpbuild + + CMD ["/usr/sbin/init"] + +tasks: + setup: | + sudo dnf install -y which hostname + sudo dnf -y install $(qa/admin/list-packages -m -v -x cpan -x pip3 -x not4ci) + build: | + ./Makepkgs --verbose --check + rpm -qp --requires $(echo pcp-*/build/rpm/pcp-*.src.rpm | sed "s/src/$(arch)/") | grep -q libuv.so + copy_build_artifacts: | + cp pcp-*/build/rpm/*.rpm ../artifacts/build + install: | + sudo rpm -Uv pcp-*/build/rpm/*.rpm + echo 'pcpqa ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/pcpqa + init_qa: | + sudo systemctl start valkey + sudo -i -u pcpqa ./check 002 + qa_sanity: | + set -o pipefail + sudo -i -u pcpqa ./check -TT -g sanity -x not_in_ci -x not_in_container |& tee ../artifacts/test/test.log + qa: | + set -o pipefail + DEFAULT_PCP_QA_ARGS="-x x11 -x remote -x not_in_ci -x not_in_container" + sudo -i -u pcpqa ./check -TT ${PCP_QA_ARGS:-${DEFAULT_PCP_QA_ARGS}} |& tee ../artifacts/test/test.log + copy_test_artifacts: | + cp /var/lib/pcp/testsuite/check.timings ../artifacts/test + # add current timestamp if the last QA test got stuck + [ $(awk 'END{print NF}' ../artifacts/test/check.timings) = 2 ] && date '+%s' >> ../artifacts/test/check.timings + shopt -s nullglob + for test in /var/lib/pcp/testsuite/*.out.bad; do cp $test ../artifacts/test; [ -f ${test/.out.bad/.full} ] && cp ${test/.out.bad/.full} ../artifacts/test; done + [ -x /var/lib/pcp/testsuite/admin/whatami ] && /var/lib/pcp/testsuite/admin/whatami >../artifacts/test/whatami diff --git a/qa/admin/list-packages b/qa/admin/list-packages index 55579bdea9e..ea8ac3f5bf8 100755 --- a/qa/admin/list-packages +++ b/qa/admin/list-packages @@ -475,7 +475,7 @@ then apt-cache dumpavail | sed -n -e '/^Package: /s///p' >$tmp.allpkgs ;; - RHEL|Fedora|CentOS|openSUSE|SUSE\ SLES|OpenMandriva) + RHEL|Fedora|CentOS|openSUSE|SUSE\ SLES|OpenMandriva|AmazonLinux) rpm -qa --qf '%{NAME}\n' >$tmp.installed if which zypper >/dev/null 2>&1 then diff --git a/qa/admin/package-lists/AmazonLinux+2023+aarch64 b/qa/admin/package-lists/AmazonLinux+2023+aarch64 new file mode 100644 index 00000000000..c93a5245d9b --- /dev/null +++ b/qa/admin/package-lists/AmazonLinux+2023+aarch64 @@ -0,0 +1,124 @@ +# PCP required package list for Amazon Linux 2023 aarch64 +# cloned from Amazon Linux 2023 x86 +# Done by kvalin on a container Fri Nov 21 08:52:31 AM EST 2025 + +#RediSearch - switch to ValkeySearch when available +Spreadsheet::Read cpan +audit +autoconf +avahi-devel +avahi-tools +bash +bc +bcc-tools +bind-utils +bison +bpftrace +clang +coreutils-single +cppcheck +cronie +curl-minimal +cyrus-sasl +cyrus-sasl-devel +cyrus-sasl-lib +cyrus-sasl-md5 +cyrus-sasl-plain +device-mapper-devel +ed +expect +flex +gawk +gcc +gcc-c++ +gdb +git +git-core +grep +inih-devel +iproute +httpd +initscripts +jq +libbpf +libbpf-devel +libcmocka-devel +libdrm-devel +libicu-devel +libpfm-devel +libselinux-devel +libuv-devel +llvm +llvm-devel +lm_sensors +make +man-db +memcached +mesa-dri-drivers +ncurses-devel +net-tools +nmap +openssl +openssl-devel +perl +perl-CPAN +perl-DBD-MySQL +perl-Date-Manip +perl-ExtUtils-MakeMaker +perl-File-Slurp +perl-JSON +perl-LDAP +perl-List-MoreUtils +perl-Net-SNMP +perl-Spreadsheet-WriteExcel +perl-Text-CSV_XS +perl-Time-HiRes +perl-TimeDate +perl-XML-LibXML +perl-XML-TokeParser +perl-YAML-LibYAML +perl-autodie +perl-interpreter +perl-libwww-perl +pkgconf-pkg-config +postfix-perl-scripts +psmisc +python3 +python3-bcc +python3-devel +python3-libs +python3-lxml +python3-openpyxl +python3-pillow +python3-psycopg2 +python3-pymongo +python3-requests +python3-rtslib +python3-setuptools +python3-six +rdma-core-devel +readline-devel +rpm-build +rrdtool +rrdtool-perl +s-nail +sed +selinux-policy +selinux-policy-devel +selinux-policy-targeted +setools-console +smartmontools +socat +sqlite +sqlite-libs +sudo +sysstat +systemd-devel +targetcli +time +valgrind +valkey +xfsprogs +xkeyboard-config +xz-devel +zstd diff --git a/qa/admin/package-lists/AmazonLinux+2023+x86_64 b/qa/admin/package-lists/AmazonLinux+2023+x86_64 new file mode 100644 index 00000000000..0170384af5c --- /dev/null +++ b/qa/admin/package-lists/AmazonLinux+2023+x86_64 @@ -0,0 +1,124 @@ +# PCP required package list for Amazon Linux 2023 x86_64 +# cloned from Fedora 43 list +# Done by kvalin on a container Wed Nov 19 09:57:41 AM EST 2025 +# +#RediSearch - switch to ValkeySearch when available +Spreadsheet::Read cpan +audit +autoconf +avahi-devel +avahi-tools +bash +bc +bcc-tools +bind-utils +bison +bpftrace +clang +coreutils-single +cppcheck +cronie +curl-minimal +cyrus-sasl +cyrus-sasl-devel +cyrus-sasl-lib +cyrus-sasl-md5 +cyrus-sasl-plain +device-mapper-devel +ed +expect +flex +gawk +gcc +gcc-c++ +gdb +git +git-core +grep +inih-devel +iproute +httpd +initscripts +jq +libbpf +libbpf-devel +libcmocka-devel +libdrm-devel +libicu-devel +libpfm-devel +libselinux-devel +libuv-devel +llvm +llvm-devel +lm_sensors +make +man-db +memcached +mesa-dri-drivers +ncurses-devel +net-tools +nmap +openssl +openssl-devel +perl +perl-CPAN +perl-DBD-MySQL +perl-Date-Manip +perl-ExtUtils-MakeMaker +perl-File-Slurp +perl-JSON +perl-LDAP +perl-List-MoreUtils +perl-Net-SNMP +perl-Spreadsheet-WriteExcel +perl-Text-CSV_XS +perl-Time-HiRes +perl-TimeDate +perl-XML-LibXML +perl-XML-TokeParser +perl-YAML-LibYAML +perl-autodie +perl-interpreter +perl-libwww-perl +pkgconf-pkg-config +postfix-perl-scripts +psmisc +python3 +python3-bcc +python3-devel +python3-libs +python3-lxml +python3-openpyxl +python3-pillow +python3-psycopg2 +python3-pymongo +python3-requests +python3-rtslib +python3-setuptools +python3-six +rdma-core-devel +readline-devel +rpm-build +rrdtool +rrdtool-perl +s-nail +sed +selinux-policy +selinux-policy-devel +selinux-policy-targeted +setools-console +smartmontools +socat +sqlite +sqlite-libs +sudo +sysstat +systemd-devel +targetcli +time +valgrind +valkey +xfsprogs +xkeyboard-config +xz-devel +zstd diff --git a/qa/admin/whatami b/qa/admin/whatami index 9ef7ea051cd..65803984a52 100755 --- a/qa/admin/whatami +++ b/qa/admin/whatami @@ -130,6 +130,11 @@ then # os=`sed