-
Notifications
You must be signed in to change notification settings - Fork 8
157 lines (117 loc) · 4.03 KB
/
ci.yml
File metadata and controls
157 lines (117 loc) · 4.03 KB
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
name: CI
on: pull_request
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
permissions: {}
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out source code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install Ruby and gems
uses: ./.github/actions/setup-ruby
with:
bundle-install: default lint
- name: Run RuboCop
run: bin/rake rubocop
version-matrix:
name: Generate version matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.version-matrix.outputs.matrix }}
steps:
- name: Check out source code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install Ruby
uses: ./.github/actions/setup-ruby
- name: Generate version matrix
id: version-matrix
run: bin/version-matrix
test:
needs: version-matrix
strategy:
matrix: ${{ fromJSON(needs.version-matrix.outputs.matrix) }}
max-parallel: 8
name: Ruby ${{ matrix.ruby }} | PG ${{ matrix.pg }} | Active Record ${{ matrix.activerecord }}
runs-on: ubuntu-latest
permissions:
id-token: write
env:
ACTIVERECORD_VERSION: ${{ matrix.activerecord }}
PG_VERSION: ${{ matrix.pg }}
steps:
- name: Check out source code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install Ruby
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby }}
- name: Update Gemfile.lock
run: bundle lock --update activerecord pg railties
- name: Install gems
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby }}
bundle-install: default test
- name: Run unit tests
run: bin/rake test:unit
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
role-session-name: pg-aws_rds_iam-ci-${{ github.run_id }}-${{ github.run_attempt }}-${{ strategy.job-index }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Run acceptance tests
run: bin/rake test:acceptance
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
SECURITY_GROUP_ID: ${{ secrets.SECURITY_GROUP_ID }}
- name: Upload test coverage
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: coverage-ruby-${{ matrix.ruby }}-pg-${{ matrix.pg }}-activerecord-${{ matrix.activerecord }}
path: coverage/.resultset.json
include-hidden-files: true
test-results:
name: Check test results
if: always()
needs:
- version-matrix
- test
runs-on: ubuntu-latest
steps:
- name: Check test results
run: test "${{ needs.test.result }}" = "success"
- name: Check out source code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install Ruby and gems
uses: ./.github/actions/setup-ruby
with:
bundle-install: default coverage
- name: Download test coverage
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: coverage-*
- name: Collate test coverage
run: bin/rake coverage:collate
- name: Upload test coverage
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: coverage
path: coverage
- name: Report test coverage
uses: k1LoW/octocov-action@73d561f65d59e66899ed5c87e4621a913b5d5c20 # v1.5.0