LoginSignup
20
11

はじめに

Goプロジェクトのセキュリティを確保するために、定期的な脆弱性診断は必須ですよね。

Goの脆弱性診断を定期実行する仕組みを構築すれば、開発スピードを落とすことなくセキュリティ対策を強化できます。

今回は、govulncheck-actionを使って、Goの脆弱性診断を継続的に実行する方法について紹介します。

GitHub Actionsのワークフロー作成

以下のyamlを.github/workflows配下に追加します。

.github/workflows/go_vluncheck_sample.yaml
name: Go Vulnerability Check
on:
# ここで定期実行のための設定をしています
  schedule:
    - cron: '0 23 * * *' # UTC表記。毎日8時(JST)に実行
jobs:
  go_vulncheck:
    runs-on: ubuntu-20.04
    timeout-minutes: 10
    steps:
      # リポジトリのコードを取得し、アクションが実行される環境にコピーする
      - uses: actions/checkout@v4
      # Goの脆弱性診断を実行
      - uses: golang/govulncheck-action@v1
        go-version-input: ◯◯◯
        work-dir: ◯◯◯
        go-package: ./...

たったこれだけで、Goの脆弱性診断を定期実行するための仕組みは整いました。
お手軽ですね。

おまけ

govulncheck-actionの導入を一度挫折した話

実は、一度govulncheck-actionの導入を挫折してました。
govulncheck-action v1.0.0のリリース時は、working directoryの設定オプションがありませんでした。
これはmonorepo環境だとちょっとつらくて、working directoryの設定がうまくいかなかったため、一度govulncheck-actionの導入は見送ってました。

試行錯誤したこと

working-directoryをdefaultsで設定する(ボツ)

defaults:
  run:
    working-directory: ◯◯◯

を設定しても、

- uses: golang/govulncheck-action@v1

のstepでは無視されてしまい、GOPATHの環境変数が変更されないためgo.modファイルが見つけれないというエラーが出てました。
同様のエラーでハマって、issueを起票していた方がいたので、詳しくはそちらを参照ください。

v1.0.1でworking-directoryが設定できるようになってました🎉

v1.0.1でこの問題が解決されました。(最近知りました😇)

v1.0.1ではいった、working-directoryが設定できる差分
スクリーンショット 2024-06-29 16.14.23.png
引用: https://go-review.googlesource.com/c/govulncheck-action/+/520175

これによって、working-directoryの問題が解決され、めでたくgovulncheck-actionを導入できました🎉

20
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
11