mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
## Summary
- Fixed all `update-*.yml` workflows that were creating duplicate PRs
every week
## Problem
The update workflows (libarchive, zstd, cares, etc.) were using `${{
github.run_number }}` in the branch name, e.g.:
```yaml
branch: deps/update-libarchive-${{ github.run_number }}
```
This caused a new unique branch to be created on every workflow run, so
the `peter-evans/create-pull-request` action couldn't detect existing
PRs and would create duplicates.
**Evidence:** There are currently 8+ open duplicate PRs for libarchive
alone:
- #26432 deps: update libarchive to v3.8.5 (deps/update-libarchive-56)
- #26209 deps: update libarchive to v3.8.5 (deps/update-libarchive-55)
- #25955 deps: update libarchive to v3.8.5 (deps/update-libarchive-54)
- etc.
## Solution
Changed all workflows to use static branch names, e.g.:
```yaml
branch: deps/update-libarchive
```
This allows the action to:
1. Detect if an existing branch/PR already exists
2. Update the existing PR with new changes instead of creating a new one
3. Properly use `delete-branch: true` when the PR is merged
## Files Changed
- `.github/workflows/update-cares.yml`
- `.github/workflows/update-hdrhistogram.yml`
- `.github/workflows/update-highway.yml`
- `.github/workflows/update-libarchive.yml`
- `.github/workflows/update-libdeflate.yml`
- `.github/workflows/update-lolhtml.yml`
- `.github/workflows/update-lshpack.yml`
- `.github/workflows/update-root-certs.yml`
- `.github/workflows/update-sqlite3.yml`
- `.github/workflows/update-vendor.yml`
- `.github/workflows/update-zstd.yml`
## Test plan
- [x] Verified the change is syntactically correct
- [ ] Wait for next scheduled run of any workflow to verify it updates
existing PR instead of creating a new one
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
95 lines
3.9 KiB
YAML
95 lines
3.9 KiB
YAML
name: Update SQLite3
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 6 * * 0" # Run weekly
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
check-update:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Check SQLite version
|
|
id: check-version
|
|
run: |
|
|
set -euo pipefail
|
|
|
|
# Get current version from the header file using SQLITE_VERSION_NUMBER
|
|
CURRENT_VERSION_NUM=$(grep -o '#define SQLITE_VERSION_NUMBER [0-9]\+' src/bun.js/bindings/sqlite/sqlite3_local.h | awk '{print $3}' | tr -d '\n\r')
|
|
if [ -z "$CURRENT_VERSION_NUM" ]; then
|
|
echo "Error: Could not find SQLITE_VERSION_NUMBER in sqlite3_local.h"
|
|
exit 1
|
|
fi
|
|
|
|
# Convert numeric version to semantic version for display
|
|
CURRENT_MAJOR=$((CURRENT_VERSION_NUM / 1000000))
|
|
CURRENT_MINOR=$((($CURRENT_VERSION_NUM / 1000) % 1000))
|
|
CURRENT_PATCH=$((CURRENT_VERSION_NUM % 1000))
|
|
CURRENT_VERSION="$CURRENT_MAJOR.$CURRENT_MINOR.$CURRENT_PATCH"
|
|
|
|
echo "current=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
|
echo "current_num=$CURRENT_VERSION_NUM" >> $GITHUB_OUTPUT
|
|
|
|
# Fetch SQLite download page
|
|
DOWNLOAD_PAGE=$(curl -sL https://sqlite.org/download.html)
|
|
if [ -z "$DOWNLOAD_PAGE" ]; then
|
|
echo "Error: Failed to fetch SQLite download page"
|
|
exit 1
|
|
fi
|
|
|
|
# Extract latest version and year from the amalgamation link
|
|
LATEST_INFO=$(echo "$DOWNLOAD_PAGE" | grep -o 'sqlite-amalgamation-[0-9]\{7\}.zip' | head -n1)
|
|
LATEST_YEAR=$(echo "$DOWNLOAD_PAGE" | grep -o '[0-9]\{4\}/sqlite-amalgamation-[0-9]\{7\}.zip' | head -n1 | cut -d'/' -f1 | tr -d '\n\r')
|
|
LATEST_VERSION_NUM=$(echo "$LATEST_INFO" | grep -o '[0-9]\{7\}' | tr -d '\n\r')
|
|
|
|
if [ -z "$LATEST_VERSION_NUM" ] || [ -z "$LATEST_YEAR" ]; then
|
|
echo "Error: Could not extract latest version info"
|
|
exit 1
|
|
fi
|
|
|
|
# Convert numeric version to semantic version for display
|
|
LATEST_MAJOR=$((10#$LATEST_VERSION_NUM / 1000000))
|
|
LATEST_MINOR=$((($LATEST_VERSION_NUM / 10000) % 100))
|
|
LATEST_PATCH=$((10#$LATEST_VERSION_NUM % 1000))
|
|
LATEST_VERSION="$LATEST_MAJOR.$LATEST_MINOR.$LATEST_PATCH"
|
|
|
|
echo "latest=$LATEST_VERSION" >> $GITHUB_OUTPUT
|
|
echo "latest_year=$LATEST_YEAR" >> $GITHUB_OUTPUT
|
|
echo "latest_num=$LATEST_VERSION_NUM" >> $GITHUB_OUTPUT
|
|
|
|
# Debug output
|
|
echo "Current version: $CURRENT_VERSION ($CURRENT_VERSION_NUM)"
|
|
echo "Latest version: $LATEST_VERSION ($LATEST_VERSION_NUM)"
|
|
|
|
- name: Update SQLite if needed
|
|
if: success() && steps.check-version.outputs.current_num < steps.check-version.outputs.latest_num
|
|
run: |
|
|
./scripts/update-sqlite-amalgamation.sh ${{ steps.check-version.outputs.latest_num }} ${{ steps.check-version.outputs.latest_year }}
|
|
|
|
- name: Create Pull Request
|
|
if: success() && steps.check-version.outputs.current_num < steps.check-version.outputs.latest_num
|
|
uses: peter-evans/create-pull-request@v7
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
add-paths: |
|
|
src/bun.js/bindings/sqlite/sqlite3.c
|
|
src/bun.js/bindings/sqlite/sqlite3_local.h
|
|
commit-message: "deps: update sqlite to ${{ steps.check-version.outputs.latest }}"
|
|
title: "deps: update sqlite to ${{ steps.check-version.outputs.latest }}"
|
|
delete-branch: true
|
|
branch: deps/update-sqlite
|
|
body: |
|
|
## What does this PR do?
|
|
|
|
Updates SQLite to version ${{ steps.check-version.outputs.latest }}
|
|
|
|
Compare: https://sqlite.org/src/vdiff?from=${{ steps.check-version.outputs.current }}&to=${{ steps.check-version.outputs.latest }}
|
|
|
|
Auto-updated by [this workflow](https://github.com/oven-sh/bun/actions/workflows/update-sqlite3.yml)
|