노드 종속성 업데이트 자동화

상당히 큰 노드 애플리케이션에는 100개의 종속성이 있습니다. 모두 최신 상태로 유지하는 것은 개발자가 어느 시점에서 수행해야 하는 🧹자질구레한 일입니다. 🦹‍♂️ 보안 취약점으로 진행을 방해하는 아주 오래된 종속성 집합에 갇힐 때까지 종속성 업데이트를 무시하거나 합리적인 주기로 업데이트를 수동으로 테스트하는 데 귀중한 애플리케이션 개발 시간을 할애해야 합니다.

일종의 CI/CD 환경과 비공개 GitHub 리포지토리가 있다고 가정하고 엔터프라이즈 환경에서 이 프로세스를 자동화하는 방법을 살펴보겠습니다.

🥒 재료


  • 코드에 대한 견고한 단위 테스트. UI 구성 요소에 대한 엔드 투 엔드 테스트 및 스냅샷 테스트가 있는 경우 보너스 포인트
  • next-update테스트를 중단하지 않고 종속성을 업데이트할 수 있는지 여부를 테스트하는 npm 패키지입니다.
  • hub CLI
    이것은 GitHub 리포지토리와 상호 작용할 수 있는 Git "Hub"의 명령줄 애플리케이션입니다. hubgit CLI 및 드롭인 교체와 정확히 유사하지만 GitHub와 상호 작용하는 기능이 추가되었습니다. 업데이트 작업 후 풀 요청을 여는 데 편리합니다.

  • 📝 레시피


  • npm install next-update --save-devnext-update를 dev-dependency로 설치합니다.
  • npm 스크립트 섹션에서 dep:update 스크립트package.json를 구성합니다.

    // package.json
    {
      "name": "a-sample-node-project",
      "version": "0.0.1",
      "description": "A sample node project",
      "scripts": {
        "test": "jest",
        "start": "node app.js",
        "dep:update": "next-update" // Configure an npm script
      },
      "devDependencies": {
        "next-update": "^3.6.0"
      },
      "dependencies": {
      },
    }
    

  • npm run dep:update스크립트를 실행합니다. next-update가 계속 진행하여 모든 새 패키지를 찾습니다. 순서대로 업데이트하고 테스트가 통과하면 업데이트를 유지합니다.
  • hub CLI 다운로드 및 설치

    # download-hub.sh
    HUB_CLI=/opt/hub-linux/bin/hub
    
    if [[ ! -f $HUB_CLI ]]; then
       wget https://github.com/github/hub/releases/download/v2.12.2/hub-linux-amd64-2.12.2.tgz 
       tar zxvf hub-linux-amd64-2.12.2.tgz 
       rm -rf hub-linux-amd64-2.12.2.tgz /opt/hub-linux
       mv hub-linux-amd64-2.12.2 /opt/hub-linux
    fi
    


  • 허브 구성

    git config --global --replace-all hub.host github.yourdomain.com
    git config --global --replace-all hub.protocol git
    


  • 🤖 봇에게 풀 요청을 열도록 지시

    $HUB_CLI add package.json package-lock.json
    $HUB_CLI commit -m "🤖 [BOT] Automated dependency update"
    $HUB_CLI pull-request \
        --push \
        -m "Pull Request Subject" \
        -m "Pull Request Description" \
        --no-edit \
        --reviewer user-id1,user-id2
    

  • CI/CD 환경에서 이 스크립트를 연결하여 매일 실행합니다
  • .



    마무리



    노드 종속성을 확인 및 업데이트하고 PR을 여는 프로세스를 자동화하는 방법을 살펴보았습니다. 프로젝트가 오픈 소스인 경우 Greenkeeper와 같은 서비스를 사용할 수 있습니다.

    건배



    Medium에서 내 이전 글을 찾으십시오.

  • One side rounded rectangle using SVG
  • Visual Studio Code — Debug Mode
  • I want TypeScript to succeed.
  • What’s in my laptop?
  • CoffeeScript’s most loved feature soon in JavaScript
  • 좋은 웹페이지 즐겨찾기