代码拉取完成,页面将自动刷新
同步操作将从 src-anolis-os/systemd 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 88ac207cc619935c64923e6f8fdef324a5b733d8 Mon Sep 17 00:00:00 2001
From: Frantisek Sumsal <[email protected]>
Date: Fri, 15 Jan 2021 15:13:53 +0100
Subject: [PATCH] ci: move jobs from Travis CI to GH Actions
The OSS version of Travis CI is going to be merged with the commercial
one soon, essentially dropping the free tier, so let's move the CI jobs
to GitHub Actions to keep them up.
rhel-only
Related: #1871827
---
.../workflows/unit_tests.sh | 28 +++----
.github/workflows/unit_tests.yml | 28 +++++++
.travis.yml | 48 ------------
ci/travis-centos-rhel7.sh | 73 -------------------
ci/travis_wait.bash | 61 ----------------
5 files changed, 37 insertions(+), 201 deletions(-)
rename ci/travis-centos-rhel8.sh => .github/workflows/unit_tests.sh (82%)
create mode 100644 .github/workflows/unit_tests.yml
delete mode 100644 .travis.yml
delete mode 100755 ci/travis-centos-rhel7.sh
delete mode 100644 ci/travis_wait.bash
diff --git a/ci/travis-centos-rhel8.sh b/.github/workflows/unit_tests.sh
similarity index 82%
rename from ci/travis-centos-rhel8.sh
rename to .github/workflows/unit_tests.sh
index ffe5813b1a..ea4f7e7592 100755
--- a/ci/travis-centos-rhel8.sh
+++ b/.github/workflows/unit_tests.sh
@@ -1,18 +1,9 @@
#!/bin/bash
-# Run this script from the root of the systemd's git repository
-# or set REPO_ROOT to a correct path.
-#
-# Example execution on Fedora:
-# dnf install docker
-# systemctl start docker
-# export CONT_NAME="my-fancy-container"
-# ci/travis-centos.sh SETUP RUN CLEANUP
-
PHASES=(${@:-SETUP RUN CLEANUP})
CENTOS_RELEASE="${CENTOS_RELEASE:-latest}"
CONT_NAME="${CONT_NAME:-centos-$CENTOS_RELEASE-$RANDOM}"
-DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}"
+DOCKER_EXEC="${DOCKER_EXEC:-docker exec $CONT_NAME}"
DOCKER_RUN="${DOCKER_RUN:-docker run}"
REPO_ROOT="${REPO_ROOT:-$PWD}"
ADDITIONAL_DEPS=(libasan libubsan net-tools strace nc e2fsprogs quota dnsmasq diffutils)
@@ -71,9 +62,7 @@ function info() {
echo -e "\033[33;1m$1\033[0m"
}
-set -e
-
-source "$(dirname $0)/travis_wait.bash"
+set -ex
for phase in "${PHASES[@]}"; do
case $phase in
@@ -86,6 +75,7 @@ for phase in "${PHASES[@]}"; do
$DOCKER_RUN -v $REPO_ROOT:/build:rw \
-w /build --privileged=true --name $CONT_NAME \
-dit --net=host quay.io/centos/centos:$CENTOS_RELEASE /sbin/init
+
# Beautiful workaround for Fedora's version of Docker
sleep 1
$DOCKER_EXEC dnf makecache
@@ -97,10 +87,10 @@ for phase in "${PHASES[@]}"; do
# Install systemd's build dependencies
$DOCKER_EXEC dnf -q -y --enablerepo "powertools" builddep systemd
;;
- RUN)
+ RUN|RUN_GCC)
info "Run phase"
# Build systemd
- docker exec -it -e CFLAGS='-g -O0 -ftrapv' $CONT_NAME meson build -Dtests=unsafe -Dslow-tests=true "${CONFIGURE_OPTS[@]}"
+ docker exec -e CFLAGS='-g -O0 -ftrapv' $CONT_NAME meson build -Dtests=unsafe -Dslow-tests=true "${CONFIGURE_OPTS[@]}"
$DOCKER_EXEC ninja -v -C build
# Let's install the new systemd and "reboot" the container to avoid
# unexpected fails due to incompatibilities with older systemd
@@ -108,16 +98,16 @@ for phase in "${PHASES[@]}"; do
docker restart $CONT_NAME
$DOCKER_EXEC ninja -C build test
;;
- RUN_ASAN|RUN_CLANG_ASAN)
+ RUN_ASAN|RUN_GCC_ASAN|RUN_CLANG_ASAN)
if [[ "$phase" = "RUN_CLANG_ASAN" ]]; then
ENV_VARS="-e CC=clang -e CXX=clang++"
MESON_ARGS="-Db_lundef=false" # See https://github.com/mesonbuild/meson/issues/764
fi
- docker exec $ENV_VARS -it $CONT_NAME meson build --werror -Dtests=unsafe -Db_sanitize=address,undefined $MESON_ARGS "${CONFIGURE_OPTS[@]}"
- docker exec -it $CONT_NAME ninja -v -C build
+ docker exec $ENV_VARS $CONT_NAME meson build --werror -Dtests=unsafe -Db_sanitize=address,undefined $MESON_ARGS "${CONFIGURE_OPTS[@]}"
+ docker exec $CONT_NAME ninja -v -C build
# Never remove halt_on_error from UBSAN_OPTIONS. See https://github.com/systemd/systemd/commit/2614d83aa06592aedb.
- travis_wait docker exec --interactive=false \
+ docker exec --interactive=false \
-e UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1 \
-e ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1 \
-e "TRAVIS=$TRAVIS" \
diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml
new file mode 100644
index 0000000000..15f5127a75
--- /dev/null
+++ b/.github/workflows/unit_tests.yml
@@ -0,0 +1,28 @@
+---
+# vi: ts=2 sw=2 et:
+#
+name: Unit tests
+on:
+ pull_request:
+ branches:
+ - master
+
+jobs:
+ build:
+ runs-on: ubuntu-20.04
+ env:
+ CENTOS_RELEASE: "centos8"
+ CONT_NAME: "systemd-centos8-ci"
+ strategy:
+ fail-fast: false
+ matrix:
+ run_phase: [GCC, GCC_ASAN]
+ steps:
+ - name: Repository checkout
+ uses: actions/checkout@v1
+ - name: Install build dependencies
+ run: sudo -E .github/workflows/unit_tests.sh SETUP
+ - name: Build & test (${{ matrix.run_phase }})
+ run: sudo -E .github/workflows/unit_tests.sh RUN_${{ matrix.run_phase }}
+ - name: Cleanup
+ run: sudo -E .github/workflows/unit_tests.sh CLEANUP
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 70c60cf24e..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-sudo: required
-dist: xenial
-services:
- - docker
-
-env:
- global:
- - CI_ROOT="$TRAVIS_BUILD_DIR/ci/"
-
-jobs:
- include:
- - name: CentOS 8
- language: bash
- env:
- - CENTOS_RELEASE="centos8"
- - CONT_NAME="systemd-centos-$CENTOS_RELEASE"
- - DOCKER_EXEC="docker exec -ti $CONT_NAME"
- before_install:
- - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- - docker --version
- install:
- - $CI_ROOT/travis-centos-rhel8.sh SETUP
- script:
- - set -e
- # Build systemd
- - $CI_ROOT/travis-centos-rhel8.sh RUN
- - set +e
- after_script:
- - $CI_ROOT/travis-centos-rhel8.sh CLEANUP
-
- - name: CentOS 8 (ASan+UBSan)
- language: bash
- env:
- - CENTOS_RELEASE="centos8"
- - CONT_NAME="systemd-centos-$CENTOS_RELEASE"
- - DOCKER_EXEC="docker exec -ti $CONT_NAME"
- before_install:
- - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- - docker --version
- install:
- - $CI_ROOT/travis-centos-rhel8.sh SETUP
- script:
- - set -e
- # Build systemd
- - $CI_ROOT/travis-centos-rhel8.sh RUN_ASAN
- - set +e
- after_script:
- - $CI_ROOT/travis-centos-rhel8.sh CLEANUP
diff --git a/ci/travis-centos-rhel7.sh b/ci/travis-centos-rhel7.sh
deleted file mode 100755
index 73416798ed..0000000000
--- a/ci/travis-centos-rhel7.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/bash
-
-# Run this script from the root of the systemd's git repository
-# or set REPO_ROOT to a correct path.
-#
-# Example execution on Fedora:
-# dnf install docker
-# systemctl start docker
-# export CONT_NAME="my-fancy-container"
-# ci/travis-centos.sh SETUP RUN CLEANUP
-
-PHASES=(${@:-SETUP RUN CLEANUP})
-CENTOS_RELEASE="${CENTOS_RELEASE:-latest}"
-CONT_NAME="${CONT_NAME:-centos-$CENTOS_RELEASE-$RANDOM}"
-DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}"
-DOCKER_RUN="${DOCKER_RUN:-docker run}"
-REPO_ROOT="${REPO_ROOT:-$PWD}"
-ADDITIONAL_DEPS=(yum-utils iputils hostname libasan libubsan clang llvm)
-
-function info() {
- echo -e "\033[33;1m$1\033[0m"
-}
-
-set -e
-
-source "$(dirname $0)/travis_wait.bash"
-
-for phase in "${PHASES[@]}"; do
- case $phase in
- SETUP)
- info "Setup phase"
- info "Using Travis $CENTOS_RELEASE"
- # Pull a Docker image and start a new container
- docker pull centos:$CENTOS_RELEASE
- info "Starting container $CONT_NAME"
- $DOCKER_RUN -v $REPO_ROOT:/build:rw \
- -w /build --privileged=true --name $CONT_NAME \
- -dit --net=host centos:$CENTOS_RELEASE /sbin/init
- # Beautiful workaround for Fedora's version of Docker
- sleep 1
- $DOCKER_EXEC yum makecache
- # Install necessary build/test requirements
- $DOCKER_EXEC yum -y upgrade
- $DOCKER_EXEC yum -y install "${ADDITIONAL_DEPS[@]}"
- $DOCKER_EXEC yum-builddep -y systemd
- ;;
- RUN)
- info "Run phase"
- # Build systemd
- $DOCKER_EXEC ./autogen.sh
- $DOCKER_EXEC ./configure --disable-timesyncd --disable-kdbus --disable-terminal \
- --enable-gtk-doc --enable-compat-libs --disable-sysusers \
- --disable-ldconfig --enable-lz4 --with-sysvinit-path=/etc/rc.d/init.d
- $DOCKER_EXEC make
- # Let's install the new systemd and "reboot" the container to avoid
- # unexpected fails due to incompatibilities with older systemd
- $DOCKER_EXEC make install
- docker restart $CONT_NAME
- if ! $DOCKER_EXEC make check; then
- $DOCKER_EXEC cat test-suite.log
- exit 1
- fi
- ;;
- CLEANUP)
- info "Cleanup phase"
- docker stop $CONT_NAME
- docker rm -f $CONT_NAME
- ;;
- *)
- echo >&2 "Unknown phase '$phase'"
- exit 1
- esac
-done
diff --git a/ci/travis_wait.bash b/ci/travis_wait.bash
deleted file mode 100644
index acf6ad15e4..0000000000
--- a/ci/travis_wait.bash
+++ /dev/null
@@ -1,61 +0,0 @@
-# This was borrowed from https://github.com/travis-ci/travis-build/tree/master/lib/travis/build/bash
-# to get around https://github.com/travis-ci/travis-ci/issues/9979. It should probably be removed
-# as soon as Travis CI has started to provide an easy way to export the functions to bash scripts.
-
-travis_jigger() {
- local cmd_pid="${1}"
- shift
- local timeout="${1}"
- shift
- local count=0
-
- echo -e "\\n"
-
- while [[ "${count}" -lt "${timeout}" ]]; do
- count="$((count + 1))"
- echo -ne "Still running (${count} of ${timeout}): ${*}\\r"
- sleep 60
- done
-
- echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n"
- kill -9 "${cmd_pid}"
-}
-
-travis_wait() {
- local timeout="${1}"
-
- if [[ "${timeout}" =~ ^[0-9]+$ ]]; then
- shift
- else
- timeout=20
- fi
-
- local cmd=("${@}")
- local log_file="travis_wait_${$}.log"
-
- "${cmd[@]}" &>"${log_file}" &
- local cmd_pid="${!}"
-
- travis_jigger "${!}" "${timeout}" "${cmd[@]}" &
- local jigger_pid="${!}"
- local result
-
- {
- set +e
- wait "${cmd_pid}" 2>/dev/null
- result="${?}"
- ps -p"${jigger_pid}" &>/dev/null && kill "${jigger_pid}"
- set -e
- }
-
- if [[ "${result}" -eq 0 ]]; then
- echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}"
- else
- echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}"
- fi
-
- echo -e "\\n${ANSI_GREEN}Log:${ANSI_RESET}\\n"
- cat "${log_file}"
-
- return "${result}"
-}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。