CircleCI に導入された circleci コマンドでローカルでも CircleCI の挙動を確認できるようになった。

…というのは嘘である。

気づいただけで、ふたつ不満がある。たとえば CircleCI の cron は、システムレベルの cron がサポートする */x (x: 整数) のような記法をサポートしていない。つまり、5分おきにジョブを走らせたいときに */5 * * * *書けない 。かわりに 5,10,15,20,25,30,35,40,45,50,55 * * * * と書かなければならない。しかし、この問題は circleci コマンドの文法チェックでは検知できない。わたしは、これをリモートに push したあとで「うーん、動かないなぁ」と思いながら色々とぐぐって問題を発見した。つらい。

また、ローカル環境で次のように .circleci/config.yml を書くと Error: error authentication with ECR: AWS Credentials not found と怒られる。

version: 2
jobs:
  build:
    docker:
      - image: 00000000000.dkr.ecr.ap-northeast-1.amazonaws.com/my-image:latest
        aws_auth:
          aws_access_key_id: $AWS_ACCESS_KEY_ID
          aws_secret_access_key: $AWS_SECRET_ACCESS
    steps:
      - run:
          name: Greeting
          command: echo Hello, world.
$ circleci build
                                                   
Build-agent version 0.0.5895-01cdb92 (2018-05-29T20:07:10+0000)
Error: error authentication with ECR: AWS Credentials not found
                                    
Step failed
Task failed 

つまりは $AWS_ACCESS_KEY_ID$AWS_SECRET_ACCESS_KEYcircleci コマンドが認識できていないということなのだと思う (これらの環境変数が設定されていても)。しばらく「うーん…うーん」と思ったけれど、リモートに push したらすんなり動いたので、悩んだ時間だけ損であった。

この手の「リモートの機能をローカルでも実現する」ようなツールは、単なるシミュレータ以上のものではないな、という月並みな感想をもった。実機確認に勝るものなし。面倒だけど、結局その方が時間を節約できる。