Python実践入門の内容にしたがって、初めてCircleCIなるものを試してみました。誰もが通る道だとは思いますが、とりあえず安定のビルドエラーに遭遇。
エラーだということはわかりますが、どこ(何行目)がエラーなのかは出してくれないようです。このままだと試行錯誤するたびに git push しないといけないのかと思っていましたが、ローカル側でテストしてくれる circleci というコマンドがあるようです。とりあえず config.yml ファイルの文法チェックのためだけに入れてみました。
本家の推奨手順通り、Chocolatey経由でインストールします。PowerShell を管理者権限で開いてchocolateyをインストールし、その後 choco コマンドで circleci をインストールします。
PS C:\Windows\system32> Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
PS C:\Windows\system32> choco install circleci-cli -y
この手順の場合、circleci コマンドは C:\ProgramData\chocolatey\bin 配下にインストールされます。このパスはシステム環境変数のパスに自動的に追加されます。
この後、PowerShell のセッション( or Windows Terminal / VSCode のターミナル)等を終了/再起動するとパスが通って起動できるようになります。
PS C:\Users\hotta> circleci
Use CircleCI from the command line.
This project is the seed for CircleCI's new command-line application.
For more help, see the documentation here: https://circleci.com/docs/2.0/local-cli/
Usage:
circleci [command]
Available Commands:
config Operate on build config files
context Contexts provide a mechanism for securing and sharing environment variables across projects. The environment variables are defined as name/value pairs and are injected at runtime.
diagnostic Check the status of your CircleCI CLI.
help Help about any command
local Debug jobs on the local machine
namespace Operate on namespaces
open Open the current project in the browser.
orb Operate on orbs
setup Setup the CLI with your credentials
update Update the tool to the latest version
version Display version information
Flags:
-h, --help help for circleci
--host string URL to your CircleCI host, also CIRCLECI_CLI_HOST (default "https://circleci.com")
--skip-update-check Skip the check for updates check run before every command.
--token string your token for using CircleCI, also CIRCLECI_CLI_TOKEN
Use "circleci [command] --help" for more information about a command.
試しに VSCode を再起動した後、プロジェクトのディレクトリでターミナルを開き、バリデーションを実行してみました。
PS C:\Users\hotta\Projects\lgtm> circleci config validate
Error: Config does not conform to schema: {:workflows {:all {:jobs [nil {:test (not (map? nil)), :requires (not (map? a-clojure.lang.LazySeq))}]}}}
これで git push する前でも自分で文法チェックすることができるようにはなりました。しかしエラーメッセージは当然のごとく CircleCI が出すものと同じなので、どこが間違ってるのかがいまひとつわかりません(汗)。ansible といっしょで、慣れるしかなさそうです。ちなみに上記の場合、requires: の子供をインデントで字下げしていないのが敗因でした。その後数回の試行錯誤を経て、無事最初のビルドが通りました。これが CircleCI における Hello World というところです。