Skip to content

Commit 56aa981

Browse files
authored
deploy: fix + check requirements-api.txt is up to date (#1001)
* deploy: fix + check requirements-api.txt is up to date * use uv export instead of uv pip compile
1 parent c1a16e5 commit 56aa981

4 files changed

Lines changed: 895 additions & 9 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Check Requirements Up-to-Date
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "pyproject.toml"
7+
- "uv.lock"
8+
- "requirements/requirements-api.txt"
9+
- ".github/workflows/check-requirements.yml"
10+
push:
11+
branches: [master]
12+
paths:
13+
- "pyproject.toml"
14+
- "uv.lock"
15+
- "requirements/requirements-api.txt"
16+
17+
permissions:
18+
contents: read
19+
20+
jobs:
21+
check-requirements:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
26+
27+
- name: Install uv
28+
uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3.2.4
29+
with:
30+
version: "latest"
31+
32+
- name: Set up Python
33+
run: uv python install 3.12
34+
35+
- name: Generate requirements file from lock
36+
run: |
37+
uv export --extra api --no-hashes --format requirements-txt > requirements/requirements-api-check.txt
38+
39+
- name: Check if requirements file is up-to-date
40+
run: |
41+
if ! diff -u requirements/requirements-api.txt requirements/requirements-api-check.txt; then
42+
echo "❌ Error: requirements/requirements-api.txt is out of date!"
43+
echo ""
44+
echo "Please regenerate it by running:"
45+
echo " uv export --extra api --no-hashes --format requirements-txt > requirements/requirements-api.txt"
46+
echo ""
47+
echo "Then commit the updated file."
48+
exit 1
49+
else
50+
echo "✅ requirements/requirements-api.txt is up-to-date"
51+
fi

.github/workflows/deploy.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@ jobs:
2828
tar -xvf clever-tools-${CC_VERSION}_linux.tar.gz
2929
PATH=${PATH}:$(pwd)/clever-tools-${CC_VERSION}_linux
3030
31-
- name: Install uv
32-
uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3.2.4
33-
with:
34-
version: "latest"
35-
36-
- name: Set up Python
37-
run: uv python install 3.12
38-
3931
- name: Login to Clever Cloud
4032
env:
4133
CLEVER_TOKEN: ${{ secrets.CLEVER_TOKEN }}
@@ -46,7 +38,6 @@ jobs:
4638
CLEVER_APP_ID: ${{ secrets.BE_CLEVER_APP_ID_PROD }}
4739
APP_NAME: cc_api_prod
4840
run: |
49-
uv pip compile pyproject.toml --extra api --output-file requirements/requirements-api.txt
5041
./clever-tools-latest_linux/clever link $CLEVER_APP_ID
5142
./clever-tools-latest_linux/clever deploy -f
5243

requirements/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Requirements Files
2+
3+
This directory contains pre-compiled requirements files for different use cases.
4+
5+
## requirements-api.txt
6+
7+
This file contains all dependencies needed to run the CodeCarbon API server (carbonserver).
8+
9+
### Updating the file
10+
11+
When you modify dependencies in `pyproject.toml` or when `uv.lock` changes (especially those under the `[project.optional-dependencies.api]` section), you **must** regenerate this file:
12+
13+
```bash
14+
uv export --extra api --no-hashes --format requirements-txt > requirements/requirements-api.txt
15+
```
16+
17+
Then commit the updated file.
18+
19+
**Note:** This uses `uv.lock` to ensure fully reproducible builds with the exact same versions that are tested in CI.
20+
21+
### CI Check
22+
23+
A GitHub Actions workflow (`.github/workflows/check-requirements.yml`) automatically verifies that this file is up-to-date on every pull request that modifies `pyproject.toml`. If the check fails, simply run the command above and commit the changes.

0 commit comments

Comments
 (0)