はじめに
CircleCIでルートディレクトリと異なるディレクトリでビルドする方法が分からず、調べたのでまとめました。知っていれば簡単です。ビルドステップの設定時に対象ディレクトリを指定するだけでした。
circleci.com
エラー発生時のCircleCIの設定
version: 2.1 orbs: win: circleci/windows@2.2.0 jobs: build: executor: win/default steps: - checkout - run: dotnet build
上記の設定ではルートディレクトリでビルドしようとして、以下のエラーが発生します。
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.
現在のディレクトリにslnファイルやプロジェクトファイルが見つからなかった旨のエラーです。
解決方法は2種類ありました。
解決1:runステップにworking_directory を設定する
run ステップは実行ディレクトリを指定できます。
circleci.com
# stepsの部分だけ抜粋 steps: - checkout - run: working_directory: src command: dotnet build
runステップが実行されるときは「src」ディレクトリで実行されます
解決2:dotnet build コマンドの引数にslnファイルのパスを渡す
dotnet build コマンドは引数にビルドするslnフィルを渡せます。
docs.microsoft.com
# stepsの部分だけ抜粋 steps: - checkout - run: dotnet build src\FizzBuzz.sln
runステップが実行されるときはルートディレクトリで実行されますが、dotnet buildは指定されたslnファイルがビルドされます。
さいごに
- runステップにworking_directoryを設定して実行ディレクトリが変更できます
- working_directoryの設定はビルドに関わらず応用が利きます