Merge pull request #47 from sudolulo/chore/simplify-lockfile-ci
chore: replace lockfile auto-update with uv lock --check
This commit is contained in:
Executable
+7
@@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if git diff --cached --name-only | grep -q "^pyproject\.toml$"; then
|
||||||
|
uv lock
|
||||||
|
git add uv.lock
|
||||||
|
fi
|
||||||
@@ -21,6 +21,9 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
run: uv python install 3.13
|
run: uv python install 3.13
|
||||||
|
|
||||||
|
- name: Check lockfile is up to date
|
||||||
|
run: uv lock --check
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: uv sync --extra cpu
|
run: uv sync --extra cpu
|
||||||
|
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
# .github/workflows/update-lockfile.yml
|
|
||||||
name: Update lockfile
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- '**'
|
|
||||||
- '!main'
|
|
||||||
paths:
|
|
||||||
- 'pyproject.toml'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-lockfile:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
||||||
|
|
||||||
- name: Set up Python
|
|
||||||
run: uv python install 3.13
|
|
||||||
|
|
||||||
- name: Regenerate lockfile
|
|
||||||
run: uv lock
|
|
||||||
|
|
||||||
- name: Check for changes
|
|
||||||
id: diff
|
|
||||||
run: |
|
|
||||||
if git diff --quiet uv.lock; then
|
|
||||||
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
||||||
else
|
|
||||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Commit and push updated lockfile
|
|
||||||
if: steps.diff.outputs.changed == 'true'
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
|
||||||
git config user.name "github-actions[bot]"
|
|
||||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
||||||
git add uv.lock
|
|
||||||
git commit -m "chore: update lockfile"
|
|
||||||
|
|
||||||
if [ "$GITHUB_REF_NAME" = "dev" ]; then
|
|
||||||
# dev is protected — open a PR rather than pushing directly
|
|
||||||
BRANCH="chore/lockfile-$(git rev-parse --short HEAD)"
|
|
||||||
git checkout -b "$BRANCH"
|
|
||||||
git push origin "$BRANCH"
|
|
||||||
gh pr create \
|
|
||||||
--base dev \
|
|
||||||
--head "$BRANCH" \
|
|
||||||
--title "chore: update lockfile" \
|
|
||||||
--body "Automated lockfile update triggered by a \`pyproject.toml\` change on \`dev\`."
|
|
||||||
else
|
|
||||||
git push
|
|
||||||
fi
|
|
||||||
@@ -17,8 +17,11 @@ git clone https://github.com/sudolulo/winnow.git
|
|||||||
cd winnow
|
cd winnow
|
||||||
git checkout dev
|
git checkout dev
|
||||||
uv sync
|
uv sync
|
||||||
|
git config core.hooksPath .githooks
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The last line activates the project's git hooks. The pre-commit hook automatically runs `uv lock` and stages the result whenever `pyproject.toml` is part of a commit, keeping the lockfile in sync without any extra steps.
|
||||||
|
|
||||||
## Running Tests and Lint
|
## Running Tests and Lint
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user