Skip to main content

컨테이너에서 CodeQL 코드 검사 실행

모든 프로세스가 동일한 컨테이너에서 실행되도록 하여 컨테이너에서 code scanning를 실행할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

Code scanning는 GitHub.com의 모든 퍼블릭 리포지토리에 사용할 수 있습니다. Code scanning는 또한 GitHub Enterprise Cloud를 사용하고 GitHub Advanced Security에 대한 라이선스가 있는 조직이 소유한 프라이빗 리포지토리에서 사용할 수 있습니다. 자세한 내용은 "GitHub Advanced Security 정보"을(를) 참조하세요.

컨테이너화된 빌드를 사용하는 code scanning 정보

컴파일된 언어에 대해 code scanning을(를) 구성하고 컨테이너화된 환경에서 코드를 빌드하는 경우. “빌드 중 소스 코드가 표시되지 않았습니다”라는 오류 메시지가 뜨면서 분석이 실패할 수 있습니다. 이는 CodeQL이 컴파일될 때 코드를 모니터링할 수 없음을 나타냅니다.

코드를 빌드하는 컨테이너 내에서 CodeQL을 실행해야 합니다. 이는 CodeQL CLI 또는 GitHub Actions 사용 여부와 관계없이 발생할 수 있습니다. CodeQL CLI에 대한 자세한 정보는 "기존 CI 시스템에서 코드 검색 사용하기"을(를) 참조하세요. GitHub Actions를 사용하는 경우 동일한 컨테이너에서 모든 작업을 실행하도록 워크플로를 구성합니다. 자세한 내용은 "예시 워크플로"를 참조하세요.

참고: CodeQL CLI는 (musl 기반) Alpine Linux와 같은 비 glibc Linux 배포판과 현재 호환되지 않습니다.

CodeQL code scanning에 대한 종속성

사용 중인 컨테이너에 특정 종속성이 누락된 경우 code scanning를 실행하는 데 어려움이 있을 수 있습니다(예: Git을 설치하고 PATH 변수에 추가해야 함). 종속성 문제가 발생하는 경우 일반적으로 GitHub의 실행기 이미지에 포함된 소프트웨어 목록을 검토합니다. 자세한 내용은 다음 위치에 있는 버전별 readme 파일을 참조하세요.

예시 워크플로

이 샘플 워크플로는 GitHub Actions를 사용하여 컨테이너화된 환경에서 CodeQL 분석을 수행합니다. container.image 값은 사용할 컨테이너를 식별합니다. 이 예에서 이미지 이름은 codeql-container이고 태그는 f0f91db입니다. 자세한 정보는 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.

name: "CodeQL"

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '15 5 * * 3'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      actions: read

    strategy:
      fail-fast: false
      matrix:
        language: [java-kotlin]

    # Specify the container in which actions will run
    container:
      image: codeql-container:f0f91db

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
      - name: Build
        run: |
          ./configure
          make
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3