Repository navigation
85 lines (80 loc) · 2.38 KB
/
Copy pathci.yml
File metadata and controls
85 lines (80 loc) · 2.38 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
name: CI
on:
workflow_call:
pull_request:
merge_group:
branches:
- main
push:
branches:
- main
permissions: {}
defaults:
run:
shell: bash
jobs:
test:
name: test (${{ matrix.series }})
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
strategy:
fail-fast: false
matrix:
include:
- series: "3.3"
ruby-version: "3.3.12"
- series: "3.4"
ruby-version: "3.4.10"
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v6
with:
go-version: "1.25.14"
cache: false
- run: bash .github/scripts/actionlint.sh
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
with:
node-version-file: .node-version
cache: npm
- uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
distribution: temurin
java-version: "21.0.12+101.0.LTS"
- uses: ruby/setup-ruby@14594264cd68ce8a2345dd349bc3d138a4ef85c8 # v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- run: npm ci
- name: Run SDK quality checks
run: bundle exec rake quality
- name: Preserve required coverage reports
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage-ruby-${{ matrix.ruby-version }}
path: reports/coverage/
if-no-files-found: error
- name: Preserve failing quality reports
if: ${{ failure() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: quality-failures-ruby-${{ matrix.ruby-version }}
path: |
reports/property-failures/*.json
reports/defects/
if-no-files-found: ignore
quality:
name: Quality Gate
if: ${{ always() }}
needs: [test]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Require every mandatory job to succeed
env:
RESULTS: ${{ toJSON(needs.*.result) }}
run: jq -e 'length == 1 and all(. == "success")' <<< "$RESULTS"