Skip to content

Commit 1db20ab

Browse files
authored
Merge branch 'master' into fix/issue-1833-sandbox-watch-mode
2 parents a50df99 + c24266a commit 1db20ab

193 files changed

Lines changed: 57081 additions & 4462 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/pull_request_template.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,70 @@
11
<!--
2-
Thank you for submitting a PR!
2+
Thank you for submitting a PR!
33
Please fill out all sections below to help us understand your changes.
4+
5+
PR TITLE FORMAT
6+
───────────────
7+
We use Conventional Commits: <type>(<scope>): <description>
8+
9+
If your change affects one or more ports, append a tag at the end of the
10+
PR title (outside the conventional-commit part) to indicate their status:
11+
12+
[python] / [elixir] / [php] / [rust]
13+
→ The change is ONLY relevant to that port (Node.js is NOT affected).
14+
Multiple ports can be listed: [python][elixir]
15+
16+
(python) / (elixir) / (php) / (rust)
17+
→ The change affects that port AND Node.js.
18+
Multiple ports can be listed: (python)(php)
19+
20+
Examples:
21+
fix(worker): handle stalled jobs correctly (python)(elixir)
22+
docs: update rate-limiting guide [python]
23+
feat(queue): add group priority support
24+
25+
Please check all three ports below before setting your title.
26+
-->
27+
28+
### Port Impact Checklist
29+
30+
<!--
31+
Review each port and tick every box that applies.
32+
If a port is not affected at all, leave its box unchecked.
433
-->
534

35+
- [ ] **Python** – does this change need to be ported or documented in the Python library?
36+
- [ ] **Elixir** – does this change need to be ported or documented in the Elixir library?
37+
- [ ] **PHP** – does this change need to be ported or documented in the PHP library?
38+
- [ ] **Rust** – does this change need to be ported or documented in the Rust library?
39+
640
### Why
7-
<!--
41+
42+
<!--
843
1. Why is this change necessary?
944
2. What problem does it solve or improve?
1045
3. Link to any relevant issues, if applicable.
1146
-->
47+
1248
_Enter your explanation here._
1349

1450
### How
51+
1552
<!--
1653
1. How did you implement this?
1754
2. Outline the approach or steps taken.
1855
3. List any resources or documentation that helped you.
1956
-->
57+
2058
_Enter the implementation details here._
2159

2260
### Additional Notes (Optional)
61+
2362
<!--
24-
Use this space for additional considerations:
63+
Use this space for additional considerations:
2564
- Potential side effects
26-
- Dependencies
65+
- Dependencies
2766
- Testing instructions
2867
- Anything else reviewers should know
2968
-->
69+
3070
_Any extra info here._

.github/workflows/api.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
# check out all branches
2020
fetch-depth: 0
2121
- name: Use Node.js ${{ matrix.node-version }}
22-
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
22+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
2323
with:
2424
node-version: ${{ matrix.node-version }}
2525
cache: 'yarn'

.github/workflows/codeql-analysis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242

4343
# Initializes the CodeQL tools for scanning.
4444
- name: Initialize CodeQL
45-
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
45+
uses: github/codeql-action/init@e46ed2cbd01164d986452f91f178727624ae40d7 # v4
4646
with:
4747
languages: ${{ matrix.language }}
4848
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -53,7 +53,7 @@ jobs:
5353
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5454
# If this step fails, then you should remove it and run the build manually (see below)
5555
- name: Autobuild
56-
uses: github/codeql-action/autobuild@c10b8064de6f491fea524254123dbe5e09572f13 # v4
56+
uses: github/codeql-action/autobuild@e46ed2cbd01164d986452f91f178727624ae40d7 # v4
5757

5858
# ℹ️ Command-line programs to run using the OS shell.
5959
# 📚 https://git.io/JvXDl
@@ -67,4 +67,4 @@ jobs:
6767
# make release
6868

6969
- name: Perform CodeQL Analysis
70-
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
70+
uses: github/codeql-action/analyze@e46ed2cbd01164d986452f91f178727624ae40d7 # v4

