.travis.yml: Simplify Travis CI.

* Remove CI functions for make test-all.
  I want to simplify the `.travis.yml` for us to maintain it easily. When we
  need to skip a test, we can fix the test file directly.
  I removed the `tool/ci_functions.sh` too. I confirmed the file is not used in
  any other files.
* .travis.yml: Remove a notification for IRC channel.
  GitHub Actions don't use this notification. The setting is outdated.
* Fix to skip the commit including the document keyword.
  There were 2 `if` syntax lines in the file.
* Remove ccache.
This commit is contained in:
Jun Aruga 2023-10-27 13:01:37 +02:00 коммит произвёл Jun Aruga
Родитель 7979c009a7
Коммит a0b7574e59
2 изменённых файлов: 14 добавлений и 144 удалений

Просмотреть файл

@ -6,44 +6,27 @@
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
# We only manage non-amd64 free pipelines.
# Note we only manage non-amd64 free pipelines.
# https://docs.travis-ci.com/user/billing-overview/
# We enable Travis on the specific branches or forked repositories here.
if: (repo = ruby/ruby AND (branch = master OR branch =~ /^ruby_\d_\d$/)) OR repo != ruby/ruby OR commit_message !~ /\[DOC\]/
language: c
os: linux
if: commit_message !~ /\[DOC\]/
dist: focal
git:
quiet: true
cache:
ccache: true
directories:
- $HOME/config_2nd
- $HOME/.downloaded-cache
env:
global:
# The tests skipped in `make test-all`.
- TEST_ALL_SKIPPED_TESTS=
# The tests executed separately by `make test-all`.
- TEST_ALL_SEPARATED_TESTS=
# Reset timestamps early
- _=$(touch NEWS && find . -type f -exec touch -r NEWS {} +)
- CONFIGURE_TTY=no
- CCACHE_COMPILERCHECK=none
- CCACHE_NOCOMPRESS=1
- CCACHE_MAXSIZE=512Mi
- NPROC="`nproc`"
- NPROC="$(nproc)"
# JOBS and SETARCH are overridden when necessary; see below.
- JOBS=-j$((1+${NPROC}))
- SETARCH=
- RUBY_PREFIX=/tmp/ruby-prefix
- GEMS_FOR_TEST='timezone tzinfo'
# https://github.com/travis-ci/travis-build/blob/e411371dda21430a60f61b8f3f57943d2fe4d344/lib/travis/build/bash/travis_apt_get_options.bash#L7
- travis_apt_get_options='--allow-downgrades --allow-remove-essential --allow-change-held-packages'
- travis_apt_get_options="-yq --no-install-suggests --no-install-recommends $travis_apt_get_options"
@ -51,16 +34,15 @@ env:
- optflags=-O1
# -g0 disables backtraces when SEGV. Do not set that.
- debugflags=-ggdb3
- RUBY_TESTOPTS="$JOBS -q --tty=no"
.org.ruby-lang.ci.matrix-definitions:
- &gcc-10
compiler: gcc-10
before_install:
- tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq"
- >-
tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install
ccache
gcc-10
g++-10
libffi-dev
@ -72,8 +54,6 @@ env:
openssl
zlib1g-dev
# --------
- &arm64-linux
name: arm64-linux
arch: arm64
@ -102,15 +82,11 @@ env:
compiler: arm-linux-gnueabihf-gcc
env:
- SETARCH='setarch linux32 --verbose --32bit'
# The "TestReadline#test_interrupt_in_other_thread" started failing on arm32
# from https://www.travis-ci.com/github/ruby/ruby/jobs/529005145
- TEST_ALL_SKIPPED_TESTS=test_interrupt_in_other_thread
before_install:
- sudo dpkg --add-architecture armhf
- tool/travis_retry.sh sudo bash -c "rm -rf '${TRAVIS_ROOT}/var/lib/apt/lists/'* && exec apt-get update -yq"
- >-
tool/travis_retry.sh sudo -E apt-get $travis_apt_get_options install
ccache
crossbuild-essential-armhf
libc6:armhf
libstdc++-10-dev:armhf
@ -132,105 +108,28 @@ matrix:
- <<: *ppc64le-linux
- <<: *s390x-linux
allow_failures:
# We see multiple errors indicating errors on the Travis environment itself in a short while:
# https://app.travis-ci.com/github/ruby/ruby/jobs/544382885
# https://app.travis-ci.com/github/ruby/ruby/jobs/544361370
# It's not a fault of Ruby's arm32 support but just Travis arm32 seems unsable.
# Allow failures for the unstable jobs.
- name: arm32-linux
# - name: arm64-linux
# We see "Some worker was crashed." in about 40% of recent ppc64le-linux jobs
# e.g. https://app.travis-ci.com/github/ruby/ruby/jobs/530959548
- name: ppc64le-linux
# Tentatively disable, because often hungs up **after** all tests
# have finished successfully and saving caches.
- name: s390x-linux
fast_finish: true
before_script:
- . tool/ci_functions.sh
- |-
if [ -n "${TEST_ALL_SKIPPED_TESTS}" ]; then
TEST_ALL_OPTS="${TEST_ALL_OPTS} $(ci_to_excluded_test_opts "${TEST_ALL_SKIPPED_TESTS}")"
if [ -z "${TEST_ALL_SEPARATED_TESTS}" ]; then
TEST_ALL_SEPARATED_TESTS="${TEST_ALL_SKIPPED_TESTS}"
fi
fi
- |-
if [ -n "${TEST_ALL_SEPARATED_TESTS}" ]; then
TEST_ALL_OPTS_SEPARATED="$(ci_to_included_test_opts "${TEST_ALL_SEPARATED_TESTS}")"
fi
- echo TEST_ALL_OPTS="${TEST_ALL_OPTS}" TEST_ALL_OPTS_SEPARATED="${TEST_ALL_OPTS_SEPARATED}"
- rm -fr .ext autom4te.cache
- |-
[ -d ~/.downloaded-cache ] ||
mkdir ~/.downloaded-cache
- ln -s ~/.downloaded-cache
- "> config.status"
- "> .rbconfig.time"
- sed -f tool/prereq.status template/Makefile.in common.mk > Makefile
- make -s $JOBS up
- make -s $JOBS srcs
- rm -f config.status Makefile rbconfig.rb .rbconfig.time
- |-
if [ -d ~/config_2nd ]; then
cp -pr ~/config_2nd build
else
mkdir build
fi
- mkdir config_1st config_2nd gems/src
- chmod -R a-w .
- chmod -R u+w build config_1st config_2nd gems/src .bundle
- ./autogen.sh
- mkdir build
- cd build
- |-
case "$CC" in
gcc*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-diagnostics-color";;
clang*) CC="ccache $CC${GCC_FLAGS:+ }$GCC_FLAGS -fno-color-diagnostics";;
esac
- |-
[ ! -f config.cache ] ||
[ "$CC" = "`sed -n s/^ac_cv_prog_CC=//p config.cache`" ] ||
(set -x; exec rm config.cache)
- $SETARCH ../configure -C --disable-install-doc --prefix=$RUBY_PREFIX $CONFIG_FLAG
- cp -pr config.cache config.status .ext/include ../config_1st
- $SETARCH make reconfig
- cp -pr config.cache config.status .ext/include ../config_2nd
- (cd .. && exec diff -ru config_1st config_2nd)
- chmod u+w ..
- rm -rf ~/config_2nd
- mv ../config_2nd ~
- chmod u-w ..
- $SETARCH ../configure -C --disable-install-doc --prefix=$(pwd)/install
- $SETARCH make -s $JOBS
- make -s install
- |-
[ -z "${GEMS_FOR_TEST}" ] ||
$RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST
- echo "raise 'do not load ~/.irbrc in test'" > ~/.irbrc
- make -s $JOBS install
script:
- $SETARCH make -s test -o showflags TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}"
- ../tool/travis_wait.sh $SETARCH make -s test-all -o exts TESTOPTS="$JOBS -q --tty=no ${TEST_ALL_OPTS}" RUBYOPT="-w"
# Run the failing tests separately returning ok status to check if it works,
# visualize them.
- |
if [ -n "${TEST_ALL_OPTS_SEPARATED}" ]; then
$SETARCH make -s test-all -o exts TESTOPTS="$JOBS -v --tty=no ${TEST_ALL_OPTS_SEPARATED}" RUBYOPT="-w" || :
fi
- $SETARCH make -s test-spec # not using `-j` because sometimes `mspec -j` silently dies
- $SETARCH make -s -o showflags leaked-globals
# We enable Travis on the specific branches or forked repositories here.
if: (repo = ruby/ruby AND (branch = master OR branch =~ /^ruby_\d_\d$/)) OR repo != ruby/ruby
- $SETARCH make -s test
- ../tool/travis_wait.sh $SETARCH make -s test-all RUBYOPT="-w"
- $SETARCH make -s test-spec
# We want to be notified when something happens.
notifications:
irc:
channels:
- "chat.freenode.net#ruby-core"
on_success: change # [always|never|change] # default: always
on_failure: always # [always|never|change] # default: always
template:
- "%{message} by @%{author}: See %{build_url}"
webhooks:
urls:
- secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk= # ruby-lang slack: ruby/simpler-alerts-bot (travis)

Просмотреть файл

@ -1,29 +0,0 @@
# -*- BASH -*-
# Manage functions used on a CI.
# Run `. tool/ci_functions.sh` to use it.
# Create options with patterns `-n !/name1/ -n !/name2/ ..` to exclude the test
# method names by the method names `name1 name2 ..`.
# See `ruby tool/test/runner.rb --help` `-n` option.
function ci_to_excluded_test_opts {
local tests_str="${1}"
# Use the backward matching `!/name$/`, as the perfect matching doesn't work.
# https://bugs.ruby-lang.org/issues/16936
ruby <<EOF
opts = "${tests_str}".split.map { |test| "-n \!/#{test}\$$/" }
puts opts.join(' ')
EOF
return 0
}
# Create options with patterns `-n name1 -n name2 ..` to include the test
# method names by the method names `name1 name2 ..`.
# See `ruby tool/test/runner.rb --help` `-n` option.
function ci_to_included_test_opts {
local tests_str="${1}"
ruby <<EOF
opts = "${tests_str}".split.map { |test| "-n #{test}" }
puts opts.join(' ')
EOF
return 0
}