ruby-on-rails - 如何在谷歌云上使用 gem?
问题描述
我在 gcloud 上运行 hema 时遇到问题。
更准确地说,随着命令的执行whenever --update-crontab
但我也不确定是否安装了 cron 并且我不明白如何检查它。有人能遇到吗?
我正在使用 gitlab CI 进行部署。而这个 gitlab-ci.yml
image: registry.gitlab.com/varuno/photo-booth-admin
stages:
- deploy
before_script:
- export PATH="/google-cloud-sdk/bin:$PATH"
deploy:
stage: deploy
environment: production
only:
- master
script:
- bundle install
- cp ./config/database.sample.yml ./config/database.yml
- echo $MASTER_KEY > ./config/master.key
- echo $DEPLOY_KEY_FILE > ./config/google-key.json
- gcloud auth activate-service-account --key-file ./config/google-key.json
- gcloud config set project $PROJECT_ID_PRODUCTION
- gcloud info
- gcloud app deploy --quiet --stop-previous-version --promote --version=photo-booth
- gcloud projects add-iam-policy-binding photo-booth-201515 --member=serviceAccount:22202411108@cloudbuild.gserviceaccount.com --role=roles/editor
- bundle exec rake appengine:exec -- bundle exec rake db:migrate
# - bundle exec rake appengine:exec -- bundle exec rake db:seed
解决方案
我认为您不能whenever
在 GAE 上使用 gem,因为 GAE 不使用 *nix 样式cron
服务。
GAE cron 服务实际上只是GET
根据配置的时间表对某些配置的 URL 的请求的生成器。这些 URL 的应用程序处理程序是实际执行作业的处理程序。请参阅使用 cron.yaml 调度作业
要使用 GAE cron 服务,您需要在应用程序中创建一个cron.yaml
配置文件并将其部署到 GAE。当然,您的应用代码应该包含相应的 URL 处理程序。
要从 CI 系统部署cron.yaml
文件,您需要将此命令添加到您的gitlab-ci.yml
,可能就在现有gcloud app deploy ...
命令之后(请参阅上传 cron 作业):
gcloud app deploy cron.yaml
推荐阅读
- amazon-s3 - 跨区域或不同账户共享 lambda 层
- sql - 需要获取过去 3 天使用的物品数量以及去年使用的物品数量
- localhost - 无法连接到谷歌 colab 中的本地运行时
- swift - 在给定时间范围内iOS视频帧的特定区域添加像素化过滤器
- php - laravel 如果请求是刀片中的用户名
- c - 用于随机数和 64 位无符号整数乘法的 MATLAB 线性同余生成器 (LCG)
- python - 如何添加图形字符串值的标签,例如第一层第二层第三而不是层号
- python - SQL 查询在 {key:value} 对中返回缺少键(列名)的元组输出
- javascript - 获取带有表单数据的请求以进行身份验证反应
- php - 带有切换复选框的 Laravel 提交表单