mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* The 2.3 alias in RVM seems to resolve to 2.3.7. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			246 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
	
		
			7.7 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: trusty
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
matrix:
 | 
						|
  include:
 | 
						|
    # to reduce time for finishing all jobs, run the slowest osx build first.
 | 
						|
    - name: x86_64-darwin17
 | 
						|
      os: osx
 | 
						|
      compiler: clang
 | 
						|
      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'"
 | 
						|
      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
 | 
						|
    - name: x86_64-linux --with-jemalloc
 | 
						|
      os: linux
 | 
						|
      compiler: gcc
 | 
						|
      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)
 | 
						|
    - 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 .
 | 
						|
  allow_failures:
 | 
						|
    - name: pedanticism
 | 
						|
  fast_finish: true
 | 
						|
 | 
						|
before_script:
 | 
						|
  - "echo JOBS=$JOBS 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=--color=never"
 | 
						|
  - "export TEST_ALL_TESTOPTS=\"${TEST_ALL_TESTOPTS:- -q --color=never --job-status=normal}\""
 | 
						|
  - "$SETARCH make -s $JOBS test-all -o exts TESTOPTS=\"$TEST_ALL_TESTOPTS\""
 | 
						|
  - "$SETARCH make -s $JOBS test-spec MSPECOPT=-fs" # 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:
 |