-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdeploy.sh
executable file
·62 lines (56 loc) · 3.46 KB
/
deploy.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/sh
# abort on any non-zero exit code
set -e
# ensure required environment variables are defined
if [ -z "$INSTANCE" ] || [ -z "$CF_ACCOUNT_ID" ] || [ -z "$CF_API_TOKEN" ] || [ -z "$CF_CUSTOM_DOMAIN" ] || [ -z "$CF_BACKEND_DO_NAMESPACE" ] || [ -z "$CF_SCRIPT_NAME" ]; then
echo "\$INSTANCE, \$CF_ACCOUNT_ID, \$CF_API_TOKEN, \$CF_CUSTOM_DOMAIN, \$CF_BACKEND_DO_NAMESPACE, and \$CF_SCRIPT_NAME are required"
exit 1
fi
# install deno
DENO_VERSION="v1.46.3"
DENOFLARE_VERSION="674af1a29c14ad9fae49f0839891de97fafee5f0"
curl -fsSL https://deno.land/x/install/install.sh | DENO_INSTALL=./deno-$DENO_VERSION sh -s $DENO_VERSION
# exit early if already deployed
if [ -n "$DEPLOY_SHA" ]; then
echo "DEPLOY_SHA: $DEPLOY_SHA"
DEPLOYED_SHA=$(echo "try { console.log(JSON.parse(await (await fetch('https://$CF_CUSTOM_DOMAIN/info.json')).text()).deploySha) } catch {}" | ./deno-$DENO_VERSION/bin/deno run --allow-net -)
if [ "$DEPLOY_SHA" = "$DEPLOYED_SHA" ]; then
echo "already deployed on $CF_CUSTOM_DOMAIN"
exit 0
fi
echo "DEPLOYED_SHA: $DEPLOYED_SHA"
fi
# run unit tests as a sanity check
NO_COLOR=1 DENO_VERSION=$DENO_VERSION DENOFLARE_VERSION=${DENOFLARE_VERSION} ./deno-$DENO_VERSION/bin/deno test --allow-read
# denoflare push the worker script to cloudflare
NO_COLOR=1 DENO_VERSION=$DENO_VERSION DENOFLARE_VERSION=${DENOFLARE_VERSION} ./deno-$DENO_VERSION/bin/deno run --allow-all https://raw.githubusercontent.com/skymethod/denoflare/$DENOFLARE_VERSION/cli/cli.ts \
push ./worker/worker.ts --account-id $CF_ACCOUNT_ID --api-token $CF_API_TOKEN --custom-domain $CF_CUSTOM_DOMAIN --name $CF_SCRIPT_NAME --logpush \
--compatibility-date 2022-11-30 \
--text-binding instance:$INSTANCE \
--text-binding deployTime:$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--text-binding deployRepositoryUrl:$DEPLOY_REPOSITORY_URL \
--text-binding deploySha:$DEPLOY_SHA \
--text-binding deployFrom:$DEPLOY_FROM \
--text-binding origin:https://$CF_CUSTOM_DOMAIN \
--do-namespace-binding backendNamespace:$CF_BACKEND_DO_NAMESPACE:BackendDO \
--secret-binding adminTokens:$ADMIN_TOKENS \
--secret-binding previewTokens:$PREVIEW_TOKENS \
${REDIRECT_LOG_NOTIFICATION_DELAY_SECONDS:+--text-binding redirectLogNotificationDelaySeconds:$REDIRECT_LOG_NOTIFICATION_DELAY_SECONDS} \
${CF_AE_DATASET:+--ae-dataset-binding dataset1:$CF_AE_DATASET} \
${PRODUCTION_DOMAIN:+--text-binding productionDomain:$PRODUCTION_DOMAIN} \
${CF_ANALYTICS_TOKEN:+--text-binding cfAnalyticsToken:$CF_ANALYTICS_TOKEN} \
${TURNSTILE_SITEKEY:+--text-binding turnstileSitekey:$TURNSTILE_SITEKEY} \
${TURNSTILE_SECRET_KEY:+--secret-binding turnstileSecretKey:$TURNSTILE_SECRET_KEY} \
${PODCAST_INDEX_CREDENTIALS:+--secret-binding podcastIndexCredentials:$PODCAST_INDEX_CREDENTIALS} \
${BLOBS_BUCKET:+--r2-bucket-binding blobsBucket:$BLOBS_BUCKET} \
${RO_BLOBS_BUCKET:+--r2-bucket-binding roBlobsBucket:$RO_BLOBS_BUCKET} \
${RO_RPC_CLIENT_PARAMS:+--text-binding roRpcClientParams:$RO_RPC_CLIENT_PARAMS} \
${KV_NAMESPACE:+--kv-namespace-binding kvNamespace:$KV_NAMESPACE} \
${QUEUE1_NAME:+--queue-binding queue1:$QUEUE1_NAME} \
${QUEUE1_NAME:+--text-binding queue1Name:$QUEUE1_NAME} \
${QUEUE2_NAME:+--queue-binding queue2:$QUEUE2_NAME} \
${QUEUE2_NAME:+--text-binding queue2Name:$QUEUE2_NAME} \
${DEBUG_WEBHOOK_URL:+--secret-binding debugWebhookUrl:$DEBUG_WEBHOOK_URL} \
${BASELIME_EVENTS_URL:+--text-binding baselimeEventsUrl:$BASELIME_EVENTS_URL} \
${BASELIME_API_KEY:+--secret-binding baselimeApiKey:$BASELIME_API_KEY} \
${LIMITER_1:+--ratelimit-binding limiter1:$LIMITER_1}