-
Notifications
You must be signed in to change notification settings - Fork 1.4k
165 lines (154 loc) · 5.45 KB
/
pr.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
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
158
159
160
161
162
163
164
165
name: PR checks
on:
pull_request:
branches:
- main
- '**'
jobs:
# GitHub only provides a way to do path filtering at the workflow level rather than the job level.
# This allows us to selectively run jobs based on changed paths.
paths-filter:
name: Get changed paths
runs-on: ubuntu-latest
outputs:
outside-docs: ${{ steps.changes.outputs.outside-docs }}
docs: ${{ steps.changes.outputs.docs }}
steps:
- name: Get changed paths
id: changes
uses: dorny/paths-filter@v3
with:
predicate-quantifier: 'every'
filters: |
outside-docs:
- '!docs/**'
docs:
- 'docs/**'
deploy-docs-preview:
name: Deploy preview of docs
needs: paths-filter
if: needs.paths-filter.outputs.docs == 'true'
runs-on: depot-ubuntu-22.04-small
environment:
name: Preview
url: ${{ steps.deploy.outputs.url }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
- name: Install vercel
run: npm install -g vercel
- name: Deploy
id: deploy
run: echo "url=$(vercel deploy --token ${{ secrets.VERCEL_TOKEN }})" >> $GITHUB_OUTPUT
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_DOCS_PROJECT_ID }}
python-tests:
name: Python tests
needs: paths-filter
if: needs.paths-filter.outputs.outside-docs == 'true'
uses: ./.github/workflows/_python-tests.yml
with:
property_testing_preset: 'fast'
python-vulnerability-scan:
name: Python vulnerability scan
needs: paths-filter
if: needs.paths-filter.outputs.outside-docs == 'true'
uses: ./.github/workflows/_python-vulnerability-scan.yml
javascript-client-tests:
name: JavaScript client tests
needs: paths-filter
if: needs.paths-filter.outputs.outside-docs == 'true'
uses: ./.github/workflows/_javascript-client-tests.yml
rust-tests:
name: Rust tests
needs: paths-filter
if: needs.paths-filter.outputs.outside-docs == 'true'
uses: ./.github/workflows/_rust-tests.yml
go-tests:
name: Go tests
needs: paths-filter
if: needs.paths-filter.outputs.outside-docs == 'true'
uses: ./.github/workflows/_go-tests.yml
check-title:
name: Check PR Title
runs-on: ubuntu-latest
steps:
- name: Check PR Title
uses: Slashgear/[email protected]
with:
regexp: '\[(ENH|BUG|DOC|TST|BLD|PERF|TYP|CLN|CHORE|RELEASE)\].*'
helpMessage: "Please tag your PR title. See https://docs.trychroma.com/contributing#contributing-code-and-ideas. You must push new code to this PR for this check to run again."
- name: Comment explaining failure
if: failure()
uses: actions/github-script@v6
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Please tag your PR title with one of: \\[ENH | BUG | DOC | TST | BLD | PERF | TYP | CLN | CHORE\\]. See https://docs.trychroma.com/contributing#contributing-code-and-ideas'
})
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/python
with:
python-version: "3.12"
- name: Setup Rust
uses: ./.github/actions/rust
- name: Run pre-commit
shell: bash
run: |
pre-commit run --all-files trailing-whitespace
pre-commit run --all-files mixed-line-ending
pre-commit run --all-files end-of-file-fixer
pre-commit run --all-files requirements-txt-fixer
pre-commit run --all-files check-xml
pre-commit run --all-files check-merge-conflict
pre-commit run --all-files check-case-conflict
pre-commit run --all-files check-docstring-first
pre-commit run --all-files black
pre-commit run --all-files flake8
pre-commit run --all-files prettier
pre-commit run --all-files check-yaml
continue-on-error: true
- name: Cargo fmt check
shell: bash
run: cargo fmt -- --check
continue-on-error: true
- name: Clippy
run: cargo clippy --all-targets --all-features --keep-going -- -D warnings
# This job exists for our branch protection rule.
# We want to require status checks to pass before merging, but the set of
# checks that run for any given PR is dynamic based on the files changed.
# When creating a branch protection rule, you have to specify a static list
# of checks.
# So since this job always runs, we can specify it in the branch protection rule.
all-required-pr-checks-passed:
if: always()
needs:
- python-tests
- python-vulnerability-scan
- javascript-client-tests
- rust-tests
- go-tests
- check-title
- lint
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
allowed-skips: python-tests,python-vulnerability-scan,javascript-client-tests,rust-tests,go-tests