mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00

To reduce the amount of output, prefer --tty=no instead of --color=never. This option not only disables color output but also kill some tty-related features, like spinners. Travis limits its output by the physical size of the log, not by the number of lines. This change should make more room for new logs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
353 lines
9.1 KiB
YAML
353 lines
9.1 KiB
YAML
# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved.
|
|
#
|
|
# This file is a part of the programming language Ruby. Permission is hereby
|
|
# granted, to either redistribute or modify this file, provided that the
|
|
# 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.
|
|
|
|
language: c
|
|
dist: xenial
|
|
osx_image: xcode10.1
|
|
sudo: false
|
|
addons:
|
|
apt:
|
|
config:
|
|
retries: true
|
|
update: true
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- gcc-8
|
|
- libffi-dev
|
|
- libgdbm-dev
|
|
- libgmp-dev
|
|
- libjemalloc-dev
|
|
- libncurses5-dev
|
|
- libncursesw5-dev
|
|
- libreadline6-dev
|
|
- libssl-dev
|
|
- libyaml-dev
|
|
- openssl
|
|
- valgrind
|
|
- zlib1g-dev
|
|
homebrew:
|
|
packages:
|
|
- gdbm
|
|
- gmp
|
|
- libffi
|
|
- openssl@1.1
|
|
- zlib
|
|
env:
|
|
global:
|
|
- "CONFIGURE_TTY=no"
|
|
.org.ruby-lang.ci.matrix-definitions:
|
|
|
|
- &cron-only
|
|
if: (type = cron) AND (branch = trunk) AND (fork = false)
|
|
|
|
- &make-test-only
|
|
script:
|
|
- "$SETARCH make -s test TESTOPTS=--color=never"
|
|
|
|
- &linux
|
|
os: linux
|
|
compiler: gcc-8
|
|
|
|
- &osx
|
|
os: osx
|
|
compiler: clang
|
|
before_install:
|
|
- /usr/local/opt/openssl@1.1/bin/openssl version
|
|
|
|
# --------
|
|
|
|
- &x86_64-linux
|
|
name: x86_64-linux
|
|
<<: *linux
|
|
|
|
- &jemalloc
|
|
name: --with-jemalloc
|
|
<<: *linux
|
|
<<: *cron-only
|
|
env:
|
|
- "CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind'"
|
|
|
|
- &VM_CHECK_MODE
|
|
name: VM_CHECK_MODE=3
|
|
<<: *linux
|
|
<<: *cron-only
|
|
<<: *make-test-only
|
|
env:
|
|
- "CFLAGS=-DVM_CHECK_MODE=0x0003"
|
|
|
|
- &FIBER_USE_sjlj
|
|
name: FIBER_USE_NATIVE=0
|
|
<<: *linux
|
|
<<: *cron-only
|
|
env:
|
|
- "CFLAGS=-DFIBER_USE_NATIVE=0"
|
|
|
|
- &TOKEN_THREADED_CODE
|
|
name: TOKEN_THREADED_CODE
|
|
<<: *linux
|
|
<<: *cron-only
|
|
<<: *make-test-only
|
|
env:
|
|
- "CFLAGS=-DOPT_THREADED_CODE=1"
|
|
|
|
- &CALL_THREADED_CODE
|
|
name: CALL_THREADED_CODE
|
|
<<: *linux
|
|
<<: *cron-only
|
|
<<: *make-test-only
|
|
env:
|
|
- "CFLAGS=-DOPT_THREADED_CODE=2"
|
|
|
|
- &NO_THREADED_CODE
|
|
name: NO_THREADED_CODE
|
|
<<: *linux
|
|
<<: *cron-only
|
|
<<: *make-test-only
|
|
env:
|
|
- "CFLAGS=-DOPT_THREADED_CODE=3"
|
|
|
|
- &ASAN
|
|
name: -fsanitize=address
|
|
<<: *linux
|
|
#<<: *cron-only
|
|
<<: *make-test-only
|
|
compiler: clang
|
|
env:
|
|
- "ASAN_OPTIONS=detect_leaks=0"
|
|
- "CFLAGS='-ggdb3 -O1 -march=native -fsanitize=address -fno-omit-frame-pointer'"
|
|
- "LD=clang"
|
|
- "LDFLAGS=-fsanitize=address"
|
|
|
|
- &MSAN
|
|
name: -fsanitize=memory
|
|
<<: *linux
|
|
#<<: *cron-only
|
|
<<: *make-test-only
|
|
compiler: clang
|
|
env:
|
|
- "CFLAGS='-fsanitize=memory'"
|
|
- "LD=clang"
|
|
- "LDFLAGS=-fsanitize=memory"
|
|
|
|
- &UBSAN
|
|
name: -fsanitize=undefined
|
|
<<: *linux
|
|
#<<: *cron-only
|
|
<<: *make-test-only
|
|
compiler: clang
|
|
env:
|
|
- "CFLAGS='-ggdb3 -O1 -march=native -fsanitize=undefined,integer,nullability -fno-omit-frame-pointer -DUNALIGNED_WORD_ACCESS=0'"
|
|
- "LD=clang"
|
|
- "LDFLAGS=-fsanitize=undefined,integer,nullability"
|
|
|
|
- &i686-linux
|
|
name: i686-linux
|
|
<<: *linux
|
|
sudo: required
|
|
compiler: "'gcc-8 -m32'"
|
|
env:
|
|
- "CONFIG_FLAG='debugflags=-g0'"
|
|
- "SETARCH='setarch i686 --verbose --3gb'"
|
|
addons:
|
|
apt:
|
|
config:
|
|
retries: true
|
|
update: true
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- gcc-8-multilib
|
|
- 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
|
|
|
|
- &pedanticism
|
|
name: "-ansi -pedantic"
|
|
<<: *linux
|
|
<<: *make-test-only
|
|
compiler: "'clang -ansi -Werror=pedantic -pedantic-errors -std=iso9899:1990'"
|
|
env:
|
|
- "CONFIG_FLAG="
|
|
- "JOBS="
|
|
# construct warnflags (using bashism...)
|
|
before_install: |
|
|
warnflags_array=(
|
|
-Wall
|
|
-Wextra
|
|
-Werror=declaration-after-statement
|
|
-Werror=deprecated-declarations
|
|
-Werror=division-by-zero
|
|
-Werror=extra-tokens
|
|
-Werror=implicit-function-declaration
|
|
-Werror=implicit-int
|
|
-Werror=long-long
|
|
-Werror=pointer-arith
|
|
-Werror=shorten-64-to-32
|
|
-Werror=write-strings
|
|
-Wmissing-noreturn
|
|
-Wno-constant-logical-operand
|
|
-Wno-missing-field-initializers
|
|
-Wno-overlength-strings
|
|
-Wno-parentheses-equality
|
|
-Wno-self-assign
|
|
-Wno-tautological-compare
|
|
-Wno-unused-local-typedef
|
|
-Wno-unused-parameter
|
|
-Wunused-variable
|
|
)
|
|
CONFIG_FLAG_ARRAY=(
|
|
warnflags="${warnflags_array[*]}"
|
|
LDFLAGS=-Wno-unused-command-line-argument)
|
|
|
|
- &rubyspec
|
|
name: ruby/spec on Ruby 2.3 # to ensure version guards are correctly added
|
|
<<: *linux
|
|
language: ruby
|
|
rvm: 2.3.8
|
|
addons:
|
|
apt:
|
|
packages:
|
|
before_install:
|
|
install:
|
|
before_script: chmod -R u+w spec/ruby
|
|
# -j randomly hangs. Using -fs to make sure we can know problematic spec on failure.
|
|
script: ruby -C spec/ruby ../mspec/bin/mspec -fs .
|
|
|
|
- &x86_64-darwin17
|
|
name: x86_64-darwin17
|
|
<<: *osx
|
|
env:
|
|
- "CONFIG_FLAG='--with-opt-dir=/usr/local/opt/openssl@1.1:/usr/local/opt/zlib'"
|
|
- "JOBS=\"-j`sysctl -n hw.activecpu`\""
|
|
|
|
- &universal-darwin17
|
|
name: uinversal.x86_64h-darwin17
|
|
<<: *osx
|
|
<<: *cron-only
|
|
<<: *make-test-only
|
|
env:
|
|
- "CONFIG_FLAG='--with-arch=x86_64h,x86_64,i386'"
|
|
- "JOBS=\"-j`sysctl -n hw.activecpu`\""
|
|
|
|
matrix:
|
|
include:
|
|
# to reduce time for finishing all jobs, run the slowest osx build first.
|
|
- <<: *x86_64-darwin17
|
|
- <<: *universal-darwin17
|
|
- <<: *x86_64-linux
|
|
- <<: *i686-linux
|
|
- <<: *jemalloc
|
|
- <<: *pedanticism
|
|
- <<: *ASAN
|
|
- <<: *MSAN
|
|
- <<: *UBSAN
|
|
- <<: *VM_CHECK_MODE
|
|
- <<: *FIBER_USE_sjlj
|
|
- <<: *TOKEN_THREADED_CODE
|
|
- <<: *CALL_THREADED_CODE
|
|
- <<: *NO_THREADED_CODE
|
|
- <<: *rubyspec
|
|
allow_failures:
|
|
- os: osx
|
|
- name: uinversal.x86_64h-darwin17
|
|
- name: -fsanitize=address
|
|
- name: -fsanitize=memory
|
|
- name: -fsanitize=undefined
|
|
fast_finish: true
|
|
|
|
before_script:
|
|
- "echo JOBS=${JOBS=-j`nproc`} SETARCH=${SETARCH=}"
|
|
- "$SETARCH uname -a"
|
|
- "$SETARCH uname -r"
|
|
- "rm -fr .ext autom4te.cache"
|
|
- "echo $TERM"
|
|
- "> config.status"
|
|
- "sed -f tool/prereq.status Makefile.in common.mk > Makefile"
|
|
- "make update-config_files"
|
|
- "make touch-unicode-files"
|
|
- "make -s $JOBS srcs UNICODE_FILES=."
|
|
- "rm config.status Makefile rbconfig.rb .rbconfig.time"
|
|
- "mkdir build config_1st config_2nd"
|
|
- "chmod -R a-w ."
|
|
- "chmod u+w build config_1st config_2nd"
|
|
- "cd build"
|
|
- "$SETARCH ../configure -C --disable-install-doc --prefix=/tmp/ruby-prefix --with-gcc=\"$CC\" $CONFIG_FLAG \"${CONFIG_FLAG_ARRAY[@]}\""
|
|
- "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)"
|
|
- "$SETARCH make -s $JOBS && make install"
|
|
|
|
script:
|
|
- "$SETARCH make -s test TESTOPTS=\"${TESTOPTS=$JOBS -q --tty=no}\""
|
|
- "$SETARCH make -s test-all -o exts TESTOPTS=\"${TEST_ALL_OPTS=$TESTOPTS}\""
|
|
- "$SETARCH make -s test-spec MSPECOPT=-ff" # not using `-j` because sometimes `mspec -j` silently dies
|
|
|
|
# Branch matrix. Not all branches are Travis-ready so we limit branches here.
|
|
branches:
|
|
only:
|
|
- trunk
|
|
- ruby_2_3
|
|
- ruby_2_4
|
|
- ruby_2_5
|
|
- /^feature\//
|
|
- /^bug\//
|
|
- /^travis-/
|
|
|
|
# We want to be notified when something happens.
|
|
notifications:
|
|
irc:
|
|
channels:
|
|
- "chat.freenode.net#ruby-core"
|
|
- "chat.freenode.net#ruby-ja"
|
|
on_success: change # [always|never|change] # default: always
|
|
on_failure: always # [always|never|change] # default: always
|
|
template:
|
|
- "%{message} by @%{author}: See %{build_url}"
|
|
|
|
slack:
|
|
rooms:
|
|
- secure: i1GLETSKye85ea6dGNA3MxI/5myChmMFiZtBd5C69xK+s1sBFqEgOSbaSf9KHc0CYrHVyNhQMaZRruieV7xS+6Pfs0Zvxf1DO6QQTWC2KhkqwFDLvZncAzjoyASdR90hbr+iRPOngQ+HJuE94zemALAwEqNAinzA74PMiJXktqY= # ruby:<token>#commits
|
|
- secure: ah7UEHBvncXT7bM5mvYIQAO+tIyV/wl7nXLb7wQD16dO2v8Gragy0mWjB79Q09hrrMGmp6H9bCDpdGS80boIA5EHaHoG4QaP0i9bsSt8U2AMWgZtfyIgQKJ4H2kXkGlrjO+AXTgnIkP7LNjdgAVUUTGQPb26T3QmoN2Splt+fIQ= # ruby:<token>#alerts
|
|
on_pull_requests: false
|
|
on_success: change
|
|
on_failure: always
|
|
|
|
email:
|
|
- ko1c-failure@atdot.net
|
|
|
|
# Local Variables:
|
|
# mode: YAML
|
|
# coding: utf-8-unix
|
|
# indent-tabs-mode: nil
|
|
# tab-width: 4
|
|
# fill-column: 79
|
|
# default-justification: full
|
|
# End:
|