-
Notifications
You must be signed in to change notification settings - Fork 2
99 lines (85 loc) · 2.88 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name: CI
on:
push:
branches:
- 'master'
tags:
- 'v[0-9]+.[0-9]+.[0-9]+*'
pull_request:
jobs:
test:
strategy:
fail-fast: false
matrix:
# All the (nominally) supported Ruby versions
ruby: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Run tests
run: bundle exec rspec
code-coverage:
needs: test
# PRs from forks and Dependabot don't have access to the secrets
# needed to upload the coverage report to Code Climate. Run this
# job only if the trigger is a push or a PR from a maintainer.
#
# Test for success() in the condition to ensure the job runs only
# if the test job succeeded. Without it, this might run if test
# failed but the condition otherwise passed.
if: >
success() &&
github.actor != 'dependabot[bot]' &&
(github.event_name == 'push' ||
(github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Generate and upload coverage report Code Climate
uses: paambaati/codeclimate-action@v5
with:
coverageCommand: bundle exec rspec
env:
CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
publish:
needs: test
# Publish the gem only on push of a correctly formatted tag that
# passed the tests. As only somebody who's trusted can push a tag,
# secrets are available.
#
# Test for success() in the condition to ensure the job runs only
# if the test job succeeded. Without it, this might run if test
# failed but the condition otherwise passed.
if: success() && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Build gem and publish to RubyGems
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
rm -f sinject-*.gem
gem build sinject.gemspec
gem push sinject-*.gem
env:
# CI_VERSION is read by gemspec to set the gem's version to
# that specified by the tag.
CI_VERSION: ${{ github.ref_name }}
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"