비디오 : Github Copilot으로 종속성 감사를 실행하는 방법

비디오 : Github Copilot으로 종속성 감사를 실행하는 방법

모든 소프트웨어 프로젝트는 의존성 관리의 불가피한 과제에 직면 해 있습니다. 시간이 지남에 따라 의존성이 구식이되어 보안 취약점이 생깁니다. 다른 사람들은 사용하지 않고 불필요하게 부풀어 오른 빌드 시간입니다. 많은 개발 팀의 경우 이러한 문제를 해결한다는 것은 수동 스크립트를 실행하고 출력 파일을 검토하며 균열을 통해 아무것도 떨어지지 않기를 바랍니다.

최근 에이 오류가 발생하기 쉬운 수동 프로세스를 Github의 몇 가지 도구 (Github Copilot, Github Actions 및 Dependabot)를 사용하여 구체적으로 (궁금한 경우)를 사용하여 자동화 된 솔루션으로 변환했습니다. 당신이 똑같이 할 수있는 방법은 다음과 같습니다!

자, 뛰어 들어 갑시다 (그리고 위의 비디오를보십시오!).

수동 종속성 감사의 문제

대부분의 팀은 종속성 관리에 대한 간단한 접근 방식으로 시작합니다. 여기에는 종종 주기적으로 실행되는 Bash 스크립트가 포함됩니다. 수동 스크립트는 다음과 같습니다.

#!/bin/bash
echo "Starting manual dependency audit..."

# List all dependencies
echo "Installed dependencies:"
npm list --depth=0 > deps.txt
cat deps.txt

# Check for outdated ones
echo -e "\nChecking outdated dependencies..."
npm outdated > outdated.txt
cat outdated.txt

# Guess at unused ones (very crude)
echo -e "\nLooking for potentially unused dependencies..."
for dep in $(npm list --depth=0 | grep '├──' | cut -d' ' -f2 | cut -d@ -f1); do
    if ! find . -type f -name "*.js" -o -name "*.tsx" -o -name "*.ts" | xargs grep -l "$dep" > /dev/null 2>&1; then
        echo "$dep might be unused"
    fi
done

echo "Done! Check deps.txt and outdated.txt manually. Phew that was a lot of work!"

이 접근법은 다음을 포함하여 몇 가지 제한 사항이 있습니다.

  • 그것은 매뉴얼이므로 누군가가 그것을 실행 해야하는 것을 기억해야합니다 (그리고 솔직히 말해서, 나는 종종 내 자신의 코드베이스로 이것을 실행하는 것을 잊어 버립니다).
  • 사용하지 않는 의존성 검사는 조잡하고 종종 부정확합니다.
  • 결과는 여러 출력 파일에 흩어져 있습니다.
  • 워크 플로 또는 CI/CD 파이프 라인과 통합되지 않습니다.

이보다 더 나은 방법이 있어야합니다.

GitHub의 종속성 감사를 단순화하는 방법

운 좋게도 GitHub에서 작업하는 경우 수동 Bash 스크립트보다 더 나은 솔루션이 있으며 AI 개발자 도구 인 Github Copilot, 자동화 및 CI/CD 도구의 조합을 사용하는 것으로 시작합니다. GitHub 작업 및 자동화 된 종속성 도구 인 Dependabot.

다음은이를 수행하는 데 사용할 수있는 단계별 가이드입니다.

1 단계 : Github Copilot을 사용하여 동작을 만듭니다

에이전트 모드는 Github Copilot이 코드 제안에서 Bash 스크립트를 GitHub Actions 워크 플로로 변환하는 것과 같은 소유 작업에 이르기까지 가져옵니다.

다음은 우리의 프롬프트입니다.

“Depcheck 및 Issue 게시물로 종속성 감사를위한 GitHub 조치를 만듭니다. 구식 의존성을 관리하기위한 별도의 의존 워크 플로.”

수동 종속성 감사를위한 bash 스크립트를 보여주는 VS 코드의 스크린 샷. 'manual-audit.sh'라는 스크립트는 편집기에서 열려 있으며 종속성을 나열하고 구식을 확인하고 잠재적으로 사용되지 않는 패키지를 식별하는 코드를 표시합니다. 스크립트는 결과를 descs.txt 및 Outdated.txt 파일로 출력합니다. 왼쪽 패널에는 JavaScript 파일 및 구성 파일을 포함한 다양한 프로젝트 파일이있는 파일 탐색기가 표시됩니다. 오른쪽에는 Github Copilot이 'Depcheck 및 Issue 게시물로 의존성 감사를위한 Github 조치를 만듭니다. 구식 종속성을 관리하기위한 별도의 의존 워크 플로. '

