İşlem hattını önbelleğe alma

İşlem hattı önbelleğe alma, bir çalıştırmadan gelen çıkışların veya indirilen bağımlılıkların sonraki çalıştırmalarda yeniden kullanılmasına izin vererek derleme süresinin azaltılmasına yardımcı olabilir, böylece aynı dosyaları yeniden oluşturma veya yeniden indirme maliyetini azaltır veya önler. Önbelleğe Alma, özellikle her çalıştırmanın başında aynı bağımlılıkların tekrar tekrar indiril olduğu senaryolarda kullanışlıdır. Bu genellikle yüzlerce veya binlerce ağ çağrısı içeren zaman alan bir işlemdir.

Önbelleğe Alma geri yükleme ve kaydetme süresi, çıktıyı sıfırdan yeniden oluşturma süresinden daha kısa olması şartıyla derleme zamanının iyileştirilmesinde etkili olabilir. Bu nedenle, önbelleğe alma tüm senaryolarda etkili olabilir ve aslında derleme zamanı üzerinde olumsuz bir etkisi olabilir.

Önbelleğe Alma ci ve dağıtım işlerinde şu anda desteklene, ancak klasik sürüm işlerinde desteklanmaz.

Yapıtlar ile önbelleğe alma arasında ne zaman kullanılması gerekenler

İşlem hattı önbelleğe alma ve işlem hattı yapıtları benzer işlevler gerçekleştirir, ancak farklı senaryolar için tasarlanmıştır ve birbirinin yerine kullanılmamalı. Genel olarak:

  • Bir işte üretilen belirli dosyaları alıp diğer işlerle paylaşmaya ihtiyacınız olduğunda işlem hattı yapıtlarını kullanın (ve bu diğer işler büyük olasılıkla onlar olmadan başarısız olur).

  • Önceki çalıştırmalardan dosyaları yeniden kullanarak derleme zamanlarını geliştirmek istediğinizde işlem hattı önbelleğini kullanın (ve bu dosyaların olması işin çalışma becerisini etkilemez).

Not

Önbelleğe Alma şu anda ücretsizdir ve önbellekler Azure blob depolama alanında depolanır.

Önbellek görevi kullanma

Önbelleğe Alma işlem hattı görevi kullanılarak bir işlem Cache hattına eklenir. Bu görev diğer tüm görevlerde olduğu gibi çalışır ve steps bir işin bölümüne eklenir.

Bir çalıştırma sırasında bir önbellek adımıyla karşılaşıldı, görev sağlanan girişlere göre önbelleği geri yükleyecek. Önbellek bulunamazsa, adım tamamlanır ve işteki sonraki adım lanır. İşteki tüm adımlar çalıştırıldıktan ve başarılı bir iş durumu varsan, atlanmamış her "önbelleği geri yükleme" adımı için özel bir "önbelleği kaydet" adımı çalıştırıldı. Bu adım önbelleğin kaydedilenden sorumludur.

Not

Önbellekler sabittir, yani bir önbellek oluşturulduktan sonra içeriği değiştirilemez.

Önbellek görevini yapılandırma

Görevin Cache iki gerekli girişi vardır: ve keypath .

Yol girişi

path önbelleğe alınan klasörün yolu. Mutlak veya göreli bir yol olabilir. Göreli yollar ile $(System.DefaultWorkingDirectory) çözümlenir. Önceden tanımlanmış değişkenleri kullanabilirsiniz, ancak joker karakterler desteklanmaz.

Anahtar girişi

