1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

脆弱性診断及び各種テストを自動化する

Last updated at Posted at 2023-04-23

目次

概要

前回投稿した内容へプラスアルファした内容になります。
また、脆弱性診断にはsnykを使用しております。
詳しい設定内容などの詳細が知りたい方はソースコードをご確認お願いいたします。

環境

  • Kotlin 1.8.21
  • Spring Boot 3.3.5
  • Docker 20.10.23
  • Docker Compose 2.15.1

構成

ざっくり以下のような形式になっています。
前回同様CIで、テストが全て正常終了しなければマージできないようにしてあります。
※理想はCIでECR等にDocker imageをプッシュやE2Eテストも実施する。

設定

pre-merge.yml
name: PR Checks
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - '*'

jobs:
  # SEE: https://docs.snyk.io/integrations/ci-cd-integrations/github-actions-integration/snyk-gradle-jdk17-action
  security-check:
    name: Run Security Check
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@master
      - name: Make gradlew executable
        run: chmod +x ./gradlew
      - name: Run Snyk to check for vulnerabilities
        uses: snyk/actions/gradle-jdk17@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        with:
          args: --severity-threshold=high
  tests:
    name: Run tests
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up JDK 17
        uses: actions/setup-java@v1
        with:
          java-version: 17
      - name: Make gradlew executable
        run: chmod +x ./gradlew
      - name: Run detekt
        run: ./gradlew detekt
      - name: Run test
        run: ./gradlew test
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}
          DATABASE_USERNAME: ${{ secrets.DATABASE_USERNAME }}
          DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
      - name: Run jacocoTestReport
        run: ./gradlew jacocoTestReport
      - name: Archive unit test results
        uses: actions/upload-artifact@v4
        with:
          name: unit-test-report
          path: build/reports/tests/test
      - name: Archive coverage results
        uses: actions/upload-artifact@v4
        with:
          name: code-coverage-report
          path: build/reports/jacoco/test/html

実行結果

  • 脆弱性診断
    以下のような形式で脆弱性を検知し、エラーで弾いてくれる。
    なお、4段階のレベルを指定でき、下記キャプチャは3番目の"high"を指定した結果です。
    詳しくはこちらを参照お願いします。
    image.png

指摘箇所を解消すると、マージできるようになります。
image.png

image.png

  • UT
    UTとカバレッジ計測も同様にCIで実行している。
    image.png

また、テスト実行結果やカバレッジレポートは、SummaryのArtifactsにあります。
image.png

参考

snyk
GitHub Actionsを用いた自動テストの実行と結果集計

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?