diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0031fbc --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,51 @@ +# 依存パッケージの更新確認(週1回)。更新があれば dev 向けの PR を作る +# PR は担当者に自分を割り当て、GitHub の通知(Inbox)と「Assigned」の一覧に出す +version: 2 +updates: + - package-ecosystem: nuget + directory: / + target-branch: dev + schedule: + interval: weekly + day: monday + time: "09:00" + timezone: Asia/Tokyo + assignees: + - msmsrep + commit-message: + prefix: "依存更新" + groups: + # Microsoft.* / System.* は同じサービシングで揃えて上げる(版がずれると NU1605 の格下げエラーになる) + dotnet: + patterns: + - "Microsoft.*" + - "System.*" + update-types: + - minor + - patch + others: + patterns: + - "*" + exclude-patterns: + - "Microsoft.*" + - "System.*" + update-types: + - minor + - patch + + - package-ecosystem: github-actions + directory: / + target-branch: dev + schedule: + interval: weekly + day: monday + time: "09:00" + timezone: Asia/Tokyo + assignees: + - msmsrep + commit-message: + prefix: "依存更新" + groups: + actions: + patterns: + - "*" diff --git a/.github/workflows/vulnerability.yml b/.github/workflows/vulnerability.yml new file mode 100644 index 0000000..eeec040 --- /dev/null +++ b/.github/workflows/vulnerability.yml @@ -0,0 +1,66 @@ +# 依存パッケージの既知の脆弱性チェック(推移的な依存も含む)。見つかったら失敗させる +# コードを触っていない期間に公開された脆弱性にも気づけるよう、週1回の定期実行もかける +# (定期実行は既定ブランチ main で動く) +name: Vulnerability + +on: + push: + branches: [main, dev] + pull_request: + schedule: + # 毎週月曜 09:00(JST)。Dependabot の確認と同じ時刻 + - cron: "0 0 * * 1" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: vulnerability-${{ github.ref }} + cancel-in-progress: true + +jobs: + vulnerable-packages: + # ソリューションに MesApp.Desktop(net10.0-windows)を含むため Windows で復元する + runs-on: windows-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: 10.0.x + + # 警告をエラーにしているため、復元時の NuGet 監査(NU1901〜1904)で先に落ちて一覧が出ない。 + # 復元では監査を止め、次の手順でパッケージ・重大度・アドバイザリを一覧にして判定する + - name: 復元 + run: dotnet restore ParallelFactoryMES.slnx -p:NuGetAudit=false + + - name: 脆弱なパッケージの確認 + shell: pwsh + run: | + $json = dotnet list ParallelFactoryMES.slnx package --vulnerable --include-transitive --no-restore --format json | Out-String + if ($LASTEXITCODE -ne 0) { Write-Output $json; exit 1 } + $report = $json | ConvertFrom-Json + $found = foreach ($project in $report.projects) { + foreach ($framework in @($project.frameworks)) { + foreach ($package in @($framework.topLevelPackages) + @($framework.transitivePackages)) { + if (-not $package) { continue } + foreach ($v in @($package.vulnerabilities)) { + [pscustomobject]@{ + Project = Split-Path $project.path -Leaf + Package = $package.id + Version = $package.resolvedVersion + Severity = $v.severity + Advisory = $v.advisoryurl + } + } + } + } + } + if ($found) { + $found | Sort-Object Package, Advisory -Unique | Format-Table -AutoSize | Out-String -Width 300 | Write-Output + Write-Output "::error::既知の脆弱性があるパッケージが $(@($found | Sort-Object Package -Unique).Count) 件あります。修正版へ更新してください。" + exit 1 + } + Write-Output "脆弱なパッケージはありません。" diff --git a/dotnet-tools.json b/dotnet-tools.json index cce89d8..39007e0 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-ef": { - "version": "10.0.10", + "version": "10.0.13", "commands": [ "dotnet-ef" ], diff --git a/src/MesApp.Api/MesApp.Api.csproj b/src/MesApp.Api/MesApp.Api.csproj index 10f09cb..228060b 100644 --- a/src/MesApp.Api/MesApp.Api.csproj +++ b/src/MesApp.Api/MesApp.Api.csproj @@ -12,14 +12,14 @@ - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/src/MesApp.Client.Web/MesApp.Client.Web.csproj b/src/MesApp.Client.Web/MesApp.Client.Web.csproj index 8e0565a..0f9138e 100644 --- a/src/MesApp.Client.Web/MesApp.Client.Web.csproj +++ b/src/MesApp.Client.Web/MesApp.Client.Web.csproj @@ -9,10 +9,10 @@ - - - - + + + + diff --git a/src/MesApp.Core/MesApp.Core.csproj b/src/MesApp.Core/MesApp.Core.csproj index 87007c0..ee850e5 100644 --- a/src/MesApp.Core/MesApp.Core.csproj +++ b/src/MesApp.Core/MesApp.Core.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/MesApp.Infrastructure/MesApp.Infrastructure.csproj b/src/MesApp.Infrastructure/MesApp.Infrastructure.csproj index df4494a..250f842 100644 --- a/src/MesApp.Infrastructure/MesApp.Infrastructure.csproj +++ b/src/MesApp.Infrastructure/MesApp.Infrastructure.csproj @@ -5,11 +5,13 @@ - - - + + + + + diff --git a/tests/MesApp.Api.Tests/MesApp.Api.Tests.csproj b/tests/MesApp.Api.Tests/MesApp.Api.Tests.csproj index d01b176..bb1decf 100644 --- a/tests/MesApp.Api.Tests/MesApp.Api.Tests.csproj +++ b/tests/MesApp.Api.Tests/MesApp.Api.Tests.csproj @@ -9,7 +9,7 @@ - +