feat: 完成现有小程序接口的全部迁移至新后端

This commit is contained in:
R524809
2026-10-19 13:17:51 +08:00
parent 8827110f2f
commit d30cf25890
148 changed files with 13287 additions and 34 deletions
@@ -0,0 +1,101 @@
# deploy-on-push
Deploy every pushed branch from the repository's own GitHub Actions with `prisma/cloud-deploy-action`.
## Priority
HIGH
## Why It Matters
The platform does not build on push. A connected repository without a workflow deploys nothing and reports no error, and a workflow without the connection skips with a green run. Both pieces are required, and a push to the default branch deploys production without any further prompt.
## How It Works
1. **The connection.** `prisma git connect` installs the Prisma GitHub App (if needed) and links the repository to the project. It lets workflow runs exchange their GitHub OIDC token for a 30-minute workspace token, and it tears down a preview when its Git branch is deleted.
2. **The workflow.** `prisma/cloud-deploy-action` runs install, your build command, and `prisma deploy <module>`. The default branch deploys production; any other branch deploys a stage named after it.
The Console can do both at once: importing the repository there opens a pull request that adds the workflow. The CLI only creates the connection.
## Setup From the CLI
```bash
npx prisma project link <app-name> # deploy does not link the directory
npx prisma git connect # uses the origin remote; needs an interactive terminal
```
`git connect` opens a browser for the GitHub App install and waits, so a person has to run it. With `--no-interactive` it fails with `CLI.INTERACTION_REQUIRED`; use the Console instead in that case. It fails with `PROJECT.SETUP_REQUIRED` when the directory is not linked.
Then commit the workflow:
```yaml
# .github/workflows/prisma-deploy.yml
name: prisma-deploy
on:
push:
concurrency:
group: prisma-deploy-${{ github.ref }}
cancel-in-progress: false
permissions:
contents: read
id-token: write
jobs:
deploy:
if: github.ref_type == 'branch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- uses: oven-sh/setup-bun@v2
- uses: prisma/cloud-deploy-action@v1
with:
build-command: npm run build
```
- `id-token: write` is required for the OIDC exchange.
- Bun 1.3.10 or newer must be on the runner `PATH`; `oven-sh/setup-bun@v2` provides it.
- GitHub reads the workflow from the pushed commit, so a branch created before the file existed deploys nothing until it contains the file.
## Action Inputs and Outputs
Inputs (from `action.yml` in v1.9.0):
| Input | Default | Notes |
|-------|---------|-------|
| `build-command` | `npm run build` | Run verbatim; `none` skips the build |
| `install-command` | auto | `npm ci` or `bun install --frozen-lockfile` from the lockfile; pnpm and yarn need an explicit value |
| `module` | `module.ts` | The Composer entry |
| `stage` | derived | Empty: default branch is production, other branches become a stage of the same name |
| `working-directory` | `.` | For monorepos |
| `prisma-version` | `8.0.0-rc.9` | Used only when the repository has no `prisma` dev dependency; otherwise the installed version deploys |
| `mode` | `deploy` | `destroy` does not work against the current CLI |
Outputs: `outcome` (`succeeded`, `failed`, `skipped-no-credential`), `url` (root service), `urls` (JSON map of service address to URL), `build-id`, `report-path`. Repositories that are not connected can pass `PRISMA_SERVICE_TOKEN` from a secret in the step's `env`; an explicit token wins over OIDC.
## Checking a Push
- Watch the run in the repository's Actions tab. The job summary lists each service URL and, on failure, the cause.
- `outcome: skipped-no-credential` means the repository is not connected, `id-token: write` is missing, or the run came from a fork.
- `CLI.UNKNOWN_COMMAND` in the deploy step means an action release up to v1.5.0, which called the removed `prisma composer` commands. Use `@v1` (v1.9.0 or later).
- From a terminal: `npx prisma service list --branch <git-branch> --json`.
- Deleting the Git branch removes the preview's services, databases, and buckets. Production and the default branch are never torn down.
## Bad
Running `npx prisma git connect`, pushing, and reporting the app as deployed. The connection alone builds and deploys nothing.
## Good
Connect, commit `.github/workflows/prisma-deploy.yml`, push a non-default branch first, confirm the run's `url` responds, and only then merge to the default branch with the user's go-ahead.
## References
- [Deploy on push](https://www.prisma.io/docs/compute/deploy-on-push)
- [GitHub integration](https://www.prisma.io/docs/compute/github)
- [prisma/cloud-deploy-action](https://github.com/prisma/cloud-deploy-action)