2>&1 > /dev/null

Giảm thiểu thời gian build trên azure devops

Gần đây, tôi có thực hiện 1 dự án cho khách hàng tại Nhật bổn, và triển khai quá trình CICD trên azure DevOps,
Thú thực, tôi cũng không giỏi về bộ môn Azure DevOps nên khi gặp 1 số vấn đề phải googling thôi... ( buồn thặc sự)
Và, khách hàng phàn nàn rằng, sao mà deployment 1 image tới cụm Kuber gì mà mất tận hơn 5p vậy bồ tèo

thôi, đành chống chế với KH là em đang bận turning cụm K8S nên chưa có tgian turning cái Pipeline :((  (Buồn tập 2)

Cũng bực mình và đành xem về khái niệm docker lại 1 xíu, và chợt nhớ tới cái docker image layer và, tôi đi theo hướng này và thực sự thành công

và đây 1 phần trong azure pipeline của tôi

 - task: Docker@2
        inputs:
          containerRegistry: "$(dockerRegistryServiceConnection)"
          command: "login"
        displayName: Login registry
      - script: "docker pull $(containerRegistry)/$(imageRepository):latest"
        displayName: Pull latest for layer caching
        continueOnError: true # for first build, no cache
      - task: Docker@2
        displayName: Build image
        inputs:
          coơpository)
          containerRegistry: $(dockerRegistryServiceConnection)
          Dockerfile: Dockerfile
          buildContext: ./
          arguments: "--cache-from=$(containerRegistry)/$(imageRepository):latest"
          tags: |
            $(tag)
            latest
      - task: Docker@2
        displayName: Push image to registry
        inputs:
          command: push
          containerRegistry: "$(dockerRegistryServiceConnection)"
          repository: $(imageRepository)
          tags: |
            $(tag)
            latest
      - task: Kubernetes@1
        displayName: dev - deployment new image of ecube to AKSs
        inputs:
          connectionType: "Kubernetes Service Connection"
          kubernetesServiceEndpoint: "$(kubernetestEndpointConnection)"
          namespace: "$(kubeNamespace)"
          command: "set"
          arguments: "image deployment/$(deploymentName) $(containerName)=$(containerRegistry)/$(imageRepository):$(tag)"
          secretType: "dockerRegistry"
          containerRegistryType: "Container Registry"
          dockerRegistryEndpoint: "$(dockerRegistryServiceConnection)"
và kết quả sau khi apply:

trước khi áp dụng

sau khi áp dụng
Tèn ten, giảm tận ~70% tgian, thật là 1 con số yooooomosstttt
với pipeline ở trên thì có 2 tác dụng, 1 là caching tầng local build và 1 tầng caching khi push image lên repositories

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *