Skip to content

Commit 5d41756

Browse files
Add Supabase env vars to build
1 parent 05bfc3a commit 5d41756

14 files changed

Lines changed: 903 additions & 1 deletion

.github/workflows/deploy.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,16 @@ jobs:
2222

2323
- name: Build
2424
run: npm run build
25+
env:
26+
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
27+
VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
2528

2629
- name: Deploy to S3
2730
run: |
2831
aws s3 sync dist/ s3://${{ secrets.S3_BUCKET }} --delete
29-
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
32+
if [ -n "${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}" ]; then
33+
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
34+
fi
3035
env:
3136
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
3237
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

cloudfront-config-basic.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"CallerReference": "ccai-collections-cf-1754517629",
3+
"DefaultRootObject": "index.html",
4+
"Comment": "CCAI Collections CloudFront Distribution",
5+
"Enabled": true,
6+
"Origins": {
7+
"Quantity": 1,
8+
"Items": [
9+
{
10+
"Id": "ccai-collections-s3-origin",
11+
"DomainName": "ccai-collections-1754517629.s3-website-us-east-1.amazonaws.com",
12+
"CustomOriginConfig": {
13+
"HTTPPort": 80,
14+
"HTTPSPort": 443,
15+
"OriginProtocolPolicy": "http-only"
16+
}
17+
}
18+
]
19+
},
20+
"DefaultCacheBehavior": {
21+
"TargetOriginId": "ccai-collections-s3-origin",
22+
"ViewerProtocolPolicy": "redirect-to-https",
23+
"MinTTL": 0,
24+
"ForwardedValues": {
25+
"QueryString": false,
26+
"Cookies": {
27+
"Forward": "none"
28+
}
29+
},
30+
"TrustedSigners": {
31+
"Enabled": false,
32+
"Quantity": 0
33+
}
34+
},
35+
"CustomErrorResponses": {
36+
"Quantity": 1,
37+
"Items": [
38+
{
39+
"ErrorCode": 404,
40+
"ResponsePagePath": "/index.html",
41+
"ResponseCode": "200",
42+
"ErrorCachingMinTTL": 300
43+
}
44+
]
45+
},
46+
"PriceClass": "PriceClass_100"
47+
}

cloudfront-config.json

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"CallerReference": "ccai-collections-cf-1754517629",
3+
"Aliases": {
4+
"Quantity": 1,
5+
"Items": ["collections.cloudcontactai.com"]
6+
},
7+
"DefaultRootObject": "index.html",
8+
"Comment": "CCAI Collections CloudFront Distribution",
9+
"Enabled": true,
10+
"Origins": {
11+
"Quantity": 1,
12+
"Items": [
13+
{
14+
"Id": "ccai-collections-s3-origin",
15+
"DomainName": "ccai-collections-1754517629.s3-website-us-east-1.amazonaws.com",
16+
"CustomOriginConfig": {
17+
"HTTPPort": 80,
18+
"HTTPSPort": 443,
19+
"OriginProtocolPolicy": "http-only"
20+
}
21+
}
22+
]
23+
},
24+
"DefaultCacheBehavior": {
25+
"TargetOriginId": "ccai-collections-s3-origin",
26+
"ViewerProtocolPolicy": "redirect-to-https",
27+
"MinTTL": 0,
28+
"ForwardedValues": {
29+
"QueryString": false,
30+
"Cookies": {
31+
"Forward": "none"
32+
}
33+
},
34+
"TrustedSigners": {
35+
"Enabled": false,
36+
"Quantity": 0
37+
}
38+
},
39+
"CustomErrorResponses": {
40+
"Quantity": 1,
41+
"Items": [
42+
{
43+
"ErrorCode": 404,
44+
"ResponsePagePath": "/index.html",
45+
"ResponseCode": "200",
46+
"ErrorCachingMinTTL": 300
47+
}
48+
]
49+
},
50+
"PriceClass": "PriceClass_100"
51+
}

cloudfront-info.env

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
DISTRIBUTION_ID=E3UJKJTM7LVNOY
2+
CLOUDFRONT_DOMAIN=d1p5d5yy9wopgn.cloudfront.net
3+
CERT_ARN=arn:aws:acm:us-east-1:302740385673:certificate/572043a6-8b8f-4210-bcb4-c7966a95a76c

complete-setup.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash
2+
3+
source cloudfront-info.env
4+
5+
echo "CloudFront Distribution Created:"
6+
echo "Distribution ID: $DISTRIBUTION_ID"
7+
echo "CloudFront Domain: $CLOUDFRONT_DOMAIN"
8+
echo "Certificate ARN: $CERT_ARN"
9+
echo ""
10+
11+
echo "Next steps to complete setup:"
12+
echo ""
13+
echo "1. Validate SSL certificate via DNS:"
14+
echo " aws acm describe-certificate --certificate-arn $CERT_ARN --region us-east-1"
15+
echo " Add the DNS validation record to your domain"
16+
echo ""
17+
echo "2. Once certificate is validated, get current distribution config:"
18+
echo " aws cloudfront get-distribution-config --id $DISTRIBUTION_ID > current-config.json"
19+
echo ""
20+
echo "3. Update distribution with custom domain (after certificate validation):"
21+
echo " # This will be done automatically once certificate is validated"
22+
echo ""
23+
echo "4. Create DNS CNAME record:"
24+
echo " collections.cloudcontactai.com -> $CLOUDFRONT_DOMAIN"
25+
echo ""
26+
echo "Current CloudFront URL (works now): https://$CLOUDFRONT_DOMAIN"

current-config.json

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"CallerReference": "ccai-collections-cf-1754517629",
3+
"Aliases": {
4+
"Quantity": 0
5+
},
6+
"DefaultRootObject": "index.html",
7+
"Origins": {
8+
"Quantity": 1,
9+
"Items": [
10+
{
11+
"Id": "ccai-collections-s3-origin",
12+
"DomainName": "ccai-collections-1754517629.s3-website-us-east-1.amazonaws.com",
13+
"OriginPath": "",
14+
"CustomHeaders": {
15+
"Quantity": 0
16+
},
17+
"CustomOriginConfig": {
18+
"HTTPPort": 80,
19+
"HTTPSPort": 443,
20+
"OriginProtocolPolicy": "http-only",
21+
"OriginSslProtocols": {
22+
"Quantity": 3,
23+
"Items": [
24+
"TLSv1",
25+
"TLSv1.1",
26+
"TLSv1.2"
27+
]
28+
},
29+
"OriginReadTimeout": 30,
30+
"OriginKeepaliveTimeout": 5
31+
},
32+
"ConnectionAttempts": 3,
33+
"ConnectionTimeout": 10,
34+
"OriginShield": {
35+
"Enabled": false
36+
},
37+
"OriginAccessControlId": ""
38+
}
39+
]
40+
},
41+
"OriginGroups": {
42+
"Quantity": 0
43+
},
44+
"DefaultCacheBehavior": {
45+
"TargetOriginId": "ccai-collections-s3-origin",
46+
"TrustedSigners": {
47+
"Enabled": false,
48+
"Quantity": 0
49+
},
50+
"TrustedKeyGroups": {
51+
"Enabled": false,
52+
"Quantity": 0
53+
},
54+
"ViewerProtocolPolicy": "redirect-to-https",
55+
"AllowedMethods": {
56+
"Quantity": 2,
57+
"Items": [
58+
"HEAD",
59+
"GET"
60+
],
61+
"CachedMethods": {
62+
"Quantity": 2,
63+
"Items": [
64+
"HEAD",
65+
"GET"
66+
]
67+
}
68+
},
69+
"SmoothStreaming": false,
70+
"Compress": false,
71+
"LambdaFunctionAssociations": {
72+
"Quantity": 0
73+
},
74+
"FunctionAssociations": {
75+
"Quantity": 0
76+
},
77+
"FieldLevelEncryptionId": "",
78+
"GrpcConfig": {
79+
"Enabled": false
80+
},
81+
"ForwardedValues": {
82+
"QueryString": false,
83+
"Cookies": {
84+
"Forward": "none"
85+
},
86+
"Headers": {
87+
"Quantity": 0
88+
},
89+
"QueryStringCacheKeys": {
90+
"Quantity": 0
91+
}
92+
},
93+
"MinTTL": 0,
94+
"DefaultTTL": 86400,
95+
"MaxTTL": 31536000
96+
},
97+
"CacheBehaviors": {
98+
"Quantity": 0
99+
},
100+
"CustomErrorResponses": {
101+
"Quantity": 1,
102+
"Items": [
103+
{
104+
"ErrorCode": 404,
105+
"ResponsePagePath": "/index.html",
106+
"ResponseCode": "200",
107+
"ErrorCachingMinTTL": 300
108+
}
109+
]
110+
},
111+
"Comment": "CCAI Collections CloudFront Distribution",
112+
"Logging": {
113+
"Enabled": false,
114+
"IncludeCookies": false,
115+
"Bucket": "",
116+
"Prefix": ""
117+
},
118+
"PriceClass": "PriceClass_100",
119+
"Enabled": true,
120+
"ViewerCertificate": {
121+
"CloudFrontDefaultCertificate": true,
122+
"SSLSupportMethod": "vip",
123+
"MinimumProtocolVersion": "TLSv1",
124+
"CertificateSource": "cloudfront"
125+
},
126+
"Restrictions": {
127+
"GeoRestriction": {
128+
"RestrictionType": "none",
129+
"Quantity": 0
130+
}
131+
},
132+
"WebACLId": "",
133+
"HttpVersion": "http2",
134+
"IsIPV6Enabled": true,
135+
"ContinuousDeploymentPolicyId": "",
136+
"Staging": false
137+
}

deploy-cloudfront.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
3+
# Create CloudFront distribution
4+
echo "Creating CloudFront distribution..."
5+
DISTRIBUTION_ID=$(aws cloudfront create-distribution --distribution-config file://cloudfront-config.json --query 'Distribution.Id' --output text)
6+
7+
if [ $? -eq 0 ]; then
8+
echo "CloudFront distribution created successfully!"
9+
echo "Distribution ID: $DISTRIBUTION_ID"
10+
11+
# Get the CloudFront domain name
12+
CLOUDFRONT_DOMAIN=$(aws cloudfront get-distribution --id $DISTRIBUTION_ID --query 'Distribution.DomainName' --output text)
13+
echo "CloudFront Domain: $CLOUDFRONT_DOMAIN"
14+
15+
echo ""
16+
echo "Next steps:"
17+
echo "1. Wait for distribution to deploy (15-20 minutes)"
18+
echo "2. Create SSL certificate for collections.cloudcontactai.com in AWS Certificate Manager"
19+
echo "3. Update the distribution to use the SSL certificate"
20+
echo "4. Create CNAME record: collections.cloudcontactai.com -> $CLOUDFRONT_DOMAIN"
21+
22+
# Save distribution info
23+
echo "DISTRIBUTION_ID=$DISTRIBUTION_ID" > cloudfront-info.env
24+
echo "CLOUDFRONT_DOMAIN=$CLOUDFRONT_DOMAIN" >> cloudfront-info.env
25+
26+
else
27+
echo "Failed to create CloudFront distribution"
28+
exit 1
29+
fi

0 commit comments

Comments
 (0)