GitHub 운영으로 CI/CD 성능 향상
While building/compiling angular or node application on
Local Build Machine
orAzure Pipelines
orGitHub Workflows
orNetflix
orHeroku
. The main issue we face isnpm install
ornpm ci
which takes large amount of time to finish. Which slows-down the productivity of the team. WithGitHub Workflows
dependency caching you can reduce the install time to half. Therefore, in this article we will learn how can you leverage theGitHub 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
을 사용하겠습니다.이 밖에 열쇠는 os
과 cach-name
이 있다.캐시가 적중하면 다음 단계는
cache-hit as true
을 출력합니다.따라서 이 급행열차는 steps.cache-nodemodules.outputs.cache-hit
이 true
이 될 것이다Npm 설치 건너뛰기
지금
steps.cache-nodemodules.outputs.cache-hit
이 true
이 된다면 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을 보세요.
도구책
풀 스택 개발자 되기💻
나는 Fullstack Master에서 가르친다.만약 당신이 소프트웨어 개발자가 되고 싶다면, 당신의 운영자를 새로운 소프트웨어 엔지니어나 수석 개발자/프로그래머로 발전시켜라.우리의 모든 개발 교육 계획을 구독하는 것을 고려하다.많은 프로그래밍 실습을 통해 Angular, RxJS, JavaScript, 시스템 구조 등을 배울 수 있습니다.저희는 매달 회원 계획을 가지고 있습니다. 귀하는 저희의 모든 동영상 수업, 슬라이드 쇼, 원본 코드 다운로드와 매달 동영상 통화를 무한히 방문할 수 있습니다.
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
Reference
이 문제에 관하여(GitHub 운영으로 CI/CD 성능 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rupeshtiwari/github-actions-performance-improvement-for-your-ci-cd-5ap5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)