【发布时间】:2020-08-19 21:57:35
【问题描述】:
每次合并到 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:我知道我需要编写测试????
【问题讨论】:
标签: vue.js amazon-s3 continuous-deployment cache-control github-actions