Skip to content

Commit c4e8677

Browse files
clawdbot-glitch003glitch003claude
authored
ci: add manual workflow to push prod envs and start a Phala CVM (#343)
Prod sibling of manual_phala-envs-update.yml. Pushes Stripe LIVE keys and chipotle-prod GCP project to a freshly-provisioned CVM during the prod6 → prod2 migration. Mirrors the env block in deploy-prod-1-propose.yml. Co-authored-by: Chris Cassano <chris@litprotocol.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
1 parent a2f7baa commit c4e8677

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Push sealed environment variables to a specific Phala CVM and start it (PROD).
2+
#
3+
# Prod-flavored sibling of manual_phala-envs-update.yml. Used during CVM
4+
# migrations (e.g. prod6 → prod2) to bootstrap a freshly-provisioned chipotle-prod
5+
# replica with the same live env vars CI would normally push during the
6+
# tag-triggered deploy-prod-* flow.
7+
#
8+
# Differences from the next/staging variant:
9+
# - Stripe LIVE keys (STRIPE_SECRET_KEY / STRIPE_PUBLISHABLE_KEY), not sandbox
10+
# - Defaults: CERTBOT_DOMAIN=api.chipotle.litprotocol.com, GCP_PROJECT_ID=chipotle-prod
11+
#
12+
# Env block mirrors deploy-prod-1-propose.yml:341-372 (encryptEnvVars step).
13+
#
14+
# Required secrets:
15+
# PHALA_CLOUD_API_KEY - Phala Cloud API key
16+
# PHALA_DSTACKAPP_PRIVATE_KEY - DstackApp owner key (unused for prod Safe-owned app,
17+
# kept for parity with `phala envs update` CLI args)
18+
# BASE_CHAIN_RPC - Base mainnet RPC URL
19+
# GCP_SERVICE_ACCOUNT_JSON - GCP service account key
20+
# STRIPE_SECRET_KEY - Stripe LIVE secret key
21+
# STRIPE_PUBLISHABLE_KEY - Stripe LIVE publishable key
22+
# CERTBOT_AWS_ACCESS_KEY_ID - Route 53 IAM access key
23+
# CERTBOT_AWS_SECRET_ACCESS_KEY - Route 53 IAM secret key
24+
# CERTBOT_AWS_ROLE_ARN - IAM role ARN for STS assumption
25+
#
26+
# Required vars:
27+
# CERTBOT_AWS_REGION - AWS region for STS endpoint
28+
29+
name: Phala Envs Update + Start (Prod, manual)
30+
31+
permissions:
32+
contents: read
33+
34+
on:
35+
workflow_dispatch:
36+
inputs:
37+
cvm_id:
38+
description: "Target CVM (UUID, app_id, instance_id, or name) — e.g. cvm_qwrMBqKl"
39+
required: true
40+
type: string
41+
certbot_domain:
42+
description: "CERTBOT_DOMAIN for dstack-ingress. Leave blank to skip ingress cert acquisition."
43+
required: false
44+
type: string
45+
default: "api.chipotle.litprotocol.com"
46+
gcp_project_id:
47+
description: "GCP_PROJECT_ID for otel-collector"
48+
required: false
49+
type: string
50+
default: "chipotle-prod"
51+
start:
52+
description: "Start the CVM after pushing envs"
53+
required: false
54+
type: boolean
55+
default: true
56+
57+
jobs:
58+
envs-update:
59+
runs-on: self-hosted
60+
steps:
61+
- uses: actions/setup-node@v4
62+
with:
63+
node-version: "20"
64+
65+
- name: Install Phala CLI
66+
run: npm install -g phala
67+
68+
- name: Push sealed envs to CVM
69+
env:
70+
PHALA_CLOUD_API_KEY: ${{ secrets.PHALA_CLOUD_API_KEY }}
71+
PRIVATE_KEY: ${{ secrets.PHALA_DSTACKAPP_PRIVATE_KEY }}
72+
ETH_RPC_URL: ${{ secrets.BASE_CHAIN_RPC }}
73+
BASE_CHAIN_RPC: ${{ secrets.BASE_CHAIN_RPC }}
74+
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
75+
STRIPE_PUBLISHABLE_KEY: ${{ secrets.STRIPE_PUBLISHABLE_KEY }}
76+
GCP_SERVICE_ACCOUNT_JSON: ${{ secrets.GCP_SERVICE_ACCOUNT_JSON }}
77+
CERTBOT_AWS_ACCESS_KEY_ID: ${{ secrets.CERTBOT_AWS_ACCESS_KEY_ID }}
78+
CERTBOT_AWS_SECRET_ACCESS_KEY: ${{ secrets.CERTBOT_AWS_SECRET_ACCESS_KEY }}
79+
CERTBOT_AWS_ROLE_ARN: ${{ secrets.CERTBOT_AWS_ROLE_ARN }}
80+
run: |
81+
phala envs update "${{ inputs.cvm_id }}" \
82+
-e "STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY" \
83+
-e "STRIPE_PUBLISHABLE_KEY=$STRIPE_PUBLISHABLE_KEY" \
84+
-e "GCP_SERVICE_ACCOUNT_JSON=$GCP_SERVICE_ACCOUNT_JSON" \
85+
-e "GCP_PROJECT_ID=${{ inputs.gcp_project_id }}" \
86+
-e "BASE_CHAIN_RPC=$BASE_CHAIN_RPC" \
87+
-e "CERTBOT_DOMAIN=${{ inputs.certbot_domain }}" \
88+
-e "CERTBOT_AWS_ACCESS_KEY_ID=$CERTBOT_AWS_ACCESS_KEY_ID" \
89+
-e "CERTBOT_AWS_SECRET_ACCESS_KEY=$CERTBOT_AWS_SECRET_ACCESS_KEY" \
90+
-e "CERTBOT_AWS_ROLE_ARN=$CERTBOT_AWS_ROLE_ARN" \
91+
-e "CERTBOT_AWS_REGION=${{ vars.CERTBOT_AWS_REGION }}"
92+
93+
- name: Start CVM
94+
if: inputs.start
95+
env:
96+
PHALA_CLOUD_API_KEY: ${{ secrets.PHALA_CLOUD_API_KEY }}
97+
run: |
98+
phala cvms start "${{ inputs.cvm_id }}"
99+
100+
- name: Show CVM status
101+
env:
102+
PHALA_CLOUD_API_KEY: ${{ secrets.PHALA_CLOUD_API_KEY }}
103+
run: |
104+
phala cvms get "${{ inputs.cvm_id }}"

0 commit comments

Comments
 (0)