우리의 원래 bash 스크립트를 기억하십니까? 프롬프트만으로 컨텍스트 (Package.json 및 수동 스크립트)를 공유하고 사용하지 않는 종속성을보다 정확하게 감지하기 위해 종속성 Checker 도구 Dexcheck을 사용하는 작업을 작성하도록 요청했습니다.

2 단계 : Github Copilot은 Github 동작을 씁니다

이 GitHub 작업을 구현하려면 Github Copilot이 새 워크 플로우 파일을 만듭니다. .github/workflows/dependency-audit.yml. Copilot이 작성하는 데 도움이되는 워크 플로 파일은 다음과 같습니다.

name: Dependency Audit
on:
  schedule:
    - cron: '0 0 * * 1'  # Run weekly on Mondays
  workflow_dispatch:  # Allow manual triggering

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Install depcheck
        run: npm install -g depcheck

      - name: Run depcheck for unused dependencies
        run: depcheck --json > unused-deps.json

      - name: Run npm audit
        run: npm audit --json > security-audit.json

      - name: Generate report
        run: |
          echo "# Dependency Audit Report $(date)" > report.md
          echo "## Unused Dependencies" >> report.md
          cat unused-deps.json | jq -r '.dependencies[]' >> report.md
          echo "## Security Issues" >> report.md
          cat security-audit.json | jq '.metadata.vulnerabilities' >> report.md

      - name: Create issue if problems found
        uses: peter-evans/create-issue-from-file@v4
        if: ${{ success() }}
        with:
          title: Weekly Dependency Audit
          content-filepath: ./report.md
          labels: maintenance, dependencies

3 단계 : 의존적 사용을 활성화합니다

우리의 커스텀 액션은 사용하지 않는 종속성을 찾는 데 중점을 두지 만, 의존적 패키지를 사용하여 구식 패키지에 대한 풀 요청을 자동으로 생성 할 수 있습니다. Septionabot은 간단한 YAML 파일을 통해 또는 저장소 설정에서 자동으로 켜면 자동으로 구성 할 수 있습니다. Copilot이 만든 Yaml 파일은 다음과 같습니다.

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10

결과 : 완전히 자동화 된 종속성 감사

이를 통해 우리의 종속성 관리는 이제 완전히 자동화되었습니다. 어떻게 작동하는지 요약합시다.

  • 우리의 커스텀 액션은 Depcheck을 사용하여 사용하지 않는 종속성을 정확하게 식별합니다.
  • 부양애는 구식 패키지에 대한 풀 요청을 생성하며, 변경 사항 및 위험 평가가 완료됩니다.
  • 보안 취약점이 감지되어 매주보고됩니다.
  • 모든 것은 팀 가시성을 위해 Github 문제에 문서화되어 있습니다.

이 접근법은 시간을 절약 할뿐만 아니라 관리가 잘되지 않은 의존성에서 비롯된 보안 위험과 성능 문제를 크게 줄입니다.

GitHub Copilot의 AI 기능을 GitHub 동작 및 의존적 인 AI 기능을 결합하여 지루한 수동 작업을 코드베이스를 린하고 안전하게 유지하는 자동화 된 통합 솔루션으로 전환했습니다. 그리고 나는 TV 쇼에서 이상한 염소의 신비를 풀어주는 것과 같이 더 흥미로운 일을하기 위해 그 시간을 절약 할 것입니다. 단절. 또는 누가 알겠습니까, 어쩌면 아마도 마침내 마크로다 다 개선이 그 쇼에서 무엇을 의미하는지 알아낼 것입니다 (아직 어떤 아이디어가 있습니까? 시즌 2가 나를 죽이고 있습니다).

GitHub Copilot을 무료로 사용해보고 Dependabot을 활성화하십시오
비즈니스 용 Github Copilot에 대해 자세히 알아 보거나 오늘 Github Enterprise의 무료 평가판을 시작하십시오.

작성자가 작성했습니다

안드레아 그리피스

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다