Azure Pipelines의 Pipeline caching (preview)을 Maven에서 사용해보십시오.

6657 단어 AzurePipelines
※7/24 시점에서 프리뷰의 기능이므로 향후 변경이 있을 가능성이 있습니다

Azure Pipelines에 개인적으로 기대했던 Pipeline caching이 미리보기에서 구현되었습니다.

CI를 돌릴 때, npm이나 maven등의 패키지 관리 툴로 발생하는 다운로드에 걸리는 시간이 빌드 시간을 증대시키고 있었습니다. 이러한 느낌으로 첫회만으로 빌드마다 할 필요성이 덜한 작업은 종종 있습니다.
Pipeline caching은 이 점을 해결할 수 있습니다. (단, 현시점에서는 의존이 많은 nodejs 프로젝트에서는 느려지는 경우가있는 것 같습니다. )

메이저 패키지 관리 툴은 문서에 예가 있습니다. 그래서, 곧바로 짜넣을 수 있다고 생각합니다.

내장 및 실측



옛날 Pipelines에서 놀았을 때 순진한 Spring Boot 응용 프로그램으로 빠르게 시도해보십시오.
htps : // v. 오즈레. 코 m / 후카사와 h / _ t / sp 링 g 보오 t- e mp ぇ

azure-pipelines.yml는 이런 식으로 수정 . 간단하네요.

변경 직후의 빌드.



다시 Enqueue하여 두 번째 빌드



maven 태스크만 보면, 193초→23초로 처리 시간이 약 1/8이 되었습니다.
이번에는 코드의 규모가 크지 않았기 때문에 극단적으로 나왔습니다만, 그래도 약 3분은 빨리 할 수 ​​있을 것입니다.

이후에 pom.xml에 변경이 가해지지 않는 한은 이 고속화가 효과가 있습니다.

단지 버전을 범위 지정하고 있거나 SNAPSHOT를 사용하면 업데이트가 발생하여 캐시의 혜택을 받기 어려워질 것입니다.
npm은 lock 파일을 만들기 때문에, 후반의 캐시 등록을 다시 실시해 줄 것입니다만, maven에는 없었을 것 (effective-pom으로 할 수 있을지도?)

메커니즘을 쫓다



CacheBeta를 정의하면 두 개의 task가 포함됩니다.
  • key의 해시 값에 해당하는 캐시가 있으면 취득한다 (없으면 아무것도 하지 않는다)
  • 후 처리에서 지정된 경로의 캐시를 키 해시 값을 기반으로합니다.

    pom.xml에 변경 사항이 추가되면 캐시가 무효화됩니다.

    첫 번째와 두 번째 작업의 내용을 살펴 보겠습니다.

    첫 번째


    Information, Using the following fingerprint argument (/home/vsts/work/1/s/pom.xml) as a file.
    Information, Generated fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Getting a pipeline cache artifact with the following fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, There is a cache miss.
    Information, Pipeline cache item with fingerprint "B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00" does not exist.
    
    Information, Using the following fingerprint argument (/home/vsts/work/1/s/pom.xml) as a file.
    Information, Generated fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Getting a pipeline cache artifact with the following fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, There is a cache miss.
    Information, Pipeline cache item with fingerprint "B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00" does not exist.
    Information, DedupManifestArtifactClient will correlate http requests with X-TFS-Session 869da5a9-241f-40c8-b8eb-05e6ff782dce
    Information, 1805 files to be processed in 19 groups.
    Information, 5 out of 1805 files processed (Group: 19/19)
    Information, 105 out of 1805 files processed (Group: 17/19)
    (中略)
    Information, 1805 out of 1805 files processed (Group: 18/19)
    Information, Processed 1805 files from /home/vsts/work/1/.m2/repository successfully.
    Information, Uploading 1805 files from: /home/vsts/work/1/.m2/repository
    Information, Uploaded 0.0 MB out of 54.2 MB.
    (中略)
    Information, Uploaded 54.2 MB out of 54.2 MB.
    Information, Upload completed.
    Information, 
    Upload statistics:
    Total Content: 54.2 MB
    Physical Content Uploaded: 48.6 MB
    Logical Content Uploaded: 54.2 MB
    Compression Saved: 5.6 MB
    Deduplication Saved: 0.0 MB
    Number of Chunks Uploaded: 2,365
    
    Information, Using the following fingerprint argument (/home/vsts/work/1/s/pom.xml) as a file.
    Information, Generated fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Creating a pipeline cache artifact with the following fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Cache item created.
    Saved item.
    

    해시 값은 B57C33C1 와 같습니다.

    1회째이므로 캐시가 없는 것, 캐시를 등록하고 있는 모습을 알 수 있습니다.

    두 번째


    Information, Using the following fingerprint argument (/home/vsts/work/1/s/pom.xml) as a file.
    Information, Generated fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Getting a pipeline cache artifact with the following fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, There is a cache hit.
    Manifest ID is: 8B02C61FC8EC70C3CD646355B373CE35F1D0DACFBBCA1B13A9452325C783972902
    Information, DedupManifestArtifactClient will correlate http requests with X-TFS-Session d36d5e3e-7887-46b6-92c9-11fe4a8a3a91
    Information, Could not initialize dataport.
    Information, Downloaded 0.0 MB out of 53.9 MB (0%).
    Information, Downloaded 25.4 MB out of 53.9 MB (47%).
    Information, Downloaded 53.9 MB out of 53.9 MB (100%).
    Information, 
    Download statistics:
    Total Content: 53.9 MB
    Physical Content Downloaded: 48.4 MB
    Compression Saved: 5.4 MB
    Local Caching Saved: 0.0 MB
    Chunks Downloaded: 2,361
    Nodes Downloaded: 0
    
    Information, Download completed.
    Cache restored.
    
    Information, Using the following fingerprint argument (/home/vsts/work/1/s/pom.xml) as a file.
    Information, Generated fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, Getting a pipeline cache artifact with the following fingerprint: B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00
    Information, There is a cache hit.
    Cache with fingerprint B57C33C1E5F2310961322676F7FD7FFB6130E2230823B37F7CB6B84A593FC97F00 already exists.
    

    두 번째 해시 값도 B57C33C1에서 첫 번째와 동일했습니다. 따라서 첫 번째로 생성된 캐시를 찾아서 다운로드하고 배포하는 것 같습니다.
    그런 다음 다시 해시 값을 계산하여 B57C33C1 와 같은 해시 값이 되었으므로 캐시가 저장되지 않습니다. 업데이트가 있으면 캐시가 업데이트됩니다.

    기타



    이번에는 하나만 정의하고 있지만, 물론 복수 정의할 수 있을 것입니다.

    또, 캐쉬가 효과가 있거나 효과가 없을 때만, 라고 하는 태스크를 쓸 수도 있습니다. 자세한 내용은 문서를 읽으십시오.

    아래의 Pull Request(caching pipeline 초안)를 watch 해 두면 움직임이 쫓을지도 모릅니다.
  • 좋은 웹페이지 즐겨찾기