Skip to main content

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

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

Who can use this feature?

Code scanning는 GitHub Enterprise Server의 조직 소유 리포지토리에서 사용할 수 있습니다. 이 기능을 사용하려면 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 Enterprise Server 버전의 초기 릴리스에 포함된 CodeQL 작업 및 관련 CodeQL CLI 번들의 버전에서 사용할 수 있는 기능을 설명합니다. 엔터프라이즈에서 더 최신 버전의 CodeQL 작업을 사용하는 경우, 최신 기능에 대한 자세한 내용은 이 문서의GitHub Enterprise Cloud 버전을 참조하세요. 최신 버전 사용에 대한 자세한 내용은 "어플라이언스에 대한 코드 검사 구성" 항목을 참조하세요.

이 샘플 워크플로는 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]

    # 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@v2
        with:
          languages: ${{ matrix.language }}
      - name: Build
        run: |
          ./configure
          make
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2