Skip to content

Commit

Permalink
Deploy install.sh to cloudflare (zed-industries#11866)
Browse files Browse the repository at this point in the history
Release Notes:

- N/A
  • Loading branch information
ConradIrwin authored May 15, 2024
1 parent f7c5d70 commit 247825b
Show file tree
Hide file tree
Showing 8 changed files with 126 additions and 35 deletions.
11 changes: 11 additions & 0 deletions .cloudflare/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
We have two cloudflare workers that let us serve some assets of this repo
from Cloudflare.

* `open-source-website-assets` is used for `install.sh`
* `docs-proxy` is used for `https://zed.dev/docs`

On push to `main`, both of these (and the files they depend on) are uploaded to Cloudflare.

### Testing

You can use [wrangler](https://developers.cloudflare.com/workers/cli-wrangler/install-update) to test these workers locally, or to deploy custom versions.
14 changes: 14 additions & 0 deletions .cloudflare/docs-proxy/src/worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export default {
async fetch(request, _env, _ctx) {
const url = new URL(request.url);
url.hostname = "docs-anw.pages.dev";

let res = await fetch(url, request);

if (res.status === 404) {
res = await fetch("https://zed.dev/404");
}

return res;
},
};
8 changes: 8 additions & 0 deletions .cloudflare/docs-proxy/wrangler.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name = "docs-proxy"
main = "src/worker.js"
compatibility_date = "2024-05-03"
workers_dev = true

[[routes]]
pattern = "zed.dev/docs*"
zone_name = "zed.dev"
28 changes: 28 additions & 0 deletions .cloudflare/open-source-website-assets/src/worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Welcome to Cloudflare Workers! This is your first worker.
*
* - Run "npm run dev" in your terminal to start a development server
* - Open a browser tab at http://localhost:8787/ to see your worker in action
* - Run "npm run deploy" to publish your worker
*
* Learn more at https://developers.cloudflare.com/workers/
*/
export default {
async fetch(request, env) {
const url = new URL(request.url);
const key = url.pathname.slice(1).replace(/2$/, '');

const object = await env.OPEN_SOURCE_WEBSITE_ASSETS_BUCKET.get(key);
if (!object) {
return await fetch('https://zed.dev/404');
}

const headers = new Headers();
object.writeHttpMetadata(headers);
headers.set('etag', object.httpEtag);

return new Response(object.body, {
headers,
});
},
};
8 changes: 8 additions & 0 deletions .cloudflare/open-source-website-assets/wrangler.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name = "open-source-website-assets"
main = "src/worker.js"
compatibility_date = "2024-05-15"
workers_dev = true

[[r2_buckets]]
binding = 'OPEN_SOURCE_WEBSITE_ASSETS_BUCKET'
bucket_name = 'zed-open-source-website-assets'
56 changes: 56 additions & 0 deletions .github/workflows/deploy_cloudflare.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Deploy Docs

on:
push:
branches:
- main

jobs:
deploy-docs:
name: Deploy Docs
runs-on: ubuntu-latest

steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
clean: false

- name: Setup mdBook
uses: peaceiris/actions-mdbook@v2
with:
mdbook-version: "0.4.37"

- name: Build book
run: |
set -euo pipefail
mkdir -p target/deploy
mdbook build ./docs --dest-dir=../target/deploy/docs/
- name: Deploy Docs
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy target/deploy --project-name=docs

- name: Deploy Install
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: r2 object put -f script/install.sh zed-open-source-website-assets/install.sh

- name: Deploy Docs Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: deploy .cloudflare/docs-proxy/src/worker.js

- name: Deploy Install Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: deploy .cloudflare/docs-proxy/src/worker.js
35 changes: 0 additions & 35 deletions .github/workflows/deploy_docs.yml

This file was deleted.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ DerivedData/
.venv
.blob_store
.vscode
.wrangler

0 comments on commit 247825b

Please sign in to comment.