From a5d92d78c628e8c5771c57f7818013146a05ae96 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 10 Nov 2020 09:11:53 +0100 Subject: [PATCH] gitlab-ci: cleanup ".gitlab-ci/{build,fedora-install,debian-install}.sh" Now that the individual steps are no longer in .gitlab.yml but we run a full shell script, clean it up to be better readable. Also, we need to fail the script when any command fails. --- .gitlab-ci/build.sh | 57 +++++++++++++++++++++++++----------- .gitlab-ci/debian-install.sh | 33 +++++++++++++++------ .gitlab-ci/fedora-install.sh | 55 +++++++++++++++++++++++----------- 3 files changed, 102 insertions(+), 43 deletions(-) diff --git a/.gitlab-ci/build.sh b/.gitlab-ci/build.sh index 5f8906ec57..214fb83435 100755 --- a/.gitlab-ci/build.sh +++ b/.gitlab-ci/build.sh @@ -1,19 +1,42 @@ #!/bin/bash -date '+%Y%m%d-%H%M%S'; uname -a -date '+%Y%m%d-%H%M%S'; locale -a -date '+%Y%m%d-%H%M%S'; env -date '+%Y%m%d-%H%M%S'; meson --version -date '+%Y%m%d-%H%M%S'; ! which dpkg || dpkg -l -date '+%Y%m%d-%H%M%S'; ! which yum || yum list installed -date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh -date '+%Y%m%d-%H%M%S'; rm -rf /tmp/nm-docs-html; mv build/INST/share/gtk-doc/html /tmp/nm-docs-html -date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh -date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=autotools CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh -date '+%Y%m%d-%H%M%S'; git clean -fdx ; BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh -date '+%Y%m%d-%H%M%S'; git clean -fdx ; ! grep -q '^NAME=.*\(Fedora\|CentOS\)' /etc/os-release || ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -W meson -date '+%Y%m%d-%H%M%S'; git clean -fdx ; ! grep -q '^NAME=.*\(Fedora\)' /etc/os-release || ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson -date '+%Y%m%d-%H%M%S'; git clean -fdx ; test "$NM_BUILD_TARBALL" != 1 || ( SIGN_SOURCE=0 ./contrib/fedora/rpm/build_clean.sh -r && mv ./NetworkManager-1*.tar.xz /tmp/ && mv ./contrib/fedora/rpm/latest/SRPMS/NetworkManager-1*.src.rpm /tmp/ ) -date '+%Y%m%d-%H%M%S'; git clean -fdx -date '+%Y%m%d-%H%M%S'; mv /tmp/nm-docs-html ./docs-html -date '+%Y%m%d-%H%M%S'; test "$NM_BUILD_TARBALL" != 1 || mv /tmp/NetworkManager-1*.tar.xz /tmp/NetworkManager-1*.src.rpm ./ +set -ex + +IS_FEDORA=0 +IS_CENTOS=0 +grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1 +grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1 + +do_clean() { + git clean -fdx +} + +uname -a +locale -a +env +meson --version + +! which dpkg || dpkg -l +! which yum || yum list installed + +do_clean; BUILD_TYPE=autotools CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh +rm -rf /tmp/nm-docs-html; +mv build/INST/share/gtk-doc/html /tmp/nm-docs-html +do_clean; BUILD_TYPE=meson CC=gcc WITH_DOCS=1 WITH_VALGRIND=1 contrib/scripts/nm-ci-run.sh +do_clean; BUILD_TYPE=autotools CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh +do_clean; BUILD_TYPE=meson CC=clang WITH_DOCS=0 contrib/scripts/nm-ci-run.sh + +do_clean; test $IS_FEDORA = 1 -o $IS_CENTOS = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -W meson +do_clean; test $IS_FEDORA = 1 && ./contrib/fedora/rpm/build_clean.sh -g -w crypto_gnutls -w debug -w iwd -w test -w meson + +if [ "$NM_BUILD_TARBALL" = 1 ]; then + do_clean + SIGN_SOURCE=0 ./contrib/fedora/rpm/build_clean.sh -r + mv ./NetworkManager-1*.tar.xz /tmp/ + mv ./contrib/fedora/rpm/latest/SRPMS/NetworkManager-1*.src.rpm /tmp/ + do_clean + mv /tmp/nm-docs-html ./docs-html + mv /tmp/NetworkManager-1*.tar.xz /tmp/NetworkManager-1*.src.rpm ./ +fi + +echo "BUILD SUCCESSFUL!!" diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh index ee7f862e03..575b127e0c 100755 --- a/.gitlab-ci/debian-install.sh +++ b/.gitlab-ci/debian-install.sh @@ -1,14 +1,29 @@ #!/bin/bash -date '+%Y%m%d-%H%M%S'; DEBIAN_FRONTEND=noninteractive apt-get update -date '+%Y%m%d-%H%M%S'; DEBIAN_FRONTEND=noninteractive NM_INSTALL="apt-get -qq install -y" ./contrib/debian/REQUIRED_PACKAGES -date '+%Y%m%d-%H%M%S'; dbus-uuidgen --ensure -date '+%Y%m%d-%H%M%S'; sed -i 's/^# \(pl_PL.UTF-8 .*\)$/\1/p' /etc/locale.gen ; true -date '+%Y%m%d-%H%M%S'; locale-gen pl_PL.UTF-8 -date '+%Y%m%d-%H%M%S'; grep -q "VERSION=.16.04.[0-9]\+ LTS" /etc/os-release && pip3 install meson==0.53.2 -date '+%Y%m%d-%H%M%S'; grep -q "VERSION=.16.04.[0-9]\+ LTS" /etc/os-release || pip3 install meson -date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-ci-install-valgrind-in-ubuntu1604.sh +set -ex + +IS_UBUNTU_1604=0 +grep -q '^VERSION=.16.04.[0-9]\+ LTS' /etc/os-release && IS_UBUNTU_1604=1 + + +DEBIAN_FRONTEND=noninteractive apt-get update +DEBIAN_FRONTEND=noninteractive NM_INSTALL="apt-get -qq install -y" ./contrib/debian/REQUIRED_PACKAGES + +dbus-uuidgen --ensure + +sed -i 's/^# \(pl_PL.UTF-8 .*\)$/\1/p' /etc/locale.gen || true +locale-gen pl_PL.UTF-8 + +if [ $IS_UBUNTU_1604 = 1 ]; then + pip3 install meson==0.53.2 + contrib/scripts/nm-ci-install-valgrind-in-ubuntu1604.sh +else + pip3 install meson +fi # iproute2 5.2.0 on debian:sid causes our unit tests to fail. # Downgrade to a working version. See https://www.spinics.net/lists/netdev/msg584916.html -date '+%Y%m%d-%H%M%S'; ! ( dpkg -s iproute2 | grep -q '^Version[:] 5.2.0-1\(ubuntu1\)\?$' ) || (curl 'http://ftp.debian.org/debian/pool/main/i/iproute2/iproute2_4.20.0-2_amd64.deb' --output /tmp/iproute2_4.20.0-2_amd64.deb && dpkg -i /tmp/iproute2_4.20.0-2_amd64.deb) +if dpkg -s iproute2 | grep -q '^Version[:] 5.2.0-1\(ubuntu1\)\?$' ; then + curl 'http://ftp.debian.org/debian/pool/main/i/iproute2/iproute2_4.20.0-2_amd64.deb' --output /tmp/iproute2_4.20.0-2_amd64.deb + dpkg -i /tmp/iproute2_4.20.0-2_amd64.deb +fi diff --git a/.gitlab-ci/fedora-install.sh b/.gitlab-ci/fedora-install.sh index 9c8258e5e5..d48fd397a6 100755 --- a/.gitlab-ci/fedora-install.sh +++ b/.gitlab-ci/fedora-install.sh @@ -1,27 +1,48 @@ #!/bin/bash -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y glibc-common -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || localedef -c -i pl_PL -f UTF-8 pl_PL.UTF-8 && locale -a -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<7\>' /etc/os-release ) || yum install -y python36-dbus python36-gobject-base +set -ex -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf install -y 'dnf-command(config-manager)' -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || dnf config-manager --set-enabled PowerTools -date '+%Y%m%d-%H%M%S'; ! ( grep -q '^NAME=.*\(CentOS\)' /etc/os-release && grep -q '^VERSION_ID=.*\<8\>' /etc/os-release ) || curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-8/nmstate-nm-build-deps-epel-8.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-8.repo +IS_FEDORA=0 +IS_CENTOS=0 +IS_CENTOS_7=0 +grep -q '^NAME=.*\(CentOS\)' /etc/os-release && IS_CENTOS=1 +grep -q '^NAME=.*\(Fedora\)' /etc/os-release && IS_FEDORA=1 +if [ $IS_CENTOS = 1 ]; then + grep -q '^VERSION_ID=.*\<7\>' /etc/os-release && IS_CENTOS_7=1 +fi -date '+%Y%m%d-%H%M%S'; NM_NO_EXTRA=1 NM_INSTALL="yum install -y" ./contrib/fedora/REQUIRED_PACKAGES -date '+%Y%m%d-%H%M%S'; yum install -y glibc-langpack-pl ccache clang which +if [ $IS_CENTOS = 1 ]; then + if [ $IS_CENTOS_7 = 1 ]; then + yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + yum install -y glibc-common + localedef -c -i pl_PL -f UTF-8 pl_PL.UTF-8 + locale -a + yum install -y python36-dbus python36-gobject-base + else + dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + dnf install -y 'dnf-command(config-manager)' + dnf config-manager --set-enabled PowerTools + curl https://copr.fedorainfracloud.org/coprs/nmstate/nm-build-deps/repo/epel-8/nmstate-nm-build-deps-epel-8.repo > /etc/yum.repos.d/nmstate-nm-build-deps-epel-8.repo + fi +fi + + +NM_NO_EXTRA=1 NM_INSTALL="yum install -y" ./contrib/fedora/REQUIRED_PACKAGES +yum install -y glibc-langpack-pl ccache clang which # containers have "tsflags=nodocs" in /etc/dnf/dnf.conf. We need /usr/shared/gtk-doc/html # to generate proper documentation. -date '+%Y%m%d-%H%M%S'; yum reinstall -y --setopt='tsflags=' glib2-doc +yum reinstall -y --setopt='tsflags=' glib2-doc -date '+%Y%m%d-%H%M%S'; ! which dnf || dnf install -y python3-dnf-plugins-core -date '+%Y%m%d-%H%M%S'; ! which dnf || dnf debuginfo-install -y glib2 -date '+%Y%m%d-%H%M%S'; which dnf || debuginfo-install -y glib2 +if which dnf &>/dev/null; then + dnf install -y python3-dnf-plugins-core + dnf debuginfo-install -y glib2 +else + debuginfo-install -y glib2 +fi -date '+%Y%m%d-%H%M%S'; contrib/scripts/nm-ci-patch-gtkdoc.sh || true - -date '+%Y%m%d-%H%M%S'; test -x /usr/bin/ninja || ! test -x /usr/bin/ninja-build || ln -s /usr/bin/ninja-build /usr/bin/ninja +contrib/scripts/nm-ci-patch-gtkdoc.sh || true +if [ -x /usr/bin/ninja ] && ! [ -x /usr/bin/ninja-build ]; then + ln -s /usr/bin/ninja-build /usr/bin/ninja +fi