key geri yüklemek veya kaydetmek istediğiniz önbelleğin tanımlayıcısına ayar olmalıdır. Anahtarlar dize değerleri, dosya yolları veya dosya desenleri birleşiminden oluşur ve her kesim bir karakterle | ayrılır.

  • Dizeler:
    sabit değer (önbelleğin adı veya araç adı gibi) veya bir ortam değişkenlerinden (geçerli işletim sistemi veya geçerli iş adı gibi) alınan

  • Dosya yolları:
    içeriği karma olacak belirli bir dosyanın yolu. Bu dosya, görev çalıştır çalıştırıken mevcut olması gerekir. "Dosya yolu gibi görünen" tüm anahtar kesimlerin bir dosya yolu olarak kabul edilir. Özellikle bu, içeren segmentleri . içerir. Bu, bu "dosya" mevcut değilken görevin başarısız olduğu durumlara neden olabilir.

    İpucu

    Yol gibi bir dize kesiminin bir dosya yolu gibi işlenini önlemek için çift tırnak içine alın, örneğin: "my.key" | $(Agent.OS) | key.file

  • Dosya desenleri:
    en az bir dosyayla eşleşmesi gereken glob stili joker karakter deseninin virgülle ayrılmış listesi. Örnek:

    • **/yarn.lock: sources dizini altındaki tüm yarn.lock dosyaları
    • */asset.json, !bin/**: bin dizini dışında sources dizini altındaki bir dizinde bulunan tüm asset.json dosyaları

Bir dosya yolu veya dosya deseni tarafından tanımlanan herhangi bir dosyanın içeriği, dinamik önbellek anahtarı oluşturmak için karma olarak tanımlanır. Bu, projenizin önbelleğe alınanları benzersiz olarak tanımlayan dosyaları olduğunda yararlıdır. Örneğin, , , veya gibi dosyalara genellikle bir önbellek anahtarında başvurur çünkü bunların hepsi benzersiz package-lock.json bir bağımlılık kümesi temsil yarn.lockGemfile.lockPipfile.lock ediyor.

Göreli dosya yolları veya dosya desenleri ile $(System.DefaultWorkingDirectory) çözümlenir.

Örnek:

Yarn tarafından yüklenmiş bağımlılıkların nasıl önbelleğe alınarak önbelleğe alınarak alınlarını gösteren bir örnek şu şekildedir:

variables:
  YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn

steps:
- task: Cache@2
  inputs:
    key: '"yarn" | "$(Agent.OS)" | yarn.lock'
    restoreKeys: |
       yarn | "$(Agent.OS)"
       yarn
    path: $(YARN_CACHE_FOLDER)
  displayName: Cache Yarn packages

- script: yarn --frozen-lockfile

Bu örnekte, önbellek anahtarı üç parça içerir: statik dize ("yarn"), bu önbellek her işletim sistemi için benzersiz olduğu için işin üzerinde çalışan işletim sistemi ve önbellekte bağımlılık kümesine benzersiz olarak tanımlayan dosya yarn.lock karması.

Görev eklendikten sonra ilk çalıştırmada, önbellek adımı bu anahtar tarafından tanımlanan önbellek mevcut olmayan bir "önbellek isabeti" durumu bildirecek. Son adımdan sonra, 'daki dosyalardan bir önbellek oluşturulur $(Pipeline.Workspace)/.yarn ve karşıya yükler. Sonraki çalıştırmada, önbellek adımı bir "önbellek isabeti" bildirecek ve önbelleğin içeriği indirilecek ve geri yüklenecek.

Anahtarları geri yükleme

restoreKeys birden çok anahtar veya anahtar ön ekini sorgulamak istiyorsa kullanılabilir. Bu, bir isabet almama durumunda başka bir key anahtara geri dönüş yapmak için kullanılır. Geri yükleme anahtarı, ön eke göre anahtar aratır ve sonuç olarak en son oluşturulan önbellek girişini gösterir. İşlem hattı tam eşleşme bulamazsa ama bunun yerine kısmi önbellek isabeti kullanmak istiyorsa bu yararlıdır. Birden çok geri yükleme anahtarı eklemek için, bunları geri yükleme anahtarını belirtmek için yeni bir satır kullanarak sınırlandırın (daha fazla ayrıntı için örneğine bakın). Geri yükleme anahtarlarının denenecek sırası üstten aşağıya doğru olur.

Kendinden konak aracıda gerekli yazılım

Arşiv yazılımı / Platform Windows Linux Mac
GNU Tar Gerekli Gerekli No
BSD Tar Hayır Hayır Gerekli
7-Zip Önerilen Hayır Hayır

Yukarıdaki yürütülebilir dosyaları PATH ortam değişkensinde listelenen bir klasörde olması gerekir. Barındırılan aracıların dahil edilen yazılımla birlikte gelir, bu yalnızca kendi içinde barındırılan aracılar için geçerlidir.

Örnek:

Yarn tarafından geri yükleme anahtarlarının nasıl kullanıla ilgili bir örnek şu şekildedir:

variables:
  YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn

steps:
- task: Cache@2
  inputs:
    key: '"yarn" | "$(Agent.OS)" | yarn.lock'
    restoreKeys: |
       yarn | "$(Agent.OS)"
       yarn
    path: $(YARN_CACHE_FOLDER)
  displayName: Cache Yarn packages

- script: yarn --frozen-lockfile

Bu örnekte önbellek görevi, anahtarın önbellekte mevcut olup olduğunu bulmaya çalışacak. Anahtar önbellekte yoksa, ilk geri yükleme anahtarını kullanmayı yarn | $(Agent.OS) dener. Bu, bu anahtarla tam olarak eşan veya ön ek olarak bu anahtara sahip olan tüm anahtarları aramayı dener. Farklı bir karma kesim varsa ön ek yarn.lock isabeti olabilir. Örneğin, aşağıdaki anahtar, eski anahtarın farklı bir karmayı ortayatığı önbellekte yarn | $(Agent.OS) | old-yarn.lockyarn.lockyarn.lock ise, geri yükleme anahtarı kısmi isabet sağlar. İlk geri yükleme anahtarında bir yanlışlık varsa, ile başlayan herhangi bir anahtarı bulmaya çalışacak bir sonraki yarn geri yükleme anahtarını yarn kullanır. Ön ek isabetleri için, sonuç olarak en son oluşturulan önbellek anahtarının sonucu oluşturulur.

Not

İşlem hattında bir veya daha fazla önbelleğe alma görevi olabilir. Önbelleğe alma depolama kapasitesiyle ilgili bir sınır yoktur ve aynı işlem hattından gelen işler ve görevler aynı önbelleğe erişebilir ve aynı önbelleği paylaşabilir.

Önbellek yalıtımı ve güvenliği

Farklı işlem hatlarından ve farklı dallardan gelen önbellekler arasında yalıtım sağlamak için her önbellek kapsam adlı mantıksal bir kapsayıcıya aittir. Kapsamlar, bir işlem hattından bir işin farklı bir işlem hattından önbelleklere erişmesini sağlayan bir güvenlik sınırı sağlar ve pr oluşturma işinin pr'nin hedef dalı için önbelleklere okuma erişimi vardır (aynı işlem hattı için), ancak hedef dalın kapsamında önbellek yazamaz (oluşturamaz).

Çalıştırma sırasında bir önbellek adımıyla karşılaşıldı, anahtar tarafından tanımlanan önbellek sunucudan istenecek. Sunucu daha sonra işe görünür olan kapsamlardan bu anahtara sahip bir önbellek olup o önbelleği (varsa) döndürür. Önbellek kaydetmede (işin sonunda), işlem hattını ve dalı temsil eden kapsama bir önbellek yazılır. Diğer ayrıntılar için aşağıya bakın.

CI, el ile ve zamanlanmış çalıştırmalar

Kapsam Okuma Yazma
Kaynak dal Yes Yes
ana dal Yes Hayır

Çekme isteği çalıştırmaları

Kapsam Okuma Yazma
Kaynak dal Yes Hayır
Hedef dal Yes Hayır
Ara dal refs/pull/1/merge (örneğin) Yes Yes
ana dal Yes Hayır

Çekme isteği fork çalıştırmaları

Dal Okuma Yazma
Hedef dal Yes Hayır
Ara dal refs/pull/1/merge (örneğin) Yes Yes
ana dal Yes Hayır

İpucu

Önbelleklerin kapsamı zaten bir proje, işlem hattı ve dal olduğundan, önbellek anahtarına herhangi bir proje, işlem hattı veya dal tanımlayıcıları dahil etmek gerek yoktur.

Önbellek geri yüklemede koşullandırma

Bazı senaryolarda, önbelleğin başarıyla geri yüklemesi farklı bir adım kümesi çalıştırmaya neden olur. Örneğin, önbellek geri yüklendiyse bağımlılıkları yüklayan bir adım atlanabilir. Bu, görev girişi cacheHitVar kullanılarak mümkündür. Bu girişi bir ortam değişkeninin adına ayarlamak, önbellek isabeti olduğunda, geri yükleme anahtarı önbelleği isabeti olduğunda değişkenin olarak ayarlanmış olmasına neden olur, aksi takdirde trueinexact olarak false ayarlanır. Bu değişkene daha sonra bir adım koşulunda veya bir betik içinde başvurul olabilir.

Aşağıdaki örnekte, önbellek install-deps.sh geri yüklenirken adım atlanır:

steps:
- task: Cache@2
  inputs:
    key: mykey | mylockfile
    restoreKeys: mykey
    path: $(Pipeline.Workspace)/mycache
    cacheHitVar: CACHE_RESTORED

- script: install-deps.sh
  condition: ne(variables.CACHE_RESTORED, 'true')

- script: build.sh

PaketLeyici

Bundler kullanan Ruby projelerinde Bundler tarafından kullanılan ortam değişkenlerini geçersiz kılarak BUNDLE_PATHBUNDLE_PATH Gems için bakacak yolu ayarlayın.

Örnek:

variables:
  BUNDLE_PATH: $(Pipeline.Workspace)/.bundle

steps:
- task: Cache@2
  inputs:
    key: 'gems | "$(Agent.OS)" | my.gemspec'
    restoreKeys: | 
      gems | "$(Agent.OS)"
      gems
    path: $(BUNDLE_PATH)
  displayName: Cache gems

- script: bundle install

Ccache (C/C++)

Ccache, C/C++ için bir derleyici önbelleğidir. İşlem hattında Ccache'i kullanmak için yüklü ve isteğe bağlı olarak uygulamanıza eklendiklarından Ccache emin olun PATH (bkz. Ccache Ortam CCACHE_DIR değişkenlerini altındaki bir yola ayarlayın ve $(Pipeline.Workspace) bu dizini önbelleğe alın.

Örnek:

variables:
  CCACHE_DIR: $(Pipeline.Workspace)/ccache

steps:
- bash: |
    sudo apt-get install ccache -y    
    echo "##vso[task.prependpath]/usr/lib/ccache"
  displayName: Install ccache and update PATH to use linked versions of gcc, cc, etc

- task: Cache@2
  inputs:
    key: 'ccache | "$(Agent.OS)"'
    path: $(CCACHE_DIR)
    restoreKeys: | 
      ccache | "$(Agent.OS)"
  displayName: ccache

Diğer ayrıntılar için bkz. Ccache yapılandırma ayarları.

Docker görüntüleri

Önbelleğe Alma Docker görüntülerinin çalışması işlem hattınızı çalıştırma süresini önemli ölçüde azaltır.

pool:
  vmImage: 'Ubuntu-18.04'
steps:
  - task: Cache@2
    displayName: Cache task
    inputs:
      key: 'docker | "$(Agent.OS)" | cache'
      path: $(Pipeline.Workspace)/docker
      cacheHitVar: CACHE_RESTORED                #Variable to set to 'true' when the cache is restored
    
  - script: |
      docker load -i $(Pipeline.Workspace)/docker/cache.tar
    displayName: Docker restore
    condition: and(not(canceled()), eq(variables.CACHE_RESTORED, 'true'))

  - script: |
      mkdir -p $(Pipeline.Workspace)/docker
      docker save -o $(Pipeline.Workspace)/docker/cache.tar cache
    displayName: Docker save
    condition: and(not(canceled()), or(failed(), ne(variables.CACHE_RESTORED, 'true')))
  • key: (gerekli) - önbellek için benzersiz bir tanımlayıcı.
  • path: (gerekli) - önbelleğe almak istediğiniz klasörün veya dosyanın yolu.

Golang

Golang projeleri için go.mod dosyasında indirilecek paketleri belirtebilirsiniz. Değişkeniniz GOCACHE henüz ayarlanmamışsa önbelleğin indirilsin istediğiniz yere ayarlayın.

Örnek:

variables:
  GO_CACHE_DIR: $(Pipeline.Workspace)/.cache/go-build/

steps:
- task: Cache@2
  inputs:
    key: 'go | "$(Agent.OS)" | go.mod'
    restoreKeys: | 
      go | "$(Agent.OS)"
    path: $(GO_CACHE_DIR)
  displayName: Cache GO packages

Gradle

Gradle'ın yerleşik önbelleğe alma desteğinin kullanılması derleme süresi üzerinde önemli bir etkisi olabilir. Derleme önbelleğini etkinleştirmek için ortam değişkenini altındaki bir yola ayarlayın ve derlemenizi ile çalıştırın GRADLE_USER_HOME$(Pipeline.Workspace) veya --build-cacheorg.gradle.caching=true dosyanıza gradle.properties ekleyin.

Örnek:

variables:
  GRADLE_USER_HOME: $(Pipeline.Workspace)/.gradle

steps:
- task: Cache@2
  inputs:
    key: 'gradle | "$(Agent.OS)" | **/build.gradle.kts' # Swap build.gradle.kts for build.gradle when using Groovy
    restoreKeys: |
      gradle | "$(Agent.OS)"
      gradle
    path: $(GRADLE_USER_HOME)
  displayName: Configure gradle caching

