以前↑な記事を書きました。
この時は gem の update だけでよかったけど Yarn でパッケージをしているのでそっちも定期的に update していきたい
ということで Yarn で管理しているパッケージの定期更新に使ったのがこちら
自分の場合は gem と yarnで管理しているパッケージのアップデートの確認を同じタイミングでPR作成してほしかったので次のような CircleCI の設定をしました。
version: 2 jobs: build: docker: - image: ruby:2.5.1-alpine steps: - run: &setup_requirements name: Install dependencies command: | apk add --update --no-cache \ git \ openssh-client \ tar \ gzip \ ca-certificates \ tzdata \ yarn \ gcc \ build-base \ libxml2-dev \ libxslt-dev - restore_cache: &restore_gems_cache name: Restore bundler cache keys: - gems-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }} - gems-{{ .Environment.COMMON_CACHE_KEY }}- continuous_bundle_update: docker: - image: ruby:2.5.1-alpine steps: - run: *setup_requirements - checkout - restore_cache: *restore_gems_cache - run: name: Setup requirements for continuous bundle update command: gem install -N circleci-bundle-update-pr - deploy: name: Continuous bundle update command: circleci-bundle-update-pr hatappi hatappi@hatappi.me $CIRCLE_BRANCH continuous_yarn_upgrade: docker: - image: node:10-alpine steps: - run: apk add --update --no-cache git openssh-client python make g++ - checkout - run: yarn global add ci-yarn-upgrade@0.7.2 - run: yarn install - run: ci-yarn-upgrade --execute --verbose workflows: version: 2 build: jobs: - build nightly: triggers: - schedule: cron: "00 10 * * 5" filters: branches: only: master jobs: - continuous_bundle_update - continuous_yarn_upgrade
これで金曜日の19時になるとgem, yarnで管理しているパッケージで最新のものがあればPRを作ってくれる。
解説が必要なところはおそらく今回から使用している ci-yarn-upgrade
のインストールをする時にバージョンを指定しているところかなと思う。
2019年1月18日時点で最新はv0.7.3なんだけど、これを使うとエラーになってしまう。
手元でなおったのを確認したPRは作ったのでマージされると嬉しい。
ということで今はエラーになる前のバージョンのv0.7.2を使用しています。
本当はこうしたかった
Anketでこれを導入したんだけどAnketはnodeで作られたbotとRailsのアプリケーションの2つのサービスから成り立っていてそれぞれリポジトリを用意しているのでCircleCIの設定をそれぞれに行う必要がある。
GITHUB_ACCESS_TOKENとか環境変数をどちらにも設定するのが面倒だったのでプロジェクトをまたいで環境変数を使うために context を使用したかった。
ただこれ schedule で定義された context は使えないっぽい??
discuss.circleci.com