ごった煮

色々な事を書いてます

ソリューション内で参照されている nuget パッケージにバージョンアップが来てないかを検出する方法

NuGet パッケージの更新って忘れがちなので、自動的にバージョンアップとか検出したいですよね

やり方

バージョンアップの検出

dotnet list {Your solution file path} package --outdated

廃止されたパッケージの検出

dotnet list {Your solution file path} package --deprecated

--format json を付けると、json で返ってくるので、自動化して何かしたいといった時にも便利です

Azure Pipelines に組み込んでみよう

せっかくなんで、Azure Pipelines で動かしてみましょう

pool:
  vmImage: ubuntu-latest

steps:
- checkout: self
  submodules: true
  persistCredentials: true

- task: DotNetCoreCLI@2
  displayName: 'Restore'
  inputs:
    command: 'restore'
    projects: '**/{Your solution file path}'
    feedsToUse: 'select'


- script: |
    result=$(dotnet list {Your solution file path} package --outdated --format json)

    echo $result
    echo $result | jq -c '.projects[]' | while read project; do
      project_path=$(echo "$project" | jq '.path')
      has_frameworks=$(echo "$project" | jq 'has("frameworks")')

      if [[ "$has_frameworks" == "true" ]]; then
        echo '対象があるよ'
      else
        echo '対象が無いよ'
      fi
    done

- script: |
    dotnet list {Your solution file path} package --outdated

- script: |
    dotnet list {Your solution file path} package --deprecated

簡単な検出用のスクリプトを記述してあります。

必要に応じて成型して slack に送るとかそういったことが出来ると思います。

まとめ

一週間に一回 CI を回してチェックするとか良いんじゃないでしょうか