Я загружаю приложение vue в свою корзину s3 при каждом слиянии для мастеринга. Моя проблема в том, что аннулирование кеша полностью не работает. Мой следующий шаг - добавление метаданных к объекту index.html
на каждые sh pu. Для этого я хотел спросить, как добавить его в действие github jakejarvis/s3-sync-action
(https://github.com/marketplace/actions/s3-sync)?
Или мне нужно использовать другое действие github для выполнения sh, что ?
Мой рабочий процесс на данный момент выглядит так:
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: Я знаю, что нужно писать тесты ?