-
-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (114 loc) · 3.26 KB
/
pull_request.yml
File metadata and controls
136 lines (114 loc) · 3.26 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
name: Pull Request
on:
workflow_dispatch:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_LOG: info
RUST_BACKTRACE: 1
jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
- name: Install toolchain
uses: moonrepo/setup-rust@v1
with:
components: rustfmt
bins: taplo-cli
cache-base: main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run cargo fmt
run: cargo fmt --all --check
- name: Run taplo format
run: taplo format --check
actionlint:
name: Lint GitHub Actions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download actionlint
id: get_actionlint
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
shell: bash
- name: Check workflow files
run: ${{ steps.get_actionlint.outputs.executable }} -color
shell: bash
lint:
name: Lint Project
runs-on: ubuntu-latest
steps:
- name: Checkout PR Branch
uses: actions/checkout@v4
with:
submodules: true
- name: Install toolchain
uses: moonrepo/setup-rust@v1
with:
components: clippy
cache-base: main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run clippy
run: cargo clippy --all-targets --all-features --fix -- -D warnings
- name: Check for changes
run: |
if [[ $(git status --porcelain) ]]; then
git status
git diff
exit 1
fi
test:
name: Test (Postgres ${{ matrix.pg }})
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
pg: [15, 16, 17]
steps:
- name: Free Disk Space
uses: jlumbroso/free-disk-space@main
with:
android: true
dotnet: true
haskell: true
large-packages: false
- name: Start PostgreSQL with logical replication
run: |
docker run -d \
--name postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=testdb \
-p 5432:5432 \
--health-cmd "pg_isready -U postgres -d testdb" \
--health-interval 2s \
--health-timeout 5s \
--health-retries 5 \
postgres:${{ matrix.pg }} \
postgres \
-c wal_level=logical \
-c max_wal_senders=10 \
-c max_replication_slots=10
# Wait for postgres to be ready
until docker exec postgres pg_isready -U postgres -d testdb; do
echo "Waiting for postgres..."
sleep 1
done
- name: Checkout PR branch
uses: actions/checkout@v4
with:
submodules: true
- name: Install toolchain
uses: moonrepo/setup-rust@v1
with:
cache-base: main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run tests
run: cargo test --all-features