首页 > 解决方案 > 如何在谷歌云上使用 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

标签: ruby-on-railsgoogle-app-enginecrongcloud

解决方案


我认为您不能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

推荐阅读