如何在Google Cloud上随时使用gem?

时间:2018-06-27 18:44:43

标签: ruby-on-rails google-app-engine cron gcloud

无论何时在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

1 个答案:

答案 0 :(得分:0)

我认为您不能在GAE上使用whenever gem,因为GAE不使用* nix样式的cron服务。

GAE cron服务实际上只是根据配置的时间表向某些配置的URL发出GET请求的生成器。这些URL的应用处理程序是实际执行作业的处理程序。参见Scheduling Jobs with cron.yaml

要使用GAE cron服务,您需要在应用程序内部创建一个cron.yaml configuration file并将其部署到GAE。当然,您的应用程序代码应包括相应的URL处理程序。

要从CI系统中部署cron.yaml文件,您可能需要在现有gitlab-ci.yml命令之后立即将此命令添加到gcloud app deploy ...(请参阅Uploading cron jobs ):

gcloud app deploy cron.yaml