- task: Gradle@2
  inputs:
    gradleWrapperFile: 'gradlew'
    tasks: 'build'
    options: '--build-cache'
  displayName: Build

- script: |   
    # stop the Gradle daemon to ensure no files are left open (impacting the save cache operation later)
    ./gradlew --stop    
  displayName: Build
  • restoreKeys:Birincil anahtar başarısız olursa geri dönüş anahtarları (İsteğe bağlı)

Not

Önbellekler sabittir; belirli bir kapsam (dal) için belirli bir anahtara sahip bir önbellek oluşturulduktan sonra önbellek güncelleştirilemez. Bu, anahtarın sabit bir değer olması, aynı dal için sonraki tüm derlemelerin önbelleğin içeriği değiştirilmiş olsa bile önbelleği güncelleştiremiycez anlamına gelir. Sabit bir anahtar değeri kullanmak için bağımsız değişkeni bir geri restoreKeys dönüş seçeneği olarak kullanabilirsiniz.

Maven

Maven,indirmeleri ve yapıtları depolarken yerel bir depoya sahiptir. Etkinleştirmek için seçeneğini altında maven.repo.local bir yol olarak ayarlayın ve bu klasörü $(Pipeline.Workspace) önbelleğe alın.

Örnek:

variables:
  MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
  MAVEN_OPTS: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'