.github/workflows/elixir-test.yml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: Elixir Tests
2+
3+
on:
4+
push:
5+
branches: [master]
6+
pull_request:
7+
branches: [master, next]
8+
9+
concurrency:
10+
group: elixir-test-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
changes:
18+
runs-on: ubuntu-latest
19+
outputs:
20+
should_run: ${{ steps.filter.outputs.elixir }}
21+
steps:
22+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
23+
- uses: dorny/paths-filter@v3
24+
id: filter
25+
with:
26+
filters: |
27+
elixir:
28+
- 'elixir/**'
29+
- 'src/commands/**'
30+
- '.github/workflows/elixir-test.yml'
31+
32+
test:
33+
needs: changes
34+
runs-on: ubuntu-latest
35+
36+
name: testing elixir@${{ matrix.elixir-version }}, otp@${{ matrix.otp-version }}, redis@${{ matrix.redis-version }}
37+
38+
strategy:
39+
matrix:
40+
node-version: [lts/*]
41+
elixir-version: ['1.17']
42+
otp-version: ['27.x']
43+
redis-version: [7-alpine]
44+
45+
steps:
46+
- name: Skip when Elixir files are unchanged
47+
if: needs.changes.outputs.should_run != 'true'
48+
run: echo "No Elixir-related changes detected; skipping Elixir test steps."
49+
50+
- name: Checkout repository
51+
if: needs.changes.outputs.should_run == 'true'
52+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
53+
54+
- name: Use Node.js ${{ matrix.node-version }}
55+
if: needs.changes.outputs.should_run == 'true'
56+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
57+
with:
58+
node-version: ${{ matrix.node-version }}
59+
cache: 'yarn'
60+
61+
- name: Start Redis
62+
if: needs.changes.outputs.should_run == 'true'
63+
uses: supercharge/redis-github-action@bc274cb7238cd63a45029db04ee48c07a72609fd # 1.8.1
64+
with:
65+
redis-version: ${{ matrix.redis-version }}
66+
67+
- if: needs.changes.outputs.should_run == 'true'
68+
run: yarn install --ignore-engines --frozen-lockfile --non-interactive
69+
- if: needs.changes.outputs.should_run == 'true'
70+
run: yarn generate:raw:scripts
71+
- if: needs.changes.outputs.should_run == 'true'
72+
run: yarn copy:lua:elixir
73+
74+
- name: Set up Elixir
75+
if: needs.changes.outputs.should_run == 'true'
76+
uses: erlef/setup-beam@v1
77+
with:
78+
elixir-version: ${{ matrix.elixir-version }}
79+
otp-version: ${{ matrix.otp-version }}
80+
81+
- name: Restore dependencies cache
82+
if: needs.changes.outputs.should_run == 'true'
83+
uses: actions/cache@v5
84+
with:
85+
path: elixir/deps
86+
key: ${{ runner.os }}-mix-deps-${{ matrix.elixir-version }}-${{ matrix.otp-version }}-${{ hashFiles('elixir/mix.lock') }}
87+
restore-keys: |
88+
${{ runner.os }}-mix-deps-${{ matrix.elixir-version }}-${{ matrix.otp-version }}-
89+
90+
- name: Install Elixir dependencies
91+
if: needs.changes.outputs.should_run == 'true'
92+
working-directory: elixir
93+
run: |
94+
mix local.hex --force
95+
mix local.rebar --force
96+
mix deps.get
97+
98+
- name: Compile
99+
if: needs.changes.outputs.should_run == 'true'
100+
working-directory: elixir
101+
run: mix compile --warnings-as-errors
102+
103+
- name: Run tests
104+
if: needs.changes.outputs.should_run == 'true'
105+
working-directory: elixir
106+
run: mix test --include integration
107+
108+
- name: Check formatting
109+
if: needs.changes.outputs.should_run == 'true'
110+
working-directory: elixir
111+
run: mix format --check-formatted
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: OSV-Scanner Scan (default branch + schedule)
2+
3+
on:
4+
schedule:
5+
- cron: '30 12 * * 1'
6+
push:
7+
branches: [master]
8+
9+
permissions:
10+
actions: read
11+
security-events: write
12+
contents: read
13+
14+
jobs:
15+
scan-scheduled:
16+
uses: 'google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.8'
17+
with:
18+
# fail the build only on the scheduled full scan, not on every push to master
19+
fail-on-vuln: ${{ github.event_name == 'schedule' }}
20+
scan-args: |-
21+
--config=osv-scanner.toml
22+
-r
23+
./

.github/workflows/osv-scanner.yml

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
name: OSV-Scanner Scheduled Scan
1+
name: OSV-Scanner PR Scan
22

33
on:
4-
schedule:
5-
- cron: '30 12 * * 1'
64
pull_request:
75
branches: [master]
86
merge_group:
97
branches: [master]
108

119
permissions:
12-
# Required to upload SARIF file to CodeQL. See: https://github.com/github/codeql-action/issues/2117
1310
actions: read
14-
# Require writing security events to upload SARIF file to security tab
1511
security-events: write
16-
# Only need to read contents
1712
contents: read
1813

1914
jobs:
20-
scan-scheduled:
21-
uses: 'google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.5'
15+
scan-pr:
16+
uses: 'google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@v2.3.8'
2217
with:
2318
scan-args: |-
2419
--config=osv-scanner.toml

.github/workflows/release.yml

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
with:
2626
fetch-depth: 0
2727
- name: Setup Node.js
28-
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
28+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
2929
with:
3030
node-version: '24.14.1'
3131
cache: 'yarn'
@@ -106,7 +106,9 @@ jobs:
106106
with:
107107
python-version: '3.14.3'
108108
cache: 'pip'
109-
- run: yarn copy:lua:python
109+
- name: Copy Lua scripts for Python
110+
if: ${{ contains(env.commitmsg, '[python]') || contains(env.commitmsg, '(python)') }}
111+
run: yarn copy:lua:python
110112
- name: Install Python dependencies
111113
run: |
112114
python -m pip install --upgrade pip
@@ -158,6 +160,7 @@ jobs:
158160
159161
# Add and commit changes (only add files that exist)
160162
git add pyproject.toml || true
163+
git add bullmq/__init__.py || true
161164
git add ../docs/gitbook/python/changelog.md || true
162165
163166
# Check if there are actually changes to commit after adding
@@ -174,6 +177,7 @@ jobs:
174177
175178
This PR contains:
176179
- Updated pyproject.toml
180+
- Updated __init__.py
177181
- Updated changelog
178182
- Updated API documentation (if any)
179183
@@ -377,3 +381,90 @@ jobs:
377381
else
378382
echo "No changes detected after semantic-release"
379383
fi
384+
385+
# Rust Release
386+
- name: Setup Rust
387+
uses: dtolnay/rust-toolchain@stable
388+
- name: Copy Lua scripts for Rust
389+
if: ${{ contains(env.commitmsg, '[rust]') || contains(env.commitmsg, '(rust)') }}
390+
run: yarn copy:lua:rust
391+
- name: Cache Cargo registry
392+
uses: actions/cache@v4
393+
with:
394+
path: |
395+
~/.cargo/registry
396+
~/.cargo/git
397+
rust/target
398+
key: ${{ runner.os }}-cargo-release-${{ hashFiles('rust/Cargo.lock') }}
399+
restore-keys: |
400+
${{ runner.os }}-cargo-release-
401+
- name: Install dependencies Rust
402+
if: ${{ contains(env.commitmsg, '[rust]') || contains(env.commitmsg, '(rust)') }}
403+
working-directory: rust
404+
run: yarn install --frozen-lockfile --non-interactive
405+
- name: Release Rust
406+
id: semantic_release_rust
407+
if: ${{ contains(env.commitmsg, '[rust]') || contains(env.commitmsg, '(rust)') }}
408+
working-directory: rust
409+
env:
410+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
411+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
412+
run: npx semantic-release
413+
- name: Create PR with Rust release changes
414+
if: ${{ success() && steps.semantic_release_rust.outcome == 'success' }}
415+
env:
416+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
417+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
418+
working-directory: rust
419+
run: |
420+
# Check if there are any changes to commit
421+
if [[ -n $(git status --porcelain) ]]; then
422+
# Get the version from Cargo.toml
423+
VERSION=$(grep -m 1 '^version' Cargo.toml | cut -d'"' -f2)
424+
BRANCH_NAME="release/vrs${VERSION}"
425+
426+
echo "Creating PR for release version: vrs${VERSION}"
427+
428+
# Create and switch to new branch
429+
git checkout -b $BRANCH_NAME
430+
431+
# Configure git
432+
git config --local user.email "action@github.com"
433+
git config --local user.name "GitHub Action"
434+
435+
# Add and commit changes
436+
git add Cargo.toml || true
437+
git add Cargo.lock || true
438+
git add CHANGELOG.md || true
439+
440+
# Check if there are actually changes to commit after adding
441+
if [[ -n $(git diff --cached --name-only) ]]; then
442+
git commit -m "chore(release): vrs${VERSION}"
443+
444+
# Push the branch
445+
git push origin $BRANCH_NAME
446+
447+
# Create PR using GitHub CLI
448+
gh pr create \
449+
--title "chore(release): vrs${VERSION}" \
450+
--body "Automated release PR for version vrs${VERSION}
451+
452+
This PR contains:
453+
- Updated rust/Cargo.toml version
454+
- Updated rust/Cargo.lock
455+
- Updated rust/CHANGELOG.md
456+
457+
Please review and merge to complete the release process." \
458+
--head $BRANCH_NAME \
459+
--base master
460+
461+
echo "Created PR for release vrs${VERSION}"
462+
git checkout origin/master
463+
else
464+
echo "No changes to commit after staging files"
465+
git checkout origin/master
466+
git branch -D $BRANCH_NAME
467+
fi
468+
else
469+
echo "No changes detected after semantic-release"
470+
fi

0 commit comments

Comments
 (0)