GitHub 운영으로 CI/CD 성능 향상

While building/compiling angular or node application on Local Build Machine or Azure Pipelines or GitHub Workflows or Netflix or Heroku. The main issue we face is npm install or npm ci which takes large amount of time to finish. Which slows-down the productivity of the team. With GitHub Workflows dependency caching you can reduce the install time to half. Therefore, in this article we will learn how can you leverage the GitHub caching workflow dependencies mechanism to improve speed and save network utilization or bandwidth of your build server.



GitHub 작업: 캐시 워크플로우 종속성


당신은 다음과 같은 것을 배울 수 있습니다.
  • ✔️ 워크플로우 캐시 node_modules
  • ✔️ skip npm install 캐시 버전이 사용 가능한 경우
  • ✔️ invalidate the cache, 우리의 의존 관계가 변화할 때.
  • GitHub 운영 기반


    작업흐름


    A workflow is a unit of automation from start to finish, including the definition of what triggers the automation, what environment or other aspects should be taken account during the automation, and what should happen as a result of the trigger.(GitHub, 2020).


    작업


    A job is a section of the workflow, and is made up of one or more steps. In this section of our workflow, the template defines the steps that make up the build job.(GitHub, 2020).


    걸음걸이


    A step represents one effect of the automation. A step could be defined as a GitHub Action, or another unit, like printing something to the console.(GitHub, 2020).


    행동


    A GitHub Action is a piece of automation written in a way that is compatible with workflows. Actions can be written by GitHub, by the open source community, or you can write them yourself!(GitHub, 2020).


    캐시 작업 사용


    작업 이름


    우리는 actions/cache@v2을 사용하여 npm 의존항을 보존하고 복구할 것입니다.

    우리는 무엇을 캐시해야 합니까?


    일반적으로 노드 또는 각도 애플리케이션에 node_modules 폴더를 캐시합니다.

    새 캐시는 언제 생성됩니까?

    package-lock.json 파일이 변경될 때마다 캐시 작업은 캐시 키로 새 캐시를 만듭니다.캐시 키는 위아래 문장과 표현식을 사용하여 프로그램을 실행하는 운영체제와 package-lock.json 파일의 SHA-256 해시를 포함하는 새로운 캐시 키를 생성합니다.키가 기존 캐시와 일치하지 않으면 캐시 미명중이라고 하고 작업이 성공적으로 완료되면 새 캐시를 만듭니다.

    캐시는 언제 복구됩니까?


    코드를 누르면 package-lock.json 파일이 바뀌지 않습니다.그리고 캐시 동작은 캐시 키를 비교합니다. 캐시 키가 기존 캐시와 일치하면 캐시 명중이라고 합니다.캐시 작업은 캐시된 node_modules 파일을 path 디렉토리로 복원합니다.

    복구 키란?


    캐시가 명중되지 않을 때, 이 동작은 restore-keys이라는 예비 키를 검색합니다.

    캐시 작업을 사용하여 워크플로우 만들기


    새로운 GitHub 워크플로우를 만들고 actions/cache@v2 작업을 추가합니다.

    워크플로우에서 캐시 노드 모듈


    다음은 GitHub 워크플로우에 actions/cache@v2 작업을 추가하는 예입니다.node_modules 폴더를 캐시하려고 합니다.따라서 path: node_modules을 설치하겠습니다.package-lock.json 파일이 변경되었을 때, 우리는 캐시를 다시 만들기를 희망합니다.따라서 키에 package-lock.json을 사용하겠습니다.이 밖에 열쇠는 oscach-name이 있다.
    캐시가 적중하면 다음 단계는 cache-hit as true을 출력합니다.따라서 이 급행열차는 steps.cache-nodemodules.outputs.cache-hittrue이 될 것이다

    Npm 설치 건너뛰기


    지금 steps.cache-nodemodules.outputs.cache-hittrue이 된다면 npm install을 실행할 수 없습니다.
    - name: Install Dependencies
      if: steps.cache-nodemodules.outputs.cache-hit != 'true'
      # 👆 check if cache-hit happened then do not execute npm ci
      run: npm ci
    
    

    전체 워크플로우 Yaml

    .github\workflows\main.yml 파일을 만들고 다음 스크립트를 추가합니다.

    첫 번째 구문 작성


    GitHub에 변경 사항을 밀어 넣어 첫 번째 빌드를 만듭니다.우리가 처음으로 구축을 추진했기 때문이다.Npm 설치가 발생하며 전체 구축 시간이 56초 이상입니다.

    캐시 미적중

    Cache node modules 작업에서 캐시를 찾을 수 없습니다.

    종속 항목 설치 절차 수행


    워크플로우가 GitHub 캐시에서 node_modules을 찾을 수 없기 때문입니다.Install Dependencies 단계에서 모든 노드 패키지를 설치합니다.주의 Install Dependencies보는 모두 18.878초가 걸렸다.따라서 전체 구축 시간은 약 38초이다

    GitHub에 저장된 새 캐시


    작업이 성공하면 작업 정리 과정을 집행할 것이다.이 단계에서 Cache will be saved.단계 이름이 Post Cache node modules으로 업데이트되며 작업이 완료된 후에만 수행됩니다.

    저장된 캐시는 다음 생성에서 사용됩니다.진정한 재미를 계속 지켜봐 주세요.😄

    두 번째 구축 트리거


    우리 변화를 해서 다시 한번 구축을 추진합시다.package-lock.json 파일을 변경하지 않았으므로 주의하십시오.총 워크플로우 작업 시간은 34초입니다.

    캐시에서 노드 복원 모듈


    따라서 GitHub 워크플로우는 캐시에서 node_modules으로 복원됩니다.

    설치 종속 항목 건너뛰기


    따라서 Install Dependencies 단계는 건너뛰었습니다.

    캐시 적중 발생


    워크플로우가 성공하면 cache 작업은 캐시 적중과 관련된 다음 정보를 인쇄합니다.이것은 캐시 복구가 성공했다는 것을 증명한다.

    Post job cleanup.
    Cache hit occurred on the primary key Linux-build-cache-node-modules-c473bbd9f33d84fd892675fbfce1a74d9c8b3f61d4e37c05ad92e29a23790116, not saving cache.
    
    

    소포 자물쇠를 바꾸다.json 파일


    기존 npm 패키지를 설치, 마운트 해제 또는 업데이트할 때.그러면 package-lock.json 파일이 변경되고 GitHub 워크플로우는 node_module 캐시를 다시 생성합니다.전체 워크플로우는 57초 안에 실행됩니다.

    새 Npm 패키지 설치



    Npm 종속성 실행



    따라서 언제든지 package-lock.json을 변경하면 워크플로우가 느려집니다.그러나 한 팀에서 우리는 package-lcok.json 파일을 업데이트하지 않습니다. 다른 프로젝트 파일만 변경하는 구축에서 당신은 좋은 속도를 얻을 수 있습니다.
    몽땅 완성하다🎉 최대 속도 GitHub 캐시 작업
    workflow file here을 보세요.

    도구책

  • https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows
  • 제 글을 끝까지 읽어주셔서 감사합니다.나는 네가 오늘 약간의 특별한 것을 배웠으면 한다.만약 당신이 이 글을 좋아한다면, 당신의 친구에게 공유하고, 건의나 생각이 있으면, 댓글창에 쓰십시오.

    풀 스택 개발자 되기💻


    나는 Fullstack Master에서 가르친다.만약 당신이 소프트웨어 개발자가 되고 싶다면, 당신의 운영자를 새로운 소프트웨어 엔지니어나 수석 개발자/프로그래머로 발전시켜라.우리의 모든 개발 교육 계획을 구독하는 것을 고려하다.많은 프로그래밍 실습을 통해 Angular, RxJS, JavaScript, 시스템 구조 등을 배울 수 있습니다.저희는 매달 회원 계획을 가지고 있습니다. 귀하는 저희의 모든 동영상 수업, 슬라이드 쇼, 원본 코드 다운로드와 매달 동영상 통화를 무한히 방문할 수 있습니다.
  • 현재와 미래의angular 노드를 방문하려면 All-Access Membership PRO plan을 구독하십시오.js와 관련 과정.
  • PRO 플랜의 모든 정보를 보려면 All-Access Membership ELITE plan을 구독하십시오.또한 Rupesh을 통해 월 1회 현장 질의응답 화상 통화를 통해 질문/질문을 받을 수 있으며 추가 도움말, 팁 및 팁을 얻을 수 있습니다.
  • Your bright future is awaiting for you so visit today FullstackMaster and allow me to help you to board on your dream software company as a new Software Developer, Architect or Lead Engineer role.


    💖 말하다👋 내놔!
    루페시 티발리
    Fullstack Master의 창립자
    이메일:[email protected]
    웹 사이트: www.rupeshtiwari.com | www.fullstackmaster.net

    좋은 웹페이지 즐겨찾기