You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One workflow, [`main.yml`](main.yml), drives the whole monorepo, so the Actions tab
4
-
shows a single "CI / CD" run per push/PR with every job as a node in one graph. Each
5
-
package's logic lives in a **composite action** under [`../actions/`](../actions);
6
-
`main.yml` only wires the dependency graph. The composite actions are not workflows
7
-
and do not appear in the Actions tab.
3
+
One workflow, [`main.yml`](main.yml), drives the whole monorepo, so the Actions tab shows a single "CI / CD" run per push/PR with every job as a node in one graph. Each package's logic lives in a **composite action** under [`../actions/`](../actions); `main.yml` only wires the dependency graph. The composite actions are not workflows and do not appear in the Actions tab.
cli-release (matrix, starts at t=0) ───────────────────────┴─► cli-test
14
-
│ (push to main)
15
-
cdn ◄── demo ◄── docs ◄───────────┘
16
-
(docs builds on every run; deploys only on push to main)
17
-
```
18
-
19
-
`compiler-check`, `runtime-lint` and `cli-release` start at t=0. If any job fails the
20
-
dependents never run (`needs:`), so a red build stops the deploys, including the docs
21
-
deploy. The
22
-
`host` and `std` matrices use `fail-fast: false` so one capability / package failure
23
-
still reports the others. `cli-release` is the slow heavy build, so it starts
24
-
immediately and `cli-test` waits on `host`, `std`, and the release artifacts.
5
+
`compiler-check`, `runtime-lint` and `cli-release` start at t=0. If any job fails the dependents never run (`needs:`), so a red build stops the deploys, including the docs deploy. The `host` and `std` matrices use `fail-fast: false` so one capability / package failure still reports the others. `cli-release` is the slow heavy build, so it starts immediately and `cli-test` waits on `host`, `std`, and the release artifacts.
25
6
26
7
## Composite actions
27
8
@@ -38,24 +19,22 @@ immediately and `cli-test` waits on `host`, `std`, and the release artifacts.
38
19
39
20
## Cloudflare Pages
40
21
41
-
Three **Direct Upload** projects. Actions push prebuilt directories via
42
-
`wrangler pages deploy`; Cloudflare doesn't clone or build.
22
+
Three **Direct Upload** projects. Actions push prebuilt directories via `wrangler pages deploy`; Cloudflare doesn't clone or build.
43
23
44
24
| Project | Source | Production URL |
45
25
|---------|--------|----------------|
46
26
|`edge-python-cdn`|`_site/{compiler,runtime,std,host,cli}` (consolidates the old per-package `-runtime` / `-host` / `-std` projects) |`https://edge-python-cdn.pages.dev`|
47
27
|`edge-python-demo`|`demo/` (wasm hashed for `version.json`, not bundled) |`https://edge-python-demo.pages.dev`|
48
28
|`edge-python-docs`|`docs/out` (Nextra static export) |`https://edgepython.com` (custom domain; also `https://edge-python-docs.pages.dev`) |
49
29
50
-
All deploys run **only on pushes to `main`** and are pinned to the production `main`
51
-
branch. PRs and tags never deploy; the next `main` push refreshes the projects.
30
+
All deploys run **only on pushes to `main`** and are pinned to the production `main` branch. PRs and tags never deploy; the next `main` push refreshes the projects.
@@ -73,8 +52,7 @@ Rotate: create new token -> update secret -> revoke old token.
73
52
74
53
## Releases
75
54
76
-
Pushing a `v*` tag runs the pipeline; the `compiler` build job uploads
77
-
`compiler_lib.wasm` to the matching Release. Tag must match workspace version.
55
+
Pushing a `v*` tag runs the pipeline; the `compiler` build job uploads `compiler_lib.wasm` to the matching Release. Tag must match workspace version.
78
56
79
57
1. Bump `version` under `[workspace.package]` in root `Cargo.toml` (every crate inherits via `version.workspace = true`). Run `cargo check` to refresh `Cargo.lock`, commit.
80
58
2. Tag and push:
@@ -84,18 +62,10 @@ git tag v0.1.0
84
62
git push origin v0.1.0
85
63
```
86
64
87
-
On tag push: `compiler-check` lints, then the `compiler` build job optimizes the
88
-
artifact and attaches it to a fresh Release with auto-generated notes. The CDN, demo
89
-
and docs deploys do not run on tags; they already deployed from the preceding `main` push.
65
+
On tag push: `compiler-check` lints, then the `compiler` build job optimizes the artifact and attaches it to a fresh Release with auto-generated notes. The CDN, demo and docs deploys do not run on tags; they already deployed from the preceding `main` push.
90
66
91
-
Nothing is published to crates.io, distribution is the `.wasm` on the Release.
92
-
`starter-module` carries its own version and isn't bumped with the workspace.
67
+
Nothing is published to crates.io, distribution is the `.wasm` on the Release. `starter-module` carries its own version and isn't bumped with the workspace.
93
68
94
-
Consumer crates pick up the release automatically: `compiler/Cargo.toml` declares
95
-
`links = "compiler_lib"` and `compiler/build.rs` downloads
96
-
`<repository>/releases/download/v<version>/compiler_lib.wasm` into `OUT_DIR`.
97
-
Downstreams read `DEP_COMPILER_LIB_WASM` in their own `build.rs`, see
98
-
[root README](../../README.md#consume-the-release-from-a-rust-host). Tag bumps flow via `cargo update`.
69
+
Consumer crates pick up the release automatically: `compiler/Cargo.toml` declares `links = "compiler_lib"` and `compiler/build.rs` downloads `<repository>/releases/download/v<version>/compiler_lib.wasm` into `OUT_DIR`. Downstreams read `DEP_COMPILER_LIB_WASM` in their own `build.rs`, see [root README](../../README.md#consume-the-release-from-a-rust-host). Tag bumps flow via `cargo update`.
99
70
100
-
Gated behind the default-on `prebuilt` feature. Producer-side compiler steps pass
101
-
`--no-default-features` to avoid fetching the asset that this same pipeline uploads later.
71
+
Gated behind the default-on `prebuilt` feature. Producer-side compiler steps pass `--no-default-features` to avoid fetching the asset that this same pipeline uploads later.
# cli-release (matrix, starts at t=0) ─────────────────────┴─► cli-test
10
-
# │ (push to main)
11
-
# cdn ◄── demo ◄── docs ◄────────┘
12
-
# docs deploys only on push to main, gated behind the full pipeline.
3
+
# Single pipeline for the whole monorepo. Each job's logic lives in a composite action under .github/actions/<pkg>; this file only wires the dependency graph.
13
4
14
5
on:
15
6
push:
@@ -95,9 +86,20 @@ jobs:
95
86
with:
96
87
package: ${{ matrix.package }}
97
88
98
-
# Starts at t=0 (no needs): the heavy release build runs in parallel; cli-test awaits its artifacts.
89
+
# Clippy + check once (no matrix); gates the release build.
90
+
cli-lint:
91
+
name: CLI / Lint and Check
92
+
runs-on: ubuntu-latest
93
+
steps:
94
+
- uses: actions/checkout@v6
95
+
- uses: ./.github/actions/cli
96
+
with:
97
+
mode: lint
98
+
99
+
# Heavy release build per target; starts as soon as cli-lint is green.
0 commit comments