-
Notifications
You must be signed in to change notification settings - Fork 0
66 lines (63 loc) · 2.52 KB
/
Copy pathci.yml
File metadata and controls
66 lines (63 loc) · 2.52 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
# The gate set, in CI (NFR-17). Two jobs, and the split is asserted rather than maintained:
# test/gates/ci_workflow_test.rb reads `rake gates:list` and fails if any gate appears in no
# job. `rake gates:versions` asserts the matrix below equals the `ruby matrix` line in VERSIONS.
name: CI
on:
push:
branches: [main, mvp]
pull_request:
jobs:
# Interpreter-independent by construction -- they read text, signatures and build output --
# so running them four times would buy nothing.
gates:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # gates:sig_diff needs tags and history
- uses: ruby/setup-ruby@v1
with:
ruby-version: ".ruby-version"
# There is no committed lockfile to cache against; each row resolves for itself.
bundler-cache: false
- run: bundle install
- run: bundle exec rake rubocop
- run: bundle exec rake cops:test
- run: bundle exec rake rbs:validate
- run: bundle exec rake steep
- run: bundle exec rake test:gates
- run: bundle exec rake gates:serde_boundary
- run: bundle exec rake gates:cause_walk
- run: bundle exec rake gates:bounded_map
- run: bundle exec rake gates:seam_names
- run: bundle exec rake gates:ledger_audit
- run: bundle exec rake gates:spdx_rbs
- run: bundle exec rake gates:sole_parse
- run: bundle exec rake gates:rbs_surface
- run: bundle exec rake gates:sig_diff
- run: bundle exec rake gates:surface_snapshot
- run: bundle exec rake gates:versions
- run: bundle exec rake gates:reproducible
- run: bundle exec rake yard
- run: bundle exec rake bundler_audit
# NFR-10: the real suite on every supported Ruby. The 3.2 row is where a method present on the
# developer's 4.0 and absent on the declared floor produces a NoMethodError that
# TargetRubyVersion cannot see; the 4.0 row is where the bundled-gem trap fires.
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: ["3.2", "3.3", "3.4", "4.0"]
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: false
- run: bundle install
- run: bundle exec rake test:gems
- run: bundle exec rake gates:gemspec_audit
- run: bundle exec rake gates:require_allowlist
- run: bundle exec rake gates:clean_bundle
- run: bundle exec rake gates:single_instance