我创建了一个Jenkins作业,该作业在每次部署前端项目时都会使缓存无效。问题是,尽管AWS网站显示缓存正在失效,但是当作业完成时,并没有完全清除缓存,因此我需要通过AWS网站手动使它失效。
我使用的自动使缓存无效的方法是通过执行以下命令的aws container:
aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths /* > output.json
输出文件将包含一个json,可在其中获取不同键:值。我使用的两个是Id
和Status
。创建失效后,我执行另一个流水线步骤:
aws cloudfront get-invalidation --distribution-id ${DISTRIBUTION_ID} --id ${id_invalidator} > status_invalidation.json
使用先前的命令,我每隔50秒(通过sleep 50
)向API请求无效状态。当验证返回“状态=已完成”时,作业完成。这种情况在while循环内。
有人知道为什么会这样吗?
答案 0 :(得分:3)
您始终必须在命令行上用*
字符引用表达式,以避免局部shell扩展。正确的语法是这样的:
--paths '/*'
否则,您将根据本地文件系统根目录中的内容(由*
捕获,并由Shell展开)来使名称无效。