每次合并到 master 时,我都会将 vue 应用程序上传到我的 s3 存储桶。我的问题是缓存失效并不能完全起作用。我的下一步是在每次推送时向对象 index.html
添加元数据。为此,我想问如何将其添加到 github 操作 jakejarvis/s3-sync-action
( https://github.com/marketplace/actions/s3-sync ) 中?
或者我是否必须使用另一个 github 操作来完成该任务?
我的工作流程目前看起来是这样的:
name: Build
on:
push:
branches: [master]
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: npm install
run: |
npm ci
- name: build
run: |
npm run build
- name: Deploy to S3
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --delete
env:
AWS_S3_BUCKET: ${{ secrets.AWS_STAGING_BUCKET_NAME }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
SOURCE_DIR: 'dist'
- name: Invalidate cloudfront
uses: muratiger/invalidate-cloudfront-and-wait-for-completion-action@master
env:
DISTRIBUTION_ID: ${{ secrets.AWS_STAGING_DISTRIBUTION_ID }}
PATHS: '/*'
AWS_REGION: ${{ secrets.AWS_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
我正在寻找的结果是,每次部署后,index.html
都会有另一个元数据Cache-Control: max-age=0
。目前我正在 s3 管理控制台中手动添加它,这对我来说不是一个好的解决方案。因为每次部署后元数据都会消失。
我找到了有关如何使用 aws-cli 执行此操作的答案,但我不知道是否可以将其添加到我的操作中。
aws s3 cp s3://[mybucket]/index.html s3://[mybucket]/index.html --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=0,public
PS:我知道我需要编写测试🙈
最佳答案
在您的示例中:
with:
args: --acl public-read --delete
args
生效,因为它按原样传递到 aws s3
invocation ,末尾有 $*
:
sh -c "aws s3 sync ${SOURCE_DIR:-.} s3://${AWS_S3_BUCKET}/${DEST_DIR} \
--profile s3-sync-action \
--no-progress \
${ENDPOINT_APPEND} $*"
如果您还想设置--cache-control max-age=0,public
,请将其添加到args
:
with:
args: --acl public-read --delete --cache-control max-age=0,public
关于vue.js - 如何使用 github s3 同步操作将缓存控制设置为 max-age=0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61609774/