aboutsummaryrefslogtreecommitdiffstats
path: root/.travis.yml
diff options
context:
space:
mode:
Diffstat (limited to '.travis.yml')
-rw-r--r--.travis.yml276
1 files changed, 66 insertions, 210 deletions
diff --git a/.travis.yml b/.travis.yml
index d480307dd6..6d942d1425 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,286 +6,142 @@
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
-# This is a Travis-CI build configuration file. The list of configurations
-# available is located in
-#
-# http://about.travis-ci.org/docs/user/build-configuration/
-#
-# and as Ruby itself is a project written in C language,
-#
-# http://about.travis-ci.org/docs/user/languages/c/
-#
-# is also a good place to look at.
+# When you see Travis CI issues, or you are interested in understanding how to
+# manage, please check the link below.
+# https://github.com/ruby/ruby/wiki/CI-Servers#travis-ci
+
+# 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
-dist: xenial
+dist: jammy
git:
quiet: true
-cache:
- ccache: true
- directories:
- - $HOME/config_2nd
- - $HOME/.downloaded-cache
-
env:
global:
- # 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`"
- # JOBS and SETARCH are overridden when necessary; see below.
- - JOBS=-j$((1+${NPROC}))
+ - NPROC="$(nproc)"
+ - JOBS="-j${NPROC}"
+ # SETARCH are overridden when necessary. See below.
- SETARCH=
- - RUBY_PREFIX=/tmp/ruby-prefix
- - GEMS_FOR_TEST='timezone tzinfo'
- - UPDATE_UNICODE="UNICODE_FILES=. UNICODE_PROPERTY_FILES=. UNICODE_AUXILIARY_FILES=. UNICODE_EMOJI_FILES=."
- - BEFORE_INSTALL=true
# 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"
+ # -g0 disables backtraces when SEGV. Do not set that.
+ - debugflags=-ggdb3
+ - RUBY_TESTOPTS="$JOBS -q --tty=no"
.org.ruby-lang.ci.matrix-definitions:
-
- - &make-test-only
- script:
- - $SETARCH make -s test TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}"
-
- - &gcc-8
- compiler: gcc-8
- # # Not using addon to control retries
- # addons:
- # apt:
- # sources:
- # - ubuntu-toolchain-r-test
- before_install:
- - bash -cx "${BEFORE_INSTALL}"
- - tool/travis_retry.sh sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- - 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-8
- g++-8
- libffi-dev
- libgdbm-dev
- libncurses5-dev
- libncursesw5-dev
- libreadline6-dev
- libssl-dev
- libyaml-dev
- openssl
- zlib1g-dev
-
- - &clang-8
- compiler: clang-8
- addons:
- apt:
- # Not doing this manually unlike other sources, because it has been stable.
- sources:
- - llvm-toolchain-xenial-8
- config:
- retries: true
+ - &gcc-11
+ compiler: gcc-11
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
- clang-8
- llvm-8-tools
+ gcc-11
+ g++-11
libffi-dev
- libgdbm-dev
- libncurses5-dev
+ libncurses-dev
libncursesw5-dev
- libreadline6-dev
+ libreadline-dev
libssl-dev
libyaml-dev
openssl
zlib1g-dev
-
- # --------
-
- - &x86_64-linux
- name: x86_64-linux
- <<: *gcc-8
-
+ - gcc-11 --version
- &arm64-linux
name: arm64-linux
arch: arm64
- <<: *gcc-8
-
+ <<: *gcc-11
+ - &ppc64le-linux
+ name: ppc64le-linux
+ arch: ppc64le
+ <<: *gcc-11
- &s390x-linux
name: s390x-linux
arch: s390x
- <<: *gcc-8
-
- - &i686-linux
- name: i686-linux
- compiler: gcc-8
+ <<: *gcc-11
env:
- - GCC_FLAGS=-m32
- - CXX='g++-8 -m32'
- - debugflags=-g0
- - SETARCH='setarch i686 --verbose --3gb'
- # # Not using addon to control retries
- # addons:
- # apt:
- # sources:
- # - ubuntu-toolchain-r-test
- before_install:
- - tool/travis_retry.sh sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- - 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
- gcc-8-multilib
- g++-8
- g++-8-multilib
- libstdc++-8-dev:i386
- libffi-dev:i386
- libffi6:i386
- libgdbm-dev:i386
- libgdbm3:i386
- libncurses5-dev:i386
- libncurses5:i386
- libncursesw5-dev:i386
- libreadline6-dev:i386
- libreadline6:i386
- libssl-dev:i386
- libssl1.0.0:i386
- linux-libc-dev:i386
- zlib1g-dev:i386
- zlib1g:i386
-
+ # Avoid possible test failures with the zlib applying the following patch
+ # on s390x CPU architecture.
+ # https://github.com/madler/zlib/pull/410
+ - DFLTCC=0
- &arm32-linux
name: arm32-linux
arch: arm64
- # https://packages.ubuntu.com/xenial/crossbuild-essential-armhf
+ # https://packages.ubuntu.com/jammy/crossbuild-essential-armhf
compiler: arm-linux-gnueabihf-gcc
env:
- - debugflags=-g0
- SETARCH='setarch linux32 --verbose --32bit'
+ # Still keep the -O1 for only arm32, while we want to test with the
+ # default optflags -O3.
+ # Because bootstraptest/test_ractor.rb fails with segfualt with the
+ # default -O3.
+ # https://bugs.ruby-lang.org/issues/19981
+ - optflags=-O1
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++-5-dev:armhf
+ libstdc++-10-dev:armhf
libffi-dev:armhf
- libffi6:armhf
- libgdbm-dev:armhf
- libgdbm3:armhf
- libncurses5-dev:armhf
- libncurses5:armhf
+ libncurses-dev:armhf
libncursesw5-dev:armhf
- libreadline6-dev:armhf
- libreadline6:armhf
+ libreadline-dev:armhf
libssl-dev:armhf
- libssl1.0.0:armhf
+ libyaml-dev:armhf
linux-libc-dev:armhf
zlib1g-dev:armhf
- zlib1g:armhf
matrix:
include:
- # Build every commit:
- - <<: *i686-linux
- # Build every commit (Allowed Failures):
- - <<: *arm32-linux
- <<: *arm64-linux
+ - <<: *ppc64le-linux
- <<: *s390x-linux
+ # FIXME: lib/rubygems/util.rb:104 glob_files_in_dir -
+ # <internal:dir>:411:in glob: File name too long - (Errno::ENAMETOOLONG)
+ # https://github.com/rubygems/rubygems/issues/7132
+ - <<: *arm32-linux
allow_failures:
- - name: arm32-linux
- - name: arm64-linux
- - name: s390x-linux
+ # Allow failures for the unstable jobs.
+ # - name: arm64-linux
+ # - name: ppc64le-linux
+ # - name: s390x-linux
+ # The 2nd arm64 pipeline may be unstable.
+ # - name: arm32-linux
fast_finish: true
before_script:
- - 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 touch-unicode-files
- - make -s $JOBS $UPDATE_UNICODE 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
- - chmod -R a-w .
- - chmod -R u+w build config_1st config_2nd
+ - ./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
+ # Useful info to report issues to the Ruby.
+ - $SETARCH $(pwd)/install/bin/ruby -v
+ # Useful info To report issues to the RubyGems.
+ - $SETARCH $(pwd)/install/bin/gem env
script:
- - $SETARCH make -s test -o showflags TESTOPTS="${TESTOPTS=$JOBS -q --tty=no}"
- - travis_wait 50 $SETARCH make -s test-all -o exts TESTOPTS="${TESTOPTS} ${TEST_ALL_OPTS}" RUBYOPT="-w"
- - $SETARCH make -s test-spec MSPECOPT=-ff # not using `-j` because sometimes `mspec -j` silently dies
- - $SETARCH make -s -o showflags leaked-globals
-
-# Branch matrix. Not all branches are Travis-ready so we limit branches here.
-branches:
- only:
- - master
- - ruby_2_4
- - ruby_2_5
- - ruby_2_6
- - ruby_2_7
+ - $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)
+ # ruby-lang slack: ruby/simpler-alerts-bot (travis)
+ - secure: mRsoS/UbqDkKkW5p3AEqM27d4SZnV6Gsylo3bm8T/deltQzTsGzZwrm7OIBXZv0UFZdE68XmPlyHfZFLSP2V9QZ7apXMf9/vw0GtcSe1gchtnjpAPF6lYBn7nMCbVPPx9cS0dwL927fjdRM1vj7IKZ2bk4F0lAJ25R25S6teqdk=
on_success: never
on_failure: always
-
email:
- - ko1c-failure@atdot.net
+ - jaruga@ruby-lang.org