steps:
- task: Cache@2
  inputs:
    key: 'maven | "$(Agent.OS)" | **/pom.xml'
    restoreKeys: |
      maven | "$(Agent.OS)"
      maven
    path: $(MAVEN_CACHE_FOLDER)
  displayName: Cache Maven local repo

- script: mvn install -B -e

Maven görevi kullanıyorsanız değişkeninüzerine yazıldığından değişkeni de iletirsiniz:

- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'

.NET/NuGet

doğrudan proje dosyanız NuGet ve dosyanız varsa, ortam değişkenini altındaki bir yola ayarp bu dizini önbelleğe alan bir yola ayarerek önbelleğe almayı PackageReferencespackages.lock.jsonNUGET_PACKAGES$(UserProfile) etkinleştirebilirsiniz.

Örnek:

variables:
  NUGET_PACKAGES: $(Pipeline.Workspace)/.nuget/packages

steps:
- task: Cache@2
  inputs:
    key: 'nuget | "$(Agent.OS)" | $(Build.SourcesDirectory)/packages.lock.json'
    restoreKeys: |
       nuget | "$(Agent.OS)"
    path: $(NUGET_PACKAGES)
  displayName: Cache NuGet packages

İpucu

Ortam değişkenleri her zaman dosyanın tüm ayarlarını NuGet.Config geçersiz kılar. İşlem hattınız şu hatayla başarısız oldu: , aracıda yeni yerel yola işaret etmek için için bir işlem hattı değişkeni Information, There is a cache miss.NUGET_PACKAGES oluşturmanız gerekir (exp d:\a\1). İşlem hattınız değişiklikleri toplamalı ve göreve başarıyla devam edecektir.

