1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/.github/workflows/macos.yml
Takashi Kokubun fd20b32130
Make GitHub Actions Slack notification consistent
with Travis, rather than AppVeyor.

Formerly it was made similar to AppVeyor to provide some normal set of
CI failure notification. But for some reason people preferred a shorter
variant and introduced a1d606c079 and
d8d8015b93.

Instead of AppVeyor format, this commit chose Travis-like format to achieve
consistency and to include usual CI-failure information, while keeping
it one-liner for people who prefer short notifications.

Note that this shrinks the 40-char sha to 10-char, using the new feature
of k0kubun/action-slack@v2.0.0:
1c88a05dac
2019-08-22 23:10:55 +09:00

73 lines
3.3 KiB
YAML

name: macos
on:
push:
branches:
- master
pull_request:
branches:
- '*'
jobs:
latest:
runs-on: macos-latest
strategy:
matrix:
test_task: [ "check", "test-bundler", "test-bundled-gems" ]
fail-fast: false
steps:
- name: Disable Firewall
run: |
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
- name: Install libraries
run: |
brew update || { sleep 5 && brew update; } || { sleep 60 && brew update; }
brew install gdbm gmp libffi openssl@1.1 zlib autoconf automake libtool readline
# Not using official actions/checkout because it's unstable and sometimes doesn't work for a fork.
- name: Checkout ruby/ruby
run: git clone --depth=50 https://github.com/ruby/ruby . && git reset --hard "$GITHUB_SHA"
env:
GITHUB_SHA: ${{ github.sha }}
if: github.event_name == 'push'
- name: Checkout a pull request
run: git clone --depth=50 "--branch=$GITHUB_BRANCH" "https://github.com/${GITHUB_REPO}" . && git reset --hard "$GITHUB_REV"
env:
GITHUB_REV: ${{ github.event.pull_request.head.sha }}
GITHUB_BRANCH: ${{ github.event.pull_request.head.ref }}
GITHUB_REPO: ${{ github.event.pull_request.head.repo.full_name }}
if: github.event_name == 'pull_request'
- name: Set ENV
run: |
echo '##[set-env name=JOBS]'-j$((1 + $(sysctl -n hw.activecpu)))
- run: autoconf
- name: configure
run: ./configure -C --disable-install-doc --with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline)
- run: make $JOBS
- name: Tests
run: make -s ${{ matrix.test_task }}
env:
TESTOPTS: "$JOBS -q --tty=no"
MSPECOPT: "-ff" # not using `-j` because sometimes `mspec -j` silently dies
if: matrix.test_task != 'test-bundled-gems' && !contains(github.event.head_commit.message, '[ci skip]')
# test-bundled-gems is separated for marking `continue-on-error` because it randomly fails.
- name: Tests
run: make -s ${{ matrix.test_task }}
env:
TESTOPTS: "$JOBS -q --tty=no"
continue-on-error: true
if: matrix.test_task == 'test-bundled-gems' && !contains(github.event.head_commit.message, '[ci skip]')
- name: Leaked Globals
run: make -s leaked-globals
- uses: k0kubun/action-slack@v2.0.0
with:
payload: |
{
"attachments": [{
"text": "${{ job.status}}: <https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks|${{ github.workflow }} / ${{ matrix.test_task }}> " +
"(<https://github.com/${{ github.repository }}/commit/${{ github.sha }}|" + "${{ github.sha }}".substring(0, 10) + ">) " +
"of ${{ github.repository }}@" + "${{ github.ref }}".split('/').reverse()[0] + " by ${{ github.event.head_commit.committer.name }}",
"color": "danger"
}]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: failure() && github.event_name == 'push'