mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
.travis.yml: add cron-only builds
Inspired by [GH-1984], let us add some tests that run only once a day. These configurations are either slow to compile or slow to run. But I think they are worth done occasionally. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cc508b544d
commit
19adb8082a
1 changed files with 227 additions and 121 deletions
348
.travis.yml
348
.travis.yml
|
@ -49,132 +49,238 @@ addons:
|
||||||
- openssl@1.1
|
- openssl@1.1
|
||||||
- zlib
|
- zlib
|
||||||
|
|
||||||
|
.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:
|
||||||
|
# Bare "brew update" nukes everything.
|
||||||
|
# These steps are very carefully chosen to avoid breaking things.
|
||||||
|
- brew_core_dir=/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
|
||||||
|
- git -C $brew_core_dir fetch -q origin
|
||||||
|
- git -C $brew_core_dir checkout -q 25590710e3f7af9cfa173c5cd3eb41a0532107b6
|
||||||
|
- HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade openssl@1.1
|
||||||
|
- /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"
|
||||||
|
|
||||||
|
- &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'"
|
||||||
|
- "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-extended-offsetof
|
||||||
|
-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: Running ruby/spec on 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=" # osx build randomly fails with `-j`
|
||||||
|
# `-v` prints too long outputs, but sometimes it osx build hangs and we can't know which test is bad without `-v`.
|
||||||
|
- "TEST_ALL_TESTOPTS='-v --color=never --job-status=normal --excludes=$(TESTSDIR)/excludes/_travis'"
|
||||||
|
|
||||||
|
- &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:
|
matrix:
|
||||||
include:
|
include:
|
||||||
# to reduce time for finishing all jobs, run the slowest osx build first.
|
# to reduce time for finishing all jobs, run the slowest osx build first.
|
||||||
- name: x86_64-darwin17
|
- <<: *x86_64-darwin17
|
||||||
os: osx
|
- <<: *universal-darwin17
|
||||||
compiler: clang
|
- <<: *x86_64-linux
|
||||||
env:
|
- <<: *i686-linux
|
||||||
- "CONFIG_FLAG='--with-opt-dir=/usr/local/opt/openssl@1.1:/usr/local/opt/zlib'"
|
- <<: *jemalloc
|
||||||
- "JOBS=" # osx build randomly fails with `-j`
|
- <<: *pedanticism
|
||||||
# `-v` prints too long outputs, but sometimes it osx build hangs and we can't know which test is bad without `-v`.
|
- <<: *ASAN
|
||||||
- "TEST_ALL_TESTOPTS='-v --color=never --job-status=normal --excludes=$(TESTSDIR)/excludes/_travis'"
|
- <<: *MSAN
|
||||||
before_install:
|
- <<: *UBSAN
|
||||||
# Bare "brew update" nukes everything.
|
- <<: *VM_CHECK_MODE
|
||||||
# These steps are very carefully chosen to avoid breaking things.
|
- <<: *TOKEN_THREADED_CODE
|
||||||
- brew_core_dir=/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
|
- <<: *CALL_THREADED_CODE
|
||||||
- git -C $brew_core_dir fetch -q origin
|
- <<: *NO_THREADED_CODE
|
||||||
- git -C $brew_core_dir checkout -q 25590710e3f7af9cfa173c5cd3eb41a0532107b6
|
- <<: *rubyspec
|
||||||
- HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade openssl@1.1
|
allow_failures:
|
||||||
- /usr/local/opt/openssl@1.1/bin/openssl version
|
- name: uinversal.x86_64h-darwin17
|
||||||
- name: x86_64-linux --with-jemalloc
|
- name: -fsanitize=address
|
||||||
os: linux
|
- name: -fsanitize=memory
|
||||||
compiler: gcc
|
fast_finish: true
|
||||||
env:
|
|
||||||
- "CONFIG_FLAG='--with-gmp --with-jemalloc --with-valgrind'"
|
|
||||||
- "JOBS=-j`nproc`"
|
|
||||||
- name: x86_64-linux
|
|
||||||
os: linux
|
|
||||||
compiler: gcc-8
|
|
||||||
env:
|
|
||||||
- "JOBS=-j`nproc`"
|
|
||||||
# - name: uinversal.i386-darwin17
|
|
||||||
# os: osx
|
|
||||||
# compiler: clang
|
|
||||||
# env:
|
|
||||||
# - "CONFIG_FLAG='--with-arch=i386'"
|
|
||||||
# - "JOBS=\"-j`sysctl -n hw.activecpu`\""
|
|
||||||
# - name: uinversal.x86_64h-darwin17
|
|
||||||
# os: osx
|
|
||||||
# compiler: clang
|
|
||||||
# env:
|
|
||||||
# - "CONFIG_FLAG='--with-arch=x86_64h'"
|
|
||||||
# - "JOBS=\"-j`sysctl -n hw.activecpu`\""
|
|
||||||
- name: i686-linux
|
|
||||||
os: linux
|
|
||||||
sudo: required
|
|
||||||
compiler: "'gcc-8 -m32'"
|
|
||||||
env:
|
|
||||||
- "CONFIG_FLAG='debugflags=-g0'"
|
|
||||||
- "JOBS=-j`nproc`"
|
|
||||||
- "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
|
|
||||||
- name: pedanticism
|
|
||||||
os: linux
|
|
||||||
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-extended-offsetof
|
|
||||||
-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)
|
|
||||||
script:
|
|
||||||
- "$SETARCH make -s test TESTOPTS=--color=never"
|
|
||||||
- os: linux
|
|
||||||
language: ruby
|
|
||||||
rvm: 2.3.8
|
|
||||||
name: Running ruby/spec on 2.3 to ensure version guards are correctly added
|
|
||||||
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 .
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- "echo JOBS=$JOBS SETARCH=${SETARCH=}"
|
- "echo JOBS=${JOBS=-j`nproc`} SETARCH=${SETARCH=}"
|
||||||
- "$SETARCH uname -a"
|
- "$SETARCH uname -a"
|
||||||
- "$SETARCH uname -r"
|
- "$SETARCH uname -r"
|
||||||
- "rm -fr .ext autom4te.cache"
|
- "rm -fr .ext autom4te.cache"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue