diff options
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 203 |
1 files changed, 62 insertions, 141 deletions
diff --git a/.travis.yml b/.travis.yml index eb816b815b..06de3dd493 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,63 +6,47 @@ # conditions mentioned in the file COPYING are met. Consult the file for # details. -# We only manage non-amd64 free pipelines. -# https://docs.travis-ci.com/user/billing-overview/ +# 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 OR branch = master OR branch =~ /^ruby_\d_\d$/) + AND (commit_message !~ /\[DOC\]/) language: c os: linux -dist: focal +dist: jammy 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`" - # 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' # 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" - # -O1 is faster than -O3 in our tests. - - optflags=-O1 - # -g0 disables backtraces when SEGV. Do not set that. + # -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 + - &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 - ccache - gcc-10 - g++-10 + gcc-11 + g++-11 libffi-dev - libgdbm-dev libncurses-dev libncursesw5-dev libreadline-dev @@ -70,163 +54,100 @@ env: libyaml-dev openssl zlib1g-dev - - # -------- - + - gcc-11 --version - &arm64-linux name: arm64-linux arch: arm64 - <<: *gcc-10 - + <<: *gcc-11 - &ppc64le-linux name: ppc64le-linux arch: ppc64le - <<: *gcc-10 - + <<: *gcc-11 - &s390x-linux name: s390x-linux arch: s390x - <<: *gcc-10 - + <<: *gcc-11 + env: + # 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/focal/crossbuild-essential-armhf + # https://packages.ubuntu.com/jammy/crossbuild-essential-armhf 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 + # 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++-10-dev:armhf libffi-dev:armhf - libgdbm-dev:armhf libncurses-dev:armhf libncursesw5-dev:armhf libreadline-dev:armhf libssl-dev:armhf + libyaml-dev:armhf linux-libc-dev:armhf zlib1g-dev:armhf matrix: include: - # Build every commit (Allowed Failures): - - <<: *arm32-linux - # Comment out as the 2nd arm64 pipeline is unstable. - # - <<: *arm64-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: - # 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. - - name: arm32-linux + # Allow failures for the unstable jobs. # - 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 - # - name: s390x-linux + - name: s390x-linux + # The 2nd arm64 pipeline may be unstable. + # - name: arm32-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 - - chmod -R a-w . - - chmod -R u+w build config_1st config_2nd + - lscpu + - ./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}" - - ../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 MSPECOPT=-ff # 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" + - ../tool/travis_wait.sh $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: - - jaruga@ruby-lang.org + recipients: + - jaruga@ruby-lang.org + on_success: never + on_failure: always |