Skip to main content

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

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

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

Code scanning은 다음 리포지토리 유형에서 사용할 수 있습니다.

  • GitHub.com에 대한 퍼블릭 리포지토리
  • GitHub Team, GitHub Enterprise Cloud 또는 GitHub Enterprise Server에 대한 조직 소유의 리포지토리로, GitHub Code Security 가 활성화되어 있습니다.

컨테이너화된 빌드를 사용하는 code scanning 소개

컴파일된 언어를 구성 code scanning 하고 컨테이너화된 환경에서 코드를 빌드하는 경우 "빌드하는 동안 소스 코드가 표시되지 않았습니다."라는 오류 메시지와 함께 분석이 실패할 수 있습니다. 이는 코드가 컴파일되는 동안 CodeQL이(가) 코드를 모니터링할 수 없었음을 나타냅니다.

코드를 빌드하는 컨테이너 내에서 실행 CodeQL 해야 합니다. 이 값은 사용 CodeQL CLIGitHub Actions여부에 관계없이 적용됩니다. CodeQL CLI자세한 내용은 사용자의 기존 CI 시스템으로 코드 검색 사용하기을 참조하세요. 사용하는 GitHub Actions경우 동일한 컨테이너에서 모든 작업을 실행하도록 워크플로를 구성합니다. 자세한 내용은 예제 워크플로에서 확인할 수 있습니다.

참고

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

에 대한 종속성 CodeQLcode 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@v6
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4
        with:
          languages: ${{ matrix.language }}
      - name: Build
        run: |
          ./configure
          make
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4