@@ -18,7 +18,7 @@ permissions:
1818 contents : read
1919
2020jobs :
21- checks :
21+ lint :
2222 runs-on : ubuntu-latest
2323
2424 steps :
@@ -42,14 +42,102 @@ jobs:
4242 - name : Install dependencies
4343 run : just sync
4444
45- - name : Run type checks
46- run : just type-check
47-
4845 - name : Run linter
4946 run : just lint-check
5047
48+ format :
49+ runs-on : ubuntu-latest
50+
51+ steps :
52+ - name : Checkout
53+ uses : actions/checkout@v6
54+
55+ - name : Set up Python
56+ uses : actions/setup-python@v6
57+ with :
58+ python-version-file : .python-version
59+
60+ - name : Install uv
61+ uses : astral-sh/setup-uv@v8.2.0
62+ with :
63+ version : " latest"
64+ enable-cache : true
65+
66+ - name : Install just
67+ uses : extractions/setup-just@v4
68+
69+ - name : Install dependencies
70+ run : just sync
71+
5172 - name : Run formatter
5273 run : just format-check
5374
75+ type-check :
76+ runs-on : ubuntu-latest
77+
78+ steps :
79+ - name : Checkout
80+ uses : actions/checkout@v6
81+
82+ - name : Set up Python
83+ uses : actions/setup-python@v6
84+ with :
85+ python-version-file : .python-version
86+
87+ - name : Install uv
88+ uses : astral-sh/setup-uv@v8.2.0
89+ with :
90+ version : " latest"
91+ enable-cache : true
92+
93+ - name : Install just
94+ uses : extractions/setup-just@v4
95+
96+ - name : Install dependencies
97+ run : just sync
98+
99+ - name : Run type checks
100+ run : just type-check
101+
102+ test :
103+ runs-on : ubuntu-latest
104+
105+ steps :
106+ - name : Checkout
107+ uses : actions/checkout@v6
108+
109+ - name : Set up Python
110+ uses : actions/setup-python@v6
111+ with :
112+ python-version-file : .python-version
113+
114+ - name : Install uv
115+ uses : astral-sh/setup-uv@v8.2.0
116+ with :
117+ version : " latest"
118+ enable-cache : true
119+
120+ - name : Install just
121+ uses : extractions/setup-just@v4
122+
123+ - name : Install dependencies
124+ run : just sync
125+
54126 - name : Run tests
55127 run : just test
128+
129+ checks :
130+ if : always()
131+ needs : [lint, format, type-check, test]
132+ runs-on : ubuntu-latest
133+
134+ steps :
135+ - name : Verify all checks passed
136+ run : |
137+ if [[ "${{ needs.lint.result }}" != "success" || \
138+ "${{ needs.format.result }}" != "success" || \
139+ "${{ needs['type-check'].result }}" != "success" || \
140+ "${{ needs.test.result }}" != "success" ]]; then
141+ echo "One or more checks failed"
142+ exit 1
143+ fi
0 commit comments