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

Cache downloaded external libraries/gems, which are expected not changed so frequently. Also sometimes downloading from zlib returns the current time as the date header in unexpected format, and checksums mismatch at that time.
128 lines
4.6 KiB
YAML
128 lines
4.6 KiB
YAML
name: Ubuntu
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- '**.md'
|
|
- '**.rdoc'
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'doc/**'
|
|
- '**.md'
|
|
- '**.rdoc'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
|
|
cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
|
|
|
|
jobs:
|
|
make:
|
|
strategy:
|
|
matrix:
|
|
test_task: ["check", "test-bundler-parallel", "test-bundled-gems"]
|
|
os:
|
|
- ubuntu-20.04
|
|
# - ubuntu-18.04
|
|
configure: ["", "cppflags=-DRUBY_DEBUG"]
|
|
include:
|
|
- test_task: "check"
|
|
os: ubuntu-20.04
|
|
configure: "--host=i686-$OSTYPE"
|
|
- test_task: "test-all TESTS=--repeat-count=2"
|
|
os: ubuntu-20.04
|
|
configure: ""
|
|
fail-fast: false
|
|
env:
|
|
GITPULLOPTIONS: --no-tags origin ${{github.ref}}
|
|
RUBY_DEBUG: ci
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- run: mkdir build
|
|
working-directory:
|
|
- name: Set ENV
|
|
env:
|
|
configure: ${{matrix.configure}}
|
|
run: |
|
|
echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV
|
|
arch=`echo " $configure" | sed '/.* --host=/!d;s///;s/[- ].*//'`
|
|
echo "SETARCH=${arch:+setarch $arch}" >> $GITHUB_ENV
|
|
- name: Install libraries
|
|
run: |
|
|
set -x
|
|
arch="${SETARCH##* }"
|
|
arch=${arch:+:${arch/i[3-6]86/i386}}
|
|
${arch:+sudo dpkg --add-architecture ${arch#:}}
|
|
sudo apt-get update -q || :
|
|
sudo apt-get install --no-install-recommends -q -y \
|
|
${arch:+cross}build-essential${arch/:/-} \
|
|
libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \
|
|
zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} \
|
|
bison autoconf ruby
|
|
sudo apt-get install -q -y pkg-config${arch} || :
|
|
- name: git config
|
|
run: |
|
|
git config --global advice.detachedHead 0
|
|
git config --global init.defaultBranch garbage
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
path: src
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: src/.downloaded-cache
|
|
key: downloaded-cache
|
|
- name: Fixed world writable dirs
|
|
run: |
|
|
chmod -v go-w $HOME $HOME/.config
|
|
sudo chmod -R go-w /usr/share
|
|
sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || :
|
|
- run: ./autogen.sh
|
|
working-directory: src
|
|
- name: Run configure
|
|
env:
|
|
arch: ${{matrix.arch}}
|
|
run: >-
|
|
$SETARCH ../src/configure -C --disable-install-doc ${{ matrix.configure }}
|
|
${arch:+--target=$arch-$OSTYPE}
|
|
- run: $SETARCH make incs
|
|
- run: $SETARCH make
|
|
- run: $SETARCH make leaked-globals
|
|
if: ${{ matrix.test_task == 'check' }}
|
|
- run: $SETARCH make prepare-gems
|
|
if: ${{ matrix.test_task == 'check' }}
|
|
- name: Create dummy files in build dir
|
|
run: |
|
|
$SETARCH ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}'
|
|
if: ${{ matrix.test_task == 'check' }}
|
|
- name: make ${{ matrix.test_task }}
|
|
run: |
|
|
$SETARCH make -s ${{ matrix.test_task }} ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`}
|
|
timeout-minutes: 40
|
|
env:
|
|
RUBY_TESTOPTS: "-q --tty=no"
|
|
TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }}
|
|
TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
|
|
- name: make skipped tests
|
|
run: |
|
|
$SETARCH make -s test-all TESTS=`echo "$TESTS" | sed 's| |$/ -n/|g;s|^|-n/|;s|$|$$/|'`
|
|
env:
|
|
GNUMAKEFLAGS: ""
|
|
RUBY_TESTOPTS: "-v --tty=no"
|
|
TESTS: ${{ matrix.skipped_tests }}
|
|
if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }}
|
|
- uses: k0kubun/action-slack@v2.0.0
|
|
with:
|
|
payload: |
|
|
{
|
|
"ci": "GitHub Actions",
|
|
"env": "${{ matrix.os }} / ${{ matrix.test_task }}${{ matrix.configure }}",
|
|
"url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
|
|
"commit": "${{ github.sha }}",
|
|
"branch": "${{ github.ref }}".split('/').reverse()[0]
|
|
}
|
|
env:
|
|
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
|
|
if: ${{ failure() && github.event_name == 'push' }}
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: build
|