Yukarıdaki örnekte, $(Build.SourcesDirectory) projenizin oluşturulan kilit dosyasını belirtir. Kilit dosyası oluşturmayı etkinleştirme hakkında daha fazla bilgi için bkz. Proje dosyalarında paket başvurusu.

Node.js/npm

Node.js projesinde önbelleğe almayı etkinleştirmenin farklı yolları vardır, ancak önerilen yol npm'nin paylaşılan önbellek dizinini önbelleğe almadır. Bu dizin npm tarafından yönetilir ve indirilen tüm modüllerin önbelleğe alınmış bir sürümünü içerir. Yükleme sırasında npm, önce bu dizini (varsayılan olarak) genel ağ veya özel kayıt defterine yapılan ağ çağrılarını azaltan veya ortadan kaldıran npm kayıt defteri modüller için denetler.

npm'nin paylaşılan önbellek dizininin varsayılan yolu tüm platformlarda aynı olduğundan,ortam değişkenlerini altındaki bir yola geçersiz kılmanız $(Pipeline.Workspace) önerilir. Bu, önbelleğin kapsayıcı ve kapsayıcı olmayan işlerden erişilebilir olmasını da sağlar.

Örnek:

variables:
  npm_config_cache: $(Pipeline.Workspace)/.npm

steps:
- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    restoreKeys: |
       npm | "$(Agent.OS)"
    path: $(npm_config_cache)
  displayName: Cache npm

