Add GitHub Actions workflow and IAM policies

This commit is contained in:
greg
2025-12-21 19:51:39 -08:00
parent 990c8971fb
commit 013e0fdf1d
3 changed files with 80 additions and 0 deletions

33
.github/workflows/deploy.yaml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: "☁️ CDN Deploy"
on:
push:
branches: [ main ]
paths:
- 'content/**'
permissions:
id-token: write
contents: read
jobs:
deploy:
name: "📦 Sync to S3"
runs-on: ubuntu-latest
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Configure AWS Credentials"
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-east-1
- name: "Sync to S3"
run: |
aws s3 sync content/ s3://${{ secrets.S3_BUCKET_NAME }}/ --delete --cache-control "public, max-age=31536000"
- name: "Invalidate CloudFront"
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"

View File

@@ -0,0 +1,27 @@
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::cdn.cloud.gregh.dev",
"arn:aws:s3:::cdn.cloud.gregh.dev/*"
]
},
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation",
"cloudfront:ListInvalidations"
],
"Resource": "arn:aws:cloudfront::471112517070:distribution/E31WM23A8TGWZM"
}
]
}

View File

@@ -0,0 +1,20 @@
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::471112517070:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
},
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:ghndrx/cdn-gregh-dev:*"
}
}
}
]
}