Merge pull request 'Point pilot deployments and CMS preview at SloanOps' (#17) from migration/sloanops-normal-deploy into cms
Reviewed-on: SloanOps/3031023-xyz#17
This commit is contained in:
@@ -41,6 +41,10 @@ jobs:
|
|||||||
run: npm run build:site
|
run: npm run build:site
|
||||||
- name: Verify selected output
|
- name: Verify selected output
|
||||||
run: npm run verify:build
|
run: npm run verify:build
|
||||||
|
- name: Verify SloanOps account target
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
run: test "$CLOUDFLARE_ACCOUNT_ID" = "9894ee8f9432da1018e0f3861d86dedb"
|
||||||
- name: Upload non-production preview version
|
- name: Upload non-production preview version
|
||||||
run: |
|
run: |
|
||||||
raw_ref="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-preview}}"
|
raw_ref="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-preview}}"
|
||||||
@@ -48,5 +52,5 @@ jobs:
|
|||||||
preview_alias="${preview_alias:-preview}"
|
preview_alias="${preview_alias:-preview}"
|
||||||
npx wrangler versions upload --config wrangler/blog.production.jsonc --preview-alias "$preview_alias"
|
npx wrangler versions upload --config wrangler/blog.production.jsonc --preview-alias "$preview_alias"
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_MIGRATION_API_TOKEN }}
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
|||||||
@@ -41,6 +41,10 @@ jobs:
|
|||||||
run: npm run build:site
|
run: npm run build:site
|
||||||
- name: Verify selected output
|
- name: Verify selected output
|
||||||
run: npm run verify:build
|
run: npm run verify:build
|
||||||
|
- name: Verify SloanOps account target
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
run: test "$CLOUDFLARE_ACCOUNT_ID" = "9894ee8f9432da1018e0f3861d86dedb"
|
||||||
- name: Upload non-production preview version
|
- name: Upload non-production preview version
|
||||||
run: |
|
run: |
|
||||||
raw_ref="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-preview}}"
|
raw_ref="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-preview}}"
|
||||||
@@ -48,5 +52,5 @@ jobs:
|
|||||||
preview_alias="${preview_alias:-preview}"
|
preview_alias="${preview_alias:-preview}"
|
||||||
npx wrangler versions upload --config wrangler/www.production.jsonc --preview-alias "$preview_alias"
|
npx wrangler versions upload --config wrangler/www.production.jsonc --preview-alias "$preview_alias"
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_MIGRATION_API_TOKEN }}
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
|||||||
@@ -42,8 +42,12 @@ jobs:
|
|||||||
run: npm run build:site
|
run: npm run build:site
|
||||||
- name: Verify production blog output
|
- name: Verify production blog output
|
||||||
run: npm run verify:build
|
run: npm run verify:build
|
||||||
|
- name: Verify SloanOps account target
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
run: test "$CLOUDFLARE_ACCOUNT_ID" = "9894ee8f9432da1018e0f3861d86dedb"
|
||||||
- name: Deploy Worker without custom domains or routes
|
- name: Deploy Worker without custom domains or routes
|
||||||
run: npx wrangler deploy --config wrangler/blog.production.jsonc
|
run: npx wrangler deploy --config wrangler/blog.production.jsonc
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_MIGRATION_API_TOKEN }}
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
|||||||
@@ -42,8 +42,12 @@ jobs:
|
|||||||
run: npm run build:site
|
run: npm run build:site
|
||||||
- name: Verify production output
|
- name: Verify production output
|
||||||
run: npm run verify:build
|
run: npm run verify:build
|
||||||
|
- name: Verify SloanOps account target
|
||||||
|
env:
|
||||||
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
run: test "$CLOUDFLARE_ACCOUNT_ID" = "9894ee8f9432da1018e0f3861d86dedb"
|
||||||
- name: Deploy Worker without custom domains or routes
|
- name: Deploy Worker without custom domains or routes
|
||||||
run: npx wrangler deploy --config wrangler/www.production.jsonc
|
run: npx wrangler deploy --config wrangler/www.production.jsonc
|
||||||
env:
|
env:
|
||||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_MIGRATION_API_TOKEN }}
|
||||||
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_MIGRATION_ACCOUNT_ID }}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
# Decap CMS: Gitea settings
|
# Decap CMS: Gitea settings
|
||||||
|
|
||||||
Status: applied and verified for internal use on 2026-09-04. The repository
|
Status: SloanOps destination configuration prepared 2026-09-05; exact-origin
|
||||||
|
CORS and OAuth replacement must accompany the protected CMS merge. Prior
|
||||||
|
source-account settings were verified for internal use on 2026-09-04. The repository
|
||||||
targets the permanent `cms` staging branch, the CMS application is deployed
|
targets the permanent `cms` staging branch, the CMS application is deployed
|
||||||
from `main`, and `sloanops.admin` is the approved internal editor. Client or
|
from `main`, and `sloanops.admin` is the approved internal editor. Client or
|
||||||
public access remains out of scope.
|
public access remains out of scope.
|
||||||
@@ -13,9 +15,9 @@ The repository implementation targets these fixed public values:
|
|||||||
| Decap write branch | `cms` |
|
| Decap write branch | `cms` |
|
||||||
| Gitea base URL | `https://git.sloanops.com` |
|
| Gitea base URL | `https://git.sloanops.com` |
|
||||||
| Gitea API root | `https://git.sloanops.com/api/v1` |
|
| Gitea API root | `https://git.sloanops.com/api/v1` |
|
||||||
| Stable CMS origin | `https://cms-3031023-xyz-www.ksloan90.workers.dev` |
|
| Stable CMS origin | `https://cms-3031023-xyz-www.sloanops.workers.dev` |
|
||||||
| Production admin origin | `https://3031023.xyz` |
|
| Production admin origin | `https://3031023.xyz` |
|
||||||
| Exact OAuth redirects | `https://cms-3031023-xyz-www.ksloan90.workers.dev/admin/` and `https://3031023.xyz/admin/` |
|
| Exact OAuth redirects | `https://cms-3031023-xyz-www.sloanops.workers.dev/admin/` and `https://3031023.xyz/admin/` |
|
||||||
| Required status context | `CMS content validation / cms-content-validation (pull_request)` |
|
| Required status context | `CMS content validation / cms-content-validation (pull_request)` |
|
||||||
|
|
||||||
The pilot and permanent branch names are intentionally slash-free. Decap
|
The pilot and permanent branch names are intentionally slash-free. Decap
|
||||||
@@ -60,7 +62,7 @@ to this repository are represented by these settings:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- GITEA__cors__ENABLED=true
|
- GITEA__cors__ENABLED=true
|
||||||
- GITEA__cors__ALLOW_DOMAIN=https://cms-3031023-xyz-www.ksloan90.workers.dev,https://3031023.xyz
|
- GITEA__cors__ALLOW_DOMAIN=https://cms-3031023-xyz-www.sloanops.workers.dev,https://3031023.xyz
|
||||||
- GITEA__cors__METHODS=GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS
|
- GITEA__cors__METHODS=GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS
|
||||||
- GITEA__cors__MAX_AGE=10m
|
- GITEA__cors__MAX_AGE=10m
|
||||||
- GITEA__cors__ALLOW_CREDENTIALS=false
|
- GITEA__cors__ALLOW_CREDENTIALS=false
|
||||||
@@ -77,7 +79,7 @@ token or cookie:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl --request OPTIONS 'https://git.sloanops.com/api/v1/version' \
|
curl --request OPTIONS 'https://git.sloanops.com/api/v1/version' \
|
||||||
--header 'Origin: https://cms-3031023-xyz-www.ksloan90.workers.dev' \
|
--header 'Origin: https://cms-3031023-xyz-www.sloanops.workers.dev' \
|
||||||
--header 'Access-Control-Request-Method: GET' \
|
--header 'Access-Control-Request-Method: GET' \
|
||||||
--header 'Access-Control-Request-Headers: authorization,content-type'
|
--header 'Access-Control-Request-Headers: authorization,content-type'
|
||||||
```
|
```
|
||||||
@@ -95,7 +97,7 @@ CORS response were verified:
|
|||||||
- Application name: `3031023.xyz Decap CMS`.
|
- Application name: `3031023.xyz Decap CMS`.
|
||||||
- Confidential client: **unchecked**. The browser client must use PKCE.
|
- Confidential client: **unchecked**. The browser client must use PKCE.
|
||||||
- Redirect URIs: exactly
|
- Redirect URIs: exactly
|
||||||
`https://cms-3031023-xyz-www.ksloan90.workers.dev/admin/` and
|
`https://cms-3031023-xyz-www.sloanops.workers.dev/admin/` and
|
||||||
`https://3031023.xyz/admin/`, including trailing slashes.
|
`https://3031023.xyz/admin/`, including trailing slashes.
|
||||||
- Do not add wildcards, localhost, the journal hostname, or branch-specific
|
- Do not add wildcards, localhost, the journal hostname, or branch-specific
|
||||||
Worker preview aliases as additional redirects.
|
Worker preview aliases as additional redirects.
|
||||||
|
|||||||
@@ -6,14 +6,16 @@ They do not deploy the version to production traffic.
|
|||||||
|
|
||||||
| Site key | Versioned Worker | Stable `cms` alias | Production hostname |
|
| Site key | Versioned Worker | Stable `cms` alias | Production hostname |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `www` | `3031023-xyz-www` | `cms-3031023-xyz-www.ksloan90.workers.dev` | `3031023.xyz` |
|
| `www` | `3031023-xyz-www` | `cms-3031023-xyz-www.sloanops.workers.dev` | `3031023.xyz` |
|
||||||
| `blog` | `3031023-xyz-blog` | `cms-3031023-xyz-blog.ksloan90.workers.dev` | `blog.3031023.xyz` |
|
| `blog` | `3031023-xyz-blog` | `cms-3031023-xyz-blog.sloanops.workers.dev` | `blog.3031023.xyz` |
|
||||||
|
|
||||||
The workflows derive the preview alias from the branch name, build with
|
The workflows derive the preview alias from the branch name, build with
|
||||||
preview robots rules, run output verification, and call `wrangler versions
|
preview robots rules, run output verification, and call `wrangler versions
|
||||||
upload`. They use the existing `CF_API_TOKEN` and `CF_ACCOUNT_ID` repository
|
upload`. They use organization secrets `CF_MIGRATION_API_TOKEN` and
|
||||||
secrets but contain no DNS, routes, custom-domain mutations, account IDs, or
|
`CF_MIGRATION_ACCOUNT_ID`. Wrangler pins the destination SloanOps account ID.
|
||||||
tokens in source.
|
They contain no DNS, route, or custom-domain mutations and no token values.
|
||||||
|
The current token expires 2026-10-05; replace it in organization secrets before
|
||||||
|
that date. Changing the old shared secret pair would affect unmigrated repos.
|
||||||
|
|
||||||
Only the stable CMS and production admin origins are registered with Gitea
|
Only the stable CMS and production admin origins are registered with Gitea
|
||||||
OAuth/CORS. A CMS login attempt from a temporary branch alias is expected to
|
OAuth/CORS. A CMS login attempt from a temporary branch alias is expected to
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ backend:
|
|||||||
auth_endpoint: https://git.sloanops.com/login/oauth/authorize
|
auth_endpoint: https://git.sloanops.com/login/oauth/authorize
|
||||||
|
|
||||||
publish_mode: simple
|
publish_mode: simple
|
||||||
site_url: https://cms-3031023-xyz-www.ksloan90.workers.dev
|
site_url: https://cms-3031023-xyz-www.sloanops.workers.dev
|
||||||
display_url: https://cms-3031023-xyz-www.ksloan90.workers.dev
|
display_url: https://cms-3031023-xyz-www.sloanops.workers.dev
|
||||||
show_preview_links: false
|
show_preview_links: false
|
||||||
|
|
||||||
media_folder: public/images/uploads
|
media_folder: public/images/uploads
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ function expectSubset(actual, expected, path) {
|
|||||||
|
|
||||||
const configPath = 'public/admin/config.yml';
|
const configPath = 'public/admin/config.yml';
|
||||||
const config = yaml.load(await readFile(configPath, 'utf8'));
|
const config = yaml.load(await readFile(configPath, 'utf8'));
|
||||||
const expectedOrigin = 'https://cms-3031023-xyz-www.ksloan90.workers.dev';
|
const expectedOrigin = 'https://cms-3031023-xyz-www.sloanops.workers.dev';
|
||||||
const expectedBackend = {
|
const expectedBackend = {
|
||||||
name: 'gitea',
|
name: 'gitea',
|
||||||
repo: 'SloanOps/3031023-xyz',
|
repo: 'SloanOps/3031023-xyz',
|
||||||
|
|||||||
@@ -3,5 +3,6 @@
|
|||||||
"name": "3031023-xyz-blog",
|
"name": "3031023-xyz-blog",
|
||||||
"compatibility_date": "2026-09-02",
|
"compatibility_date": "2026-09-02",
|
||||||
"workers_dev": true,
|
"workers_dev": true,
|
||||||
|
"account_id": "9894ee8f9432da1018e0f3861d86dedb",
|
||||||
"assets": { "directory": "../dist/blog", "not_found_handling": "404-page" }
|
"assets": { "directory": "../dist/blog", "not_found_handling": "404-page" }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,6 @@
|
|||||||
"name": "3031023-xyz-www",
|
"name": "3031023-xyz-www",
|
||||||
"compatibility_date": "2026-09-02",
|
"compatibility_date": "2026-09-02",
|
||||||
"workers_dev": true,
|
"workers_dev": true,
|
||||||
|
"account_id": "9894ee8f9432da1018e0f3861d86dedb",
|
||||||
"assets": { "directory": "../dist/www", "not_found_handling": "404-page" }
|
"assets": { "directory": "../dist/www", "not_found_handling": "404-page" }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user