1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/.travis.yml
shyouhei 493955c692 .travis.yml: cache unicode.org files
Before this changeset (since r58071) we did not download files
from unicode.org but just touch some files.  This is a kind of
hack that people normally don't do at home.

We are caching other files between builds now.  Why not also save
those files downloaded from elsewhere.  This covers more
realistic workload, I guess.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-29 05:26:05 +00:00

412 lines
10 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
git:
quiet: true
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
- ccache
cache:
ccache: true
directories:
- $HOME/config_2nd
- $HOME/.downloaded-cache
env:
global:
- CONFIGURE_TTY=no
- CCACHE_COMPILERCHECK=none
- CCACHE_NOCOMPRESS=1
- CCACHE_MAXSIZE=512Mi
- >-
NPROC="`case ${TRAVIS_OS_NAME} in
osx) sysctl -n hw.activecpu ;;
linux) nproc ;;
esac`"
# JOBS and SETARCH are overridden when necessary; see below.
- JOBS=-j$((1+${NPROC}))
- SETARCH=
- RUBY_PREFIX=/tmp/ruby-prefix
- GEMS_FOR_TEST='timezone tzinfo'
.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="${TESTOPTS=$JOBS -q --tty=no}"
- &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:
- cppflags=-DVM_CHECK_MODE=0x0003
- &FIBER_USE_sjlj
name: FIBER_USE_NATIVE=0
<<: *linux
<<: *cron-only
env:
- cppflags=-DFIBER_USE_NATIVE=0
- &TOKEN_THREADED_CODE
name: TOKEN_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- cppflags=-DOPT_THREADED_CODE=1
- &CALL_THREADED_CODE
name: CALL_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- cppflags=-DOPT_THREADED_CODE=2
- &NO_THREADED_CODE
name: NO_THREADED_CODE
<<: *linux
<<: *cron-only
<<: *make-test-only
env:
- cppflags=-DOPT_THREADED_CODE=3
- &ASAN
name: -fsanitize=address
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- ASAN_OPTIONS=detect_leaks=0
- cflags='-march=native -fsanitize=address -fno-omit-frame-pointer'
- debugflags=-ggdb3
- optflags=-O1
- LD=clang
- LDFLAGS=-fsanitize=address
- &MSAN
name: -fsanitize=memory
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- cflags='-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer'
- optflags=-O1
- LD=clang
- LDFLAGS=-fsanitize=memory
- CONFIG_FLAG=--with-out-ext=openssl
- &UBSAN
name: -fsanitize=undefined
<<: *linux
#<<: *cron-only
<<: *make-test-only
compiler: clang
env:
- cflags='-fsanitize=undefined,integer,nullability -fno-omit-frame-pointer'
- cppflags=-DUNALIGNED_WORD_ACCESS=0
- debugflags=-ggdb3
- optflags='-O1 -march=native'
- LD=clang
- LDFLAGS=-fsanitize=undefined,integer,nullability
- &i686-linux
name: i686-linux
<<: *linux
sudo: required
env:
- GCC_FLAGS=-m32
- 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
env:
- GCC_FLAGS='-ansi -Werror=pedantic -pedantic-errors -std=iso9899:1990'
- CONFIG_FLAG=
- JOBS=
- >-
warnflags='
-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
'
- 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
- TEST_ALL_OPTS="$JOBS -q --tty=no --excludes=\$(TESTSDIR)/excludes/_travis/osx"
- &universal-darwin17
name: uinversal.x86_64h-darwin17
<<: *osx
<<: *cron-only
<<: *make-test-only
env:
- CONFIG_FLAG=--with-arch=x86_64h,x86_64,i386
- TEST_ALL_OPTS="$JOBS -q --tty=no --excludes=\$(TESTSDIR)/excludes/_travis/osx"
matrix:
include:
# to reduce time for finishing all jobs, run the slowest osx build first.
- <<: *x86_64-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:
- name: uinversal.x86_64h-darwin17
- name: -fsanitize=address
- name: -fsanitize=memory
- name: -fsanitize=undefined
fast_finish: true
before_script:
- echo JOBS=${JOBS} SETARCH=${SETARCH}
- $SETARCH uname -a
- $SETARCH uname -r
- rm -fr .ext autom4te.cache
- echo $TERM
- |-
[ -d ~/.downloaded-cache ] ||
mkdir ~/.downloaded-cache
- ln -s ~/.downloaded-cache
- "> config.status"
- sed -f tool/prereq.status Makefile.in common.mk > Makefile
- make -s $JOBS update-download
- make -s $JOBS srcs
- rm 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
- cd build
- ccache --show-stats
- |-
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 -r ~/config_2nd
- mv ../config_2nd ~
- chmod u-w ..
- $SETARCH make -s $JOBS && make install
- ccache --show-stats
- |-
[ -z "${GEMS_FOR_TEST}" ] ||
$RUBY_PREFIX/bin/gem install --no-document $GEMS_FOR_TEST
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: