いけむランド

はてダからやってきました

AppVeyor での Scheduled build を CircleCI で実現してみた

AppVeyor での Scheduled build は有料とのことなので CircleCI で実現してみた。

www.appveyor.com


CircleCI の方の scheduled build を使い、AppVeyor API を叩くようにしました。

AppVeyor API を叩くために今回は Ruby 製の veyor を使用しました。

github.com

(AppVeyor API key を使うのですが、v1 と v2 があることにしばらく気づかずにハマりました。)

.circleci/config.yml は以下のような感じです。(別途、環境変数 APPVEYOR_ACCOUNT_NAME と APPVEYOR_API_TOKEN の設定の必要があります)

version: 2

jobs:
  appveyor:
    docker:
      - image: ruby:2.6
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
      - run:
          name: Install dependencies
          command: |
            bundle install --jobs=4 --retry=3 --path vendor/bundle
      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
      - run:
          name: Execute vayor
          command: |
            bundle exec veyor start `basename ${CIRCLE_REPOSITORY_URL} | sed -e 's/.git$//g'` --branch=${CIRCLE_BRANCH}
workflows:
  version: 2
  daily:
    triggers:
      - schedule:
          cron: "0 21 * * *" # JST 06:00
    jobs:
      - appveyor


schedule の設定をすると、push しても CircleCI 側は反応しなくなるのでちょっと心配になりますね。