Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Deploy scripts live in the repository | 1 | #!/usr/bin/env bash |
| 2 | # Deploys g1t: every part, or the ones named, in the order they depend on | |
| 3 | # each other. Each part's D1 migrations are applied before its code goes | |
| 4 | # out, so new code never meets an old database. | |
| 5 | # | |
| 6 | # scripts/deploy.sh # everything | |
| 7 | # scripts/deploy.sh billing web # just these, still in order | |
| 8 | # | |
| 9 | # Uses your `wrangler login`. The repository's .env may hold a token for | |
| 10 | # other tools; it is ignored here unless you set CLOUDFLARE_DEPLOY_TOKEN. | |
| 11 | set -euo pipefail | |
| 12 | ||
| 13 | ROOT="$(cd "$(dirname "$0")/.." && pwd)" | |
| 14 | export CLOUDFLARE_API_TOKEN="${CLOUDFLARE_DEPLOY_TOKEN:-}" | |
| 15 | ||
| 16 | # Dependency order: what others bind to goes first. | |
| 17 | ORDER=( | |
| 18 | services/events | |
| 19 | services/identity | |
| 20 | services/repos | |
| 21 | services/work | |
| Search across all of g1t, Explore, and a command palette | 22 | services/search |
| Projects: what a workspace builds and runs, first on every page | 23 | services/projects |
| Deploy scripts live in the repository | 24 | services/billing |
| 25 | services/integrations | |
| 26 | services/webhooks | |
| 27 | services/actions | |
| 28 | services/models | |
| 29 | services/deployments | |
| 30 | services/runner | |
| Invite-only launch: sign in with GitHub, repository access and lifecycle, many emails, a new look | 31 | services/security |
| 32 | services/context | |
| Deploy scripts live in the repository | 33 | apps/api |
| 34 | services/pages | |
| Social cards for every page: og.g1t.sh | 35 | services/og |
| status.g1t.sh with incident management, invites that land you in the workspace, settings as pages, usage without quotas | 36 | # The status page: binds only to billing, checks the rest over the internet. |
| 37 | apps/status | |
| Deploy scripts live in the repository | 38 | apps/web |
| Billing accounts, terms and enterprises; g1t is no longer free | 39 | apps/sudo |
| Deploy scripts live in the repository | 40 | apps/docs |
| 41 | ) | |
| 42 | ||
| 43 | wanted() { | |
| 44 | [ $# -eq 0 ] && return 0 | |
| 45 | local dir="$1"; shift | |
| 46 | for name in "${PICK[@]}"; do | |
| 47 | [ "$dir" = "$name" ] || [ "$(basename "$dir")" = "$name" ] && return 0 | |
| 48 | done | |
| 49 | return 1 | |
| 50 | } | |
| 51 | ||
| 52 | PICK=("$@") | |
| 53 | for dir in "${ORDER[@]}"; do | |
| 54 | [ ${#PICK[@]} -eq 0 ] || wanted "$dir" || continue | |
| 55 | echo "== $dir" | |
| 56 | cd "$ROOT/$dir" | |
| 57 | db=$(grep -o '"database_name": *"[^"]*"' wrangler.jsonc 2>/dev/null | head -1 | sed 's/.*"\([^"]*\)"$/\1/' || true) | |
| 58 | if [ -n "$db" ] && [ -d migrations ]; then | |
| 59 | npx wrangler d1 migrations apply "$db" --remote | |
| 60 | fi | |
| 61 | if grep -q '"deploy": "[^"]*build' package.json 2>/dev/null; then | |
| 62 | npm run deploy | |
| 63 | else | |
| 64 | npx wrangler deploy | |
| 65 | fi | |
| 66 | done | |
| 67 | echo "== Deployed." |