Skip to content

Commit 34630dc

Browse files
committed
Replace check for dependabot PRs with check for dependency constraint changes
1 parent 7596d47 commit 34630dc

2 files changed

Lines changed: 44 additions & 13 deletions

File tree

.github/workflows/04_cron_release.yml

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ jobs:
1717
with:
1818
fetch-depth: 0 # Fetch all history for tags and commits
1919

20+
- name: Setup Just
21+
uses: extractions/setup-just@f8a3cce218d9f83db3a2ecd90e41ac3de6cdfd9b
22+
23+
- name: Setup uv
24+
uses: citizensadvice/python-uv-setup-action@dac93858ee327eb09052711b17803ecdfa4da10b
25+
with:
26+
python_version: 3.13
27+
2028
- name: Check if release PR is needed
2129
id: check
2230
run: |
@@ -38,26 +46,20 @@ jobs:
3846
3947
echo "Days since last release: $days_since_release"
4048
41-
# Check if there are dependabot commits since the last tag
42-
dependabot_commits=$(git log "$latest_tag"..HEAD --author="dependabot\[bot\]" --oneline)
43-
dependabot_count=$(echo "$dependabot_commits" | grep -c . || echo "0")
44-
45-
echo "Dependabot commits since last tag: $dependabot_count"
46-
if [ "$dependabot_count" -gt 0 ]; then
47-
echo "Dependabot commits:"
48-
echo "$dependabot_commits"
49-
fi
49+
# Check if main dependencies have changed using the Justfile command
50+
# This command outputs "true" or "false"
51+
deps_changed=$(just ci-check-deps-changed "$latest_tag")
5052
5153
# Cooldown period: 4 days
5254
cooldown_days=4
5355
54-
if [ "$dependabot_count" -gt 0 ] && [ "$days_since_release" -ge "$cooldown_days" ]; then
56+
if [ "$deps_changed" = "true" ] && [ "$days_since_release" -ge "$cooldown_days" ]; then
5557
echo "should_create_pr=true" >> $GITHUB_OUTPUT
56-
echo "Release conditions met: dependabot updates exist and cooldown period passed"
58+
echo "Release conditions met: dependencies changed and cooldown period passed"
5759
else
5860
echo "should_create_pr=false" >> $GITHUB_OUTPUT
59-
if [ "$dependabot_count" -eq 0 ]; then
60-
echo "No dependabot commits since last release"
61+
if [ "$deps_changed" = "false" ]; then
62+
echo "No dependency changes since last release"
6163
else
6264
echo "Cooldown period not met (need $cooldown_days days, only $days_since_release passed)"
6365
fi

Justfile

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,35 @@ _create_draft_release:
6060
get-version:
6161
@uv version --short
6262

63+
# CI-only: Check if main dependencies have changed since a git ref (e.g., tag)
64+
# Outputs "true" if dependencies changed, "false" if no changes. Always exits 0.
65+
[group("release")]
66+
ci-check-deps-changed ref:
67+
#!/usr/bin/env bash
68+
set -euo pipefail
69+
70+
# Create a temporary directory and ensure cleanup
71+
tmpdir=$(mktemp -d)
72+
trap 'rm -rf "$tmpdir"' EXIT
73+
74+
# Extract [project.dependencies] section from the ref version
75+
git show "{{ ref }}:pyproject.toml" > "$tmpdir/pyproject.old.toml" || exit 1
76+
# Extract the dependencies array (everything between 'dependencies = [' and the closing ']')
77+
awk '/^dependencies = \[/,/^\]/' "$tmpdir/pyproject.old.toml" | sort > "$tmpdir/deps.old"
78+
79+
# Extract [project.dependencies] section from current HEAD
80+
awk '/^dependencies = \[/,/^\]/' pyproject.toml | sort > "$tmpdir/deps.new"
81+
82+
# Compare the dependency constraint lists
83+
if ! diff -q "$tmpdir/deps.old" "$tmpdir/deps.new" > /dev/null 2>&1; then
84+
echo "Dependency constraints have changed since {{ ref }}:" >&2
85+
diff "$tmpdir/deps.old" "$tmpdir/deps.new" >&2 || true
86+
echo "true"
87+
else
88+
echo "No changes to dependency constraints since {{ ref }}" >&2
89+
echo "false"
90+
fi
91+
6392
# CI-only: Configure git for automated commits
6493
[group("release")]
6594
ci-configure-git:

0 commit comments

Comments
 (0)