我们正在使用令人敬畏的 Gitlab CI/CD workflow ,并对此过程感到满意 . 每天都会发生很多 Merge Requests ,我们希望确保只要我们的管道工作成功,我们的应用程序就会实时更新 .
例如,只要接受合并请求,我们的主分支也可以部署在分段上 . 这是 gitlab-ci.yml
上的示例 deploy_staging
作业 .
deploy_staging:
type: deploy
script:
- yarn install
- node_modules/ember-cli/bin/ember deploy staging --activate
environment:
name: staging
only:
- master
由于ember是 Single Page Application ,并且一旦新的部署发布并且可用,ember就无法识别新的更改 . 因此我们需要刷新要更新的页面 .
这个想法的另一个缺点是,如果最终用户处于交易中,我们无法刷新页面 . 所以我的想法是在更新可用时发出类似于任何移动应用程序的刷新页面的通知,他们只需转到链接并手动点击更新 .
现在这个问题缩小到了这个范围:
我们如何向正在运行的ember应用程序发送信号,以便我们可以在有可用更新时(在成功传输CI / CD之后)提示通知刷新页面?
1 回答
为此你需要服务工作者:) Service Workers通常是大多数其他网站通知更新的方式 .
对于ember,设置它们非常简单,我们有ember-service-worker来获取缓存和清单,然后我们有ember-service-worke-update-notify来自动通知资产更新 .
虽然,这里有一个PR:https://github.com/topaxi/ember-service-worker-update-notify/pull/3以更自动化的方式通知更新 - 当前方式仅通知刷新和加载缓存资产时的更新 .
我最近打开了这个PR,因为我认为
@pollingInterval={{5000}}
,这将是检查更新的理想间隔,每5秒,我们看看是否有更新 .希望这可以帮助!