bashrun 0.5.0.dev37693327146__tar.gz → 0.7.0.dev83__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bashrun-0.7.0.dev83/.github/workflows/integrate.yml +24 -0
- bashrun-0.7.0.dev83/.github/workflows/merge-gate.yml +18 -0
- bashrun-0.7.0.dev83/.github/workflows/release.yml +32 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/AGENTS.md +3 -3
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/PKG-INFO +1 -1
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/pyproject.toml +1 -2
- bashrun-0.7.0.dev83/release-devkit.yaml +6 -0
- bashrun-0.7.0.dev83/scripts/preflight.py +3 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/tools/devkit/pyproject.toml +1 -1
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/tools/devkit/uv.lock +4 -42
- bashrun-0.5.0.dev37693327146/.github/actions/setup-release-devkit/action.yml +0 -11
- bashrun-0.5.0.dev37693327146/.github/workflows/integrate.yml +0 -57
- bashrun-0.5.0.dev37693327146/.github/workflows/merge-gate.yml +0 -41
- bashrun-0.5.0.dev37693327146/.github/workflows/release.yml +0 -56
- bashrun-0.5.0.dev37693327146/release-devkit.yaml +0 -7
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/.gitattributes +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/.gitignore +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/.python-version +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/CLAUDE.md +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/LICENSE +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/NOTICE +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/README.md +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/ruff.base.toml +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/ruff.toml +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/src/bashrun/__init__.py +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/src/bashrun/bash.py +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/src/bashrun/py.typed +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/tests/test_bash.py +0 -0
- {bashrun-0.5.0.dev37693327146 → bashrun-0.7.0.dev83}/uv.lock +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Integrate
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: [dev]
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: integrate-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
preflight:
|
|
17
|
+
uses: outernet-foundation/github-actions-toolkit/.github/workflows/preflight.yml@feef989f2573cf383895aeb6da9dbccd61b189f7
|
|
18
|
+
|
|
19
|
+
update-pr-draft-release:
|
|
20
|
+
needs: [preflight]
|
|
21
|
+
permissions:
|
|
22
|
+
contents: write
|
|
23
|
+
packages: read
|
|
24
|
+
uses: outernet-foundation/github-actions-toolkit/.github/workflows/update-pr-draft-release.yml@feef989f2573cf383895aeb6da9dbccd61b189f7
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Merge gate
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [dev]
|
|
6
|
+
types: [labeled]
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: merge-gate-${{ github.event.pull_request.number }}
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
merge-gate:
|
|
16
|
+
uses: outernet-foundation/github-actions-toolkit/.github/workflows/merge-gate.yml@feef989f2573cf383895aeb6da9dbccd61b189f7
|
|
17
|
+
secrets:
|
|
18
|
+
merge-bot-private-key: ${{ secrets.MERGE_BOT_APP_PRIVATE_KEY }}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, dev]
|
|
6
|
+
|
|
7
|
+
concurrency:
|
|
8
|
+
group: release-${{ github.ref }}
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
prerelease:
|
|
15
|
+
if: github.ref == 'refs/heads/dev'
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: write
|
|
19
|
+
id-token: write
|
|
20
|
+
steps:
|
|
21
|
+
- uses: outernet-foundation/github-actions-toolkit/.github/actions/release@feef989f2573cf383895aeb6da9dbccd61b189f7
|
|
22
|
+
|
|
23
|
+
release:
|
|
24
|
+
if: github.ref == 'refs/heads/main'
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
permissions:
|
|
27
|
+
contents: write
|
|
28
|
+
id-token: write
|
|
29
|
+
steps:
|
|
30
|
+
- uses: outernet-foundation/github-actions-toolkit/.github/actions/release@feef989f2573cf383895aeb6da9dbccd61b189f7
|
|
31
|
+
with:
|
|
32
|
+
stable: true
|
|
@@ -29,12 +29,12 @@ The package is `bashrun` (src-layout under `src/bashrun/`); consumer repos decla
|
|
|
29
29
|
|
|
30
30
|
**`KeyboardInterrupt` handling is load-bearing, not incidental.** Each helper's `except KeyboardInterrupt` waits up to five seconds for the child to exit cleanly, then kills, then re-raises. Naive `subprocess.run` doesn't propagate Ctrl+C to a long-running child in a way that lets the child clean up; the wait-then-kill dance is why callers can trust that Ctrl+C in the parent actually reaches (and eventually terminates) the child.
|
|
31
31
|
|
|
32
|
-
**Wheel must ship `py.typed`.** The package is typed and consumers expect strict-mode-friendly imports.
|
|
32
|
+
**Wheel must ship `py.typed`.** The package is typed and consumers expect strict-mode-friendly imports; drop `py.typed` from the package and downstream basedpyright/mypy silently treat the package as untyped. Hatchling's `packages` selection ships every git-tracked file under the package directory, so `py.typed` rides along with no configuration — an explicit `include = ["src/bashrun/py.typed"]` entry is redundant, not a required allowlist.
|
|
33
33
|
|
|
34
34
|
**The module-level `# ruff: noqa: S404, S603` in `bash.py` stays.** This package *is* the subprocess wrapper — importing and calling `subprocess` unsafely is its whole job. The suppression is the wrapper boundary (case 1 in the shared "fix warnings; suppress only under a wrapped or tracked exception" rule): every `subprocess` usage lives inside this one file, and the header declares it as the sanctioned suppression site so audits don't have to reason about each call individually.
|
|
35
35
|
|
|
36
36
|
## Release flow
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
github-actions-toolkit's `AGENTS.md` owns the workflow contract (integrate/merge-gate/release, all reusables and the release composite); this repo follows it unchanged — the workflows here contain no local jobs. Repo-specific facts: the toolkit is never a project dependency (bashrun sits inside its dependency graph; a project-level edge is a resolver cycle — the Python package/distribution keeps the historical `release_devkit` name, and the root config file stays `release-devkit.yaml`), and API-breaking changes ship with a manually bumped `major_minor` (patch-auto assumes additive changes).
|
|
39
39
|
|
|
40
|
-
This repo cannot take python-devkit as a dependency (python-devkit runtime-depends on bashrun; uv's resolver rejects the name-shadowing as a self-dependency), so its own preflight consumes python-devkit through the `tools/devkit/` sidecar: a `package = false` project named `bashrun-devkit`
|
|
40
|
+
This repo cannot take python-devkit as a dependency (python-devkit runtime-depends on bashrun; uv's resolver rejects the name-shadowing as a self-dependency), so its own preflight consumes python-devkit through the `tools/devkit/` sidecar: a `package = false` project named `bashrun-devkit` flooring `python-devkit>=0.3.0.dev0` — the different root name lets the dependency resolve to PyPI inside the sidecar's isolated env with no shadowing. The toolkit's preflight reusable invokes `uv run --locked scripts/preflight.py`; that two-line script dogfoods bashrun to run `uv run --project tools/devkit --locked preflight-python`. `--project` uses the sidecar env but leaves cwd at the repo root, so preflight's child `uv run` calls (sync, ruff, pytest, …) re-discover bashrun's real project and run in bashrun's `.venv`. The committed `tools/devkit/uv.lock` is the single version surface, enforced by `--locked` on the sidecar invocation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "bashrun"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.7.0.dev83"
|
|
4
4
|
description = "Guardrailed shell-exec helpers for Python"
|
|
5
5
|
requires-python = ">=3.13"
|
|
6
6
|
dependencies = []
|
|
@@ -14,7 +14,6 @@ build-backend = "hatchling.build"
|
|
|
14
14
|
|
|
15
15
|
[tool.hatch.build.targets.wheel]
|
|
16
16
|
packages = ["src/bashrun"]
|
|
17
|
-
include = ["src/bashrun/py.typed"]
|
|
18
17
|
|
|
19
18
|
[tool.basedpyright]
|
|
20
19
|
venvPath = "."
|
|
@@ -38,21 +38,7 @@ dependencies = [
|
|
|
38
38
|
]
|
|
39
39
|
|
|
40
40
|
[package.metadata]
|
|
41
|
-
requires-dist = [{ name = "python-devkit", specifier = "
|
|
42
|
-
|
|
43
|
-
[[package]]
|
|
44
|
-
name = "ci-devkit"
|
|
45
|
-
version = "0.1.13"
|
|
46
|
-
source = { registry = "https://pypi.org/simple" }
|
|
47
|
-
dependencies = [
|
|
48
|
-
{ name = "bashrun" },
|
|
49
|
-
{ name = "pydantic" },
|
|
50
|
-
{ name = "pydantic-settings" },
|
|
51
|
-
]
|
|
52
|
-
sdist = { url = "https://files.pythonhosted.org/packages/0c/c3/4fa23868b52713a8ed871334fb12f3473cc9f8778d8c09ef5b57aa7f5ff0/ci_devkit-0.1.13.tar.gz", hash = "sha256:8b750c1f0b953bc045e206a5a39093f3cde824b2f3dfdc5d3810d55372c3da4f", size = 40536, upload-time = "2026-09-28T07:48:31.116Z" }
|
|
53
|
-
wheels = [
|
|
54
|
-
{ url = "https://files.pythonhosted.org/packages/6a/9a/388cc8375cb2bab3c1cbb9d7d96eb5abb951a4b037aafbf3c88d4c02cae3/ci_devkit-0.1.13-py3-none-any.whl", hash = "sha256:7b08f1b21691e3855b7747e060e1bc6e441664386ba346093bd14bd5327cffdd", size = 25686, upload-time = "2026-09-28T07:48:30.104Z" },
|
|
55
|
-
]
|
|
41
|
+
requires-dist = [{ name = "python-devkit", specifier = ">=0.3.0.dev0" }]
|
|
56
42
|
|
|
57
43
|
[[package]]
|
|
58
44
|
name = "colorama"
|
|
@@ -155,20 +141,6 @@ wheels = [
|
|
|
155
141
|
{ url = "https://files.pythonhosted.org/packages/63/19/67830dda664e6bdf9285ee2e40f355d0d7d6b92aa0c42e8d217bb8d33d36/pydantic_core-2.46.5-cp314-cp314t-win_arm64.whl", hash = "sha256:acf8a67ba51f4ca9ddbd0e6b3000a65ac51ab734661778b3e7ba64d99a710f2f", size = 1989276, upload-time = "2026-08-28T10:00:16.984Z" },
|
|
156
142
|
]
|
|
157
143
|
|
|
158
|
-
[[package]]
|
|
159
|
-
name = "pydantic-settings"
|
|
160
|
-
version = "2.15.0"
|
|
161
|
-
source = { registry = "https://pypi.org/simple" }
|
|
162
|
-
dependencies = [
|
|
163
|
-
{ name = "pydantic" },
|
|
164
|
-
{ name = "python-dotenv" },
|
|
165
|
-
{ name = "typing-inspection" },
|
|
166
|
-
]
|
|
167
|
-
sdist = { url = "https://files.pythonhosted.org/packages/68/ca/31c57507b13119d7d3cfa1576dad2911a4861e3be07b579395f4e9d393f9/pydantic_settings-2.15.0.tar.gz", hash = "sha256:694b793e84f766ba76a90ebdefc01d0a9a045dab0382bee70393da93712ad117", size = 261253, upload-time = "2026-08-07T09:24:57.419Z" }
|
|
168
|
-
wheels = [
|
|
169
|
-
{ url = "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl", hash = "sha256:0ba092c291c94baceb5eff768aa0d56400a457585bc0175925a5a5510303da42", size = 69413, upload-time = "2026-08-07T09:24:55.839Z" },
|
|
170
|
-
]
|
|
171
|
-
|
|
172
144
|
[[package]]
|
|
173
145
|
name = "pygments"
|
|
174
146
|
version = "2.21.0"
|
|
@@ -180,26 +152,16 @@ wheels = [
|
|
|
180
152
|
|
|
181
153
|
[[package]]
|
|
182
154
|
name = "python-devkit"
|
|
183
|
-
version = "0.
|
|
155
|
+
version = "0.3.0.dev38096025533"
|
|
184
156
|
source = { registry = "https://pypi.org/simple" }
|
|
185
157
|
dependencies = [
|
|
186
158
|
{ name = "bashrun" },
|
|
187
|
-
{ name = "ci-devkit" },
|
|
188
159
|
{ name = "pydantic" },
|
|
189
160
|
{ name = "typer" },
|
|
190
161
|
]
|
|
191
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
192
|
-
wheels = [
|
|
193
|
-
{ url = "https://files.pythonhosted.org/packages/b6/81/da4f76cbfccb5a4d5a58a9f51d3e2b7d40f6dc9edd931d7891b2789adeae/python_devkit-0.1.15-py3-none-any.whl", hash = "sha256:0c13684cc780e3ba9b3e25feed61065b355e8fc7436bee043e7c6adf71fa40e7", size = 14537, upload-time = "2026-09-30T04:12:17.918Z" },
|
|
194
|
-
]
|
|
195
|
-
|
|
196
|
-
[[package]]
|
|
197
|
-
name = "python-dotenv"
|
|
198
|
-
version = "1.2.3"
|
|
199
|
-
source = { registry = "https://pypi.org/simple" }
|
|
200
|
-
sdist = { url = "https://files.pythonhosted.org/packages/6a/53/ed9d74092561d4b01a2ef1349d52cdbc135e526c245f366b089cfca6de49/python_dotenv-1.2.3.tar.gz", hash = "sha256:a20a594dabeaa385725aa239d5244871c143ecb356add8a20fcf23773a6c3a35", size = 58945, upload-time = "2026-08-16T16:54:54.067Z" }
|
|
162
|
+
sdist = { url = "https://files.pythonhosted.org/packages/85/07/160d8d87f184c1f9a32e2dd64a413695d10dad275d1684f89728d28c543c/python_devkit-0.3.0.dev38096025533.tar.gz", hash = "sha256:94b6f3d63b9192ede7d4bff2a3fabcc714a202807e2a7468c0047920837bb657", size = 33112, upload-time = "2026-10-10T23:47:13.476Z" }
|
|
201
163
|
wheels = [
|
|
202
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
164
|
+
{ url = "https://files.pythonhosted.org/packages/12/66/c87d7ab58ba1ded58dfb21fe0c9783231d7a67514fd335239bd95df58414/python_devkit-0.3.0.dev38096025533-py3-none-any.whl", hash = "sha256:605aeabb81770f6393e771518639512fd6a7c39b5a22554dfe747fd9de3a0205", size = 14633, upload-time = "2026-10-10T23:47:12.49Z" },
|
|
203
165
|
]
|
|
204
166
|
|
|
205
167
|
[[package]]
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
name: setup-release-devkit
|
|
2
|
-
description: Install release-devkit at the pinned commit into RUNNER_TEMP
|
|
3
|
-
runs:
|
|
4
|
-
using: composite
|
|
5
|
-
steps:
|
|
6
|
-
- shell: bash
|
|
7
|
-
env:
|
|
8
|
-
RELEASE_DEVKIT_COMMIT: 029a9a6e26baef30ae90d8ffdefc706530f18521
|
|
9
|
-
run: |
|
|
10
|
-
git clone https://github.com/outernet-foundation/release-devkit.git "$RUNNER_TEMP/release-devkit"
|
|
11
|
-
git -C "$RUNNER_TEMP/release-devkit" checkout "$RELEASE_DEVKIT_COMMIT"
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
name: Integrate
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
workflow_dispatch:
|
|
5
|
-
pull_request:
|
|
6
|
-
branches: [dev]
|
|
7
|
-
|
|
8
|
-
concurrency:
|
|
9
|
-
group: integrate-${{ github.ref }}
|
|
10
|
-
cancel-in-progress: true
|
|
11
|
-
|
|
12
|
-
permissions:
|
|
13
|
-
contents: read
|
|
14
|
-
|
|
15
|
-
jobs:
|
|
16
|
-
lint-workflows:
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
steps:
|
|
19
|
-
- &checkout
|
|
20
|
-
uses: actions/checkout@v5
|
|
21
|
-
with:
|
|
22
|
-
ref: ${{ github.event.pull_request.head.sha }}
|
|
23
|
-
persist-credentials: false
|
|
24
|
-
- &uv-restore
|
|
25
|
-
uses: astral-sh/setup-uv@v7
|
|
26
|
-
with:
|
|
27
|
-
enable-cache: true
|
|
28
|
-
save-cache: "false"
|
|
29
|
-
- &setup-release-devkit
|
|
30
|
-
uses: ./.github/actions/setup-release-devkit
|
|
31
|
-
- run: uv run --project "$RUNNER_TEMP/release-devkit" --locked --no-dev lint-workflows
|
|
32
|
-
|
|
33
|
-
preflight:
|
|
34
|
-
needs: [lint-workflows]
|
|
35
|
-
runs-on: ubuntu-latest
|
|
36
|
-
steps:
|
|
37
|
-
- *checkout
|
|
38
|
-
- uses: astral-sh/setup-uv@v7
|
|
39
|
-
with:
|
|
40
|
-
enable-cache: true
|
|
41
|
-
save-cache: "true"
|
|
42
|
-
- run: uv lock --check --project tools/devkit
|
|
43
|
-
- run: uv run --project tools/devkit preflight-python
|
|
44
|
-
|
|
45
|
-
validate-release-plan:
|
|
46
|
-
runs-on: ubuntu-latest
|
|
47
|
-
steps:
|
|
48
|
-
- uses: actions/checkout@v5
|
|
49
|
-
with:
|
|
50
|
-
ref: ${{ github.event.pull_request.head.sha }}
|
|
51
|
-
# Perform a full clone, required for tags
|
|
52
|
-
fetch-depth: 0
|
|
53
|
-
fetch-tags: true
|
|
54
|
-
persist-credentials: false
|
|
55
|
-
- *uv-restore
|
|
56
|
-
- *setup-release-devkit
|
|
57
|
-
- run: uv run --project "$RUNNER_TEMP/release-devkit" --locked --no-dev validate-release-plan
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
name: Merge gate
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches: [dev]
|
|
6
|
-
types: [labeled]
|
|
7
|
-
workflow_run:
|
|
8
|
-
workflows: [Integrate]
|
|
9
|
-
types: [completed]
|
|
10
|
-
|
|
11
|
-
concurrency:
|
|
12
|
-
group: merge-gate-${{ github.event.pull_request.number || github.event.workflow_run.head_branch }}
|
|
13
|
-
|
|
14
|
-
permissions:
|
|
15
|
-
contents: read
|
|
16
|
-
|
|
17
|
-
jobs:
|
|
18
|
-
merge-gate:
|
|
19
|
-
if: github.event.label.name == 'ready-to-merge' || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
|
|
20
|
-
runs-on: ubuntu-latest
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v5
|
|
23
|
-
with:
|
|
24
|
-
ref: ${{ github.event.pull_request.head.sha || github.event.workflow_run.head_sha }}
|
|
25
|
-
# Perform a full clone, required so merge-gate can validate that this PR is a fast forward from dev
|
|
26
|
-
fetch-depth: 0
|
|
27
|
-
persist-credentials: false
|
|
28
|
-
- uses: astral-sh/setup-uv@v7
|
|
29
|
-
with:
|
|
30
|
-
enable-cache: true
|
|
31
|
-
save-cache: "false"
|
|
32
|
-
- uses: ./.github/actions/setup-release-devkit
|
|
33
|
-
- uses: actions/create-github-app-token@v3
|
|
34
|
-
id: mint
|
|
35
|
-
with:
|
|
36
|
-
app-id: ${{ vars.MERGE_BOT_APP_ID }}
|
|
37
|
-
private-key: ${{ secrets.MERGE_BOT_APP_PRIVATE_KEY }}
|
|
38
|
-
- run: uv run --project "$RUNNER_TEMP/release-devkit" --locked --no-dev merge-gate
|
|
39
|
-
env:
|
|
40
|
-
GITHUB_TOKEN: ${{ steps.mint.outputs.token }}
|
|
41
|
-
HEAD_SHA: ${{ github.event.pull_request.head.sha || github.event.workflow_run.head_sha }}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main, dev]
|
|
6
|
-
|
|
7
|
-
concurrency:
|
|
8
|
-
group: release-${{ github.ref }}
|
|
9
|
-
|
|
10
|
-
permissions:
|
|
11
|
-
contents: read
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
prerelease:
|
|
15
|
-
if: github.ref == 'refs/heads/dev'
|
|
16
|
-
runs-on: ubuntu-latest
|
|
17
|
-
permissions:
|
|
18
|
-
contents: read
|
|
19
|
-
id-token: write
|
|
20
|
-
steps:
|
|
21
|
-
- uses: actions/checkout@v5
|
|
22
|
-
with:
|
|
23
|
-
# Perform a full clone, required for tags
|
|
24
|
-
fetch-depth: 0
|
|
25
|
-
fetch-tags: true
|
|
26
|
-
persist-credentials: false
|
|
27
|
-
- &uv-restore
|
|
28
|
-
uses: astral-sh/setup-uv@v7
|
|
29
|
-
with:
|
|
30
|
-
enable-cache: true
|
|
31
|
-
save-cache: "false"
|
|
32
|
-
- &setup-release-devkit
|
|
33
|
-
uses: ./.github/actions/setup-release-devkit
|
|
34
|
-
- run: uv run --project "$RUNNER_TEMP/release-devkit" --locked --no-dev prerelease
|
|
35
|
-
env:
|
|
36
|
-
GITHUB_TOKEN: ${{ github.token }}
|
|
37
|
-
|
|
38
|
-
release:
|
|
39
|
-
if: github.ref == 'refs/heads/main'
|
|
40
|
-
runs-on: ubuntu-latest
|
|
41
|
-
permissions:
|
|
42
|
-
contents: write
|
|
43
|
-
id-token: write
|
|
44
|
-
steps:
|
|
45
|
-
- uses: actions/checkout@v5
|
|
46
|
-
with:
|
|
47
|
-
# Perform a full clone, required for tags
|
|
48
|
-
fetch-depth: 0
|
|
49
|
-
fetch-tags: true
|
|
50
|
-
# Persist credentials so that the release command can push release tags
|
|
51
|
-
persist-credentials: true
|
|
52
|
-
- *uv-restore
|
|
53
|
-
- *setup-release-devkit
|
|
54
|
-
- run: uv run --project "$RUNNER_TEMP/release-devkit" --locked --no-dev release
|
|
55
|
-
env:
|
|
56
|
-
GITHUB_TOKEN: ${{ github.token }}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|