- script: npm ci

Projenizin bir dosyası package-lock.json yoksa, bunun yerine önbellek package.json anahtarı girişine bakın.

İpucu

Tutarlı, yinelenebilir bir modül kümesi kullanılması için klasörü silen, çağrılırken npm cinode_modules önbelleğe almayı node_modules engellemeniz npm ci gerekir.

Node.js/Yarn

npm'de olduğu gibi Yarn ile yüklenmiş paketleri önbelleğe yüklemenin farklı yolları vardır. Önerilen yol Yarn'ın paylaşılan önbellek klasörünü önbelleğe etmektir. Bu dizin Yarn tarafından yönetilir ve indirilen tüm paketlerin önbelleğe alınmış bir sürümünü içerir. Yükleme sırasında Yarn, önce bu dizini (varsayılan olarak) modüller için denetler; bu da genel veya özel kayıt defterleri için ağ çağrılarını azaltan veya ortadan kaldıran bir dizindir.

Örnek:

variables:
  YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn

steps:
- task: Cache@2
  inputs:
    key: 'yarn | "$(Agent.OS)" | yarn.lock'
    restoreKeys: |
       yarn | "$(Agent.OS)"
       yarn
    path: $(YARN_CACHE_FOLDER)
  displayName: Cache Yarn packages

- script: yarn --frozen-lockfile

Python/Anaconda

Anaconda ortamları ile işlem hattı önbelleğinizi ayarlama

Örnek

variables:
  CONDA_CACHE_DIR: $(Pipeline.Workspace)/.condarc

# Add conda to system path
steps:
- script: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

- task: Cache@2
  displayName: Use cached Anaconda environment
  inputs:
    key: 'conda | "$(Agent.OS)" | environment.yml'
    restoreKeys: | 
      python | "$(Agent.OS)"
      python
    path: $(CONDA_CACHE_DIR)
    cacheHitVar: CONDA_CACHE_RESTORED

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment
  condition: eq(variables.CONDA_CACHE_RESTORED, 'false')

PHP/Composer

Composer kullanan PHP projeleri için, Composer COMPOSER_CACHE_DIRCOMPOSER_CACHE_DIR tarafından kullanılan ortam değişkenlerini geçersiz Composer.

Örnek:

variables:
  COMPOSER_CACHE_DIR: $(Pipeline.Workspace)/.composer

steps:
- task: Cache@2
  inputs:
    key: 'composer | "$(Agent.OS)" | composer.lock'
    restoreKeys: |
      composer | "$(Agent.OS)"
      composer
    path: $(COMPOSER_CACHE_DIR)
  displayName: Cache composer

- script: composer install

Bilinen sorunlar ve geri bildirim

İşlem hattınız için önbelleğe almayı ayarlarken sorun yaşıyorsanız, depoda açık sorunların listesini kontrol edin. Sorunlarınızı listede görmüyorsanız yeni bir tane oluşturun ve senaryoyla ilgili gerekli bilgileri sağlar.

&Soru-Cevap

S: Bir önbelleği temizl miyim?

A: Önbelleği temizleme şu anda desteklenmiyor. Ancak, anahtarı mevcut önbelleklerde isabetleri önlemeyecek şekilde değiştirmek için var olan önbellek anahtarınıza bir dize değişmez değeri (örneğin, version2 ) eklersiniz. Örneğin, aşağıdaki önbellek anahtarını bundan değiştirebilirsiniz:

key: 'yarn | "$(Agent.OS)" | yarn.lock'

şu şekilde:

key: 'version2 | yarn | "$(Agent.OS)" | yarn.lock'

S: Önbellek ne zaman sona erer?

A: Önbelleklerin süresi yedi gün boyunca etkinlik yok olduktan sonra dolar.

S: Önbelleğin boyutuyla ilgili bir sınır var mı?

Y: Tek tek önbelleklerin boyutu veya kuruluşta tüm önbelleklerin toplam boyutu için zorunlu bir sınır yoktur.