Mezipaměť kanálů
Služby Azure DevOps
Ukládání do mezipaměti kanálu může pomoct zkrátit dobu sestavení tím, že umožníte opětovnému použití výstupů nebo stažených závislostí z jednoho spuštění v pozdějších spuštěních. Tím se sníží nebo zabrání nákladům na opětovné vytvoření nebo opětovnému stažení stejných souborů. Ukládání do mezipaměti je užitečné zejména ve scénářích, kdy se na začátku každého spuštění stáhnou stejné závislosti. To je často časově náročný proces zahrnující stovky nebo tisíce síťových volání.
Ukládání do mezipaměti může být efektivní při vylepšení doby sestavení za předpokladu, že doba obnovení a uložení mezipaměti je kratší než doba, kdy se výstup znovu vytvoří úplně od začátku. Z tohoto důvodu nemusí být ukládání do mezipaměti efektivní ve všech scénářích a může mít ve skutečnosti negativní dopad na čas sestavení.
Poznámka:
Ukládání kanálů do mezipaměti je podporováno v úlohách fondu agentů pro kanály YAML i klasické kanály. Nepodporuje se ale v kanálech verze Classic.
Kdy použít artefakty a ukládání do mezipaměti
Ukládání kanálů do mezipaměti a artefakty kanálu provádějí podobné funkce, ale jsou navržené pro různé scénáře a neměly by se používat zaměnitelně.
Artefakty kanálu použijte v případě, že potřebujete vzít konkrétní soubory vytvořené v jedné úloze a sdílet je s jinými úlohami (a tyto další úlohy pravděpodobně selžou bez nich).
Ukládání kanálů do mezipaměti použijte, pokud chcete zlepšit dobu sestavení opětovným použitím souborů z předchozích spuštění (a nemáte tyto soubory vliv na schopnost úlohy spustit).
Poznámka:
Ukládání kanálů do mezipaměti a artefakty kanálu jsou bezplatné pro všechny úrovně (bezplatné a placené). Další podrobnosti najdete v tématu Využití úložiště artefaktů.
Úloha mezipaměti: jak funguje
Ukládání do mezipaměti se přidá do kanálu pomocí úlohy Mezipaměti. Tento úkol funguje stejně jako jakýkoli jiný úkol a je přidán do steps
oddílu úlohy.
Když během spuštění dojde ke kroku mezipaměti, úloha obnoví mezipaměť na základě zadaných vstupů. Pokud se nenajde žádná mezipaměť, krok se dokončí a spustí se další krok v úloze.
Po spuštění všech kroků v úloze a za předpokladu úspěšného stavu úlohy se automaticky přidá speciální krok "Post-job: Cache" a aktivuje se pro každý krok obnovení mezipaměti, který nebyl vynechán. Tento krok zodpovídá za ukládání mezipaměti.
Poznámka:
Mezipaměti jsou neměnné, což znamená, že po vytvoření mezipaměti nelze jeho obsah změnit.
Konfigurace úlohy mezipaměti
Úloha mezipaměti má dva požadované argumenty: klíč a cestu:
- path: cesta ke složce, do které se má ukládat do mezipaměti. Může to být absolutní nebo relativní cesta. Relativní cesty jsou vyřešeny proti
$(System.DefaultWorkingDirectory)
.
Poznámka:
Předdefinované proměnné můžete použít k uložení cesty ke složce, kterou chcete uložit do mezipaměti, ale zástupné cardy se nepodporují.
- klíč: měl by být nastaven na identifikátor mezipaměti, kterou chcete obnovit nebo uložit. Klíče se skládají z kombinace řetězcových hodnot, cest k souborům nebo vzorů souborů, kde je každý segment oddělený znakem
|
.
Řetězce:
Pevná hodnota (například název mezipaměti nebo názvu nástroje) nebo převzatá z proměnné prostředí (například aktuální operační systém nebo název aktuální úlohy)Cesty k souborům:
Cesta ke konkrétnímu souboru, jehož obsah bude hashován. Tento soubor musí existovat v době, kdy je úloha spuštěna. Mějte na paměti, že každý segment klíče, který vypadá jako cesta k souboru, se bude považovat za cestu k souboru. Zejména to zahrnuje segmenty obsahující.
. To může vést k selhání úlohy v případě, že tento soubor neexistuje.Tip
Pokud se chcete vyhnout tomu, aby se s segmentem řetězce podobné cesty zacházelo jako s cestou k souboru, zabalte ho dvojitými uvozovkami, například:
"my.key" | $(Agent.OS) | key.file
Vzory souborů:
Čárkami oddělený seznam zástupných znaků ve stylu globu, který musí odpovídat alespoň jednomu souboru. Příklad:**/yarn.lock
: Všechny soubory yarn.lock v adresáři zdrojů*/asset.json, !bin/**
: všechny asset.json soubory umístěné v adresáři v adresáři zdrojů s výjimkou adresáře bin
Obsah libovolného souboru identifikovaného cestou k souboru nebo vzorem souboru je hashován, aby se vytvořil klíč dynamické mezipaměti. To je užitečné, když má váš projekt soubory, které jednoznačně identifikují, co se ukládá do mezipaměti. Například soubory jako package-lock.json
, , yarn.lock
Gemfile.lock
nebo Pipfile.lock
jsou běžně odkazovány v klíči mezipaměti, protože všechny představují jedinečnou sadu závislostí.
Relativní cesty k souborům nebo vzory souborů jsou vyřešeny proti $(System.DefaultWorkingDirectory)
.
Příklad:
Tady je příklad ukazující, jak ukládat závislosti nainstalované pomocí Yarn do mezipaměti:
variables:
YARN_CACHE_FOLDER: $(Pipeline.Workspace)/s/.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
V tomto příkladu obsahuje klíč mezipaměti tři části: statický řetězec ("yarn"), operační systém, na kterém úloha běží, protože tato mezipaměť je jedinečná pro operační systém a hodnota hash yarn.lock
souboru, který jednoznačně identifikuje sadu závislostí v mezipaměti.
Při prvním spuštění po přidání úlohy bude krok mezipaměti hlásit "chybějící mezipaměť", protože mezipaměť identifikovaná tímto klíčem neexistuje. Po posledním kroku se z souborů a $(Pipeline.Workspace)/s/.yarn
nahraje se mezipaměť. V dalším spuštění nahlásí krok mezipaměti "přístup do mezipaměti" a obsah mezipaměti se stáhne a obnoví.
Při použití checkout: self
je úložiště rezervováno $(Pipeline.Workspace)/s
a vaše .yarn
složka se obvykle nachází v samotném úložišti.
Poznámka:
Pipeline.Workspace
je místní cesta k agentu, na kterém běží váš kanál, kde se vytvářejí všechny adresáře. Tato proměnná má stejnou hodnotu jako Agent.BuildDirectory
.
Nezapomeňte proměnnou YARN_CACHE_FOLDER
aktualizovat, pokud používáte cokoli jiného, než checkout: self
je toto, mělo by odkazovat na úložiště, ve kterém .yarn
se nachází.
Obnovení klíčů
restoreKeys
lze použít, pokud se chcete dotazovat na více přesných klíčů nebo předpon klíčů. To se používá k návratu k jinému klíči v případě, že key
nepřináší hit. Obnovovací klíč vyhledá klíč podle předpony a v důsledku toho získá nejnovější vytvořenou položku mezipaměti. To je užitečné, pokud kanál nemůže najít přesnou shodu, ale místo toho chce použít částečnou mezipaměť. Pokud chcete vložit více klíčů obnovení, oddělte je pomocí nového řádku a označte klíč obnovení (další podrobnosti najdete v příkladu). Pořadí, ve kterém se klíče obnovení budou zkoušet, budou odshora dolů.
Požadovaný software v místním agentu
Archivní software / platforma | Windows | Linux | Mac |
---|---|---|---|
GNU Tar | Požaduje se | Požaduje se | No |
BSD Tar | No | Ne | Požaduje se |
7-Zip | Doporučené | No | Ne |
Výše uvedené spustitelné soubory musí být ve složce uvedené v proměnné prostředí PATH. Mějte na paměti, že hostovaní agenti se dodávají se softwarem, který je součástí, to platí jenom pro agenty v místním prostředí.
Příklad:
Tady je příklad použití obnovovaných klíčů podle Yarn:
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
V tomto příkladu se úloha mezipaměti pokusí zjistit, jestli klíč existuje v mezipaměti. Pokud klíč v mezipaměti neexistuje, pokusí se použít první obnovovací klíč yarn | $(Agent.OS)
.
Tím se pokusíte vyhledat všechny klíče, které přesně odpovídají danému klíči, nebo má tento klíč jako předponu. K dosažení předpony může dojít v případě, že došlo k jinému yarn.lock
segmentu hash.
Pokud byl například následující klíč yarn | $(Agent.OS) | old-yarn.lock
v mezipaměti, ve které old-yarn.lock
byl výsledek jiné hodnoty hash než yarn.lock
, vrátí klíč obnovení částečný přístup.
Pokud u prvního klíče obnovení dojde k chybě, použije se další obnovovací klíč yarn
, který se pokusí najít libovolný klíč, který yarn
začíná . Výsledek pro přístupy předpony vynese jako výsledek naposledy vytvořený klíč mezipaměti.
Poznámka:
Kanál může mít jednu nebo více úloh ukládání do mezipaměti. Kapacita úložiště ukládání do mezipaměti není nijak omezena a úlohy a úlohy ze stejného kanálu můžou přistupovat ke stejné mezipaměti a sdílet je.
Izolace a zabezpečení mezipaměti
Aby se zajistila izolace mezi mezipamětí z různých kanálů a různých větví, každá mezipaměť patří do logického kontejneru označovaného jako obor. Obory poskytují hranici zabezpečení, která zajišťuje, že úloha z jednoho kanálu nemá přístup k mezipamětí z jiného kanálu a úloha, která vytváří žádost o přijetí změn, má přístup ke čtení do mezipamětí cílové větve žádosti o přijetí změn (pro stejný kanál), ale nemůže zapisovat (vytvářet) mezipaměti v oboru cílové větve.
Když během spuštění dojde k kroku mezipaměti, vyžádá se ze serveru mezipaměť identifikovaná klíčem. Server pak vyhledá mezipaměť s tímto klíčem z oborů viditelných pro úlohu a vrátí mezipaměť (pokud je k dispozici). Při ukládání mezipaměti (na konci úlohy) se mezipaměť zapíše do oboru představujícího kanál a větev. Další informace naleznete níže.
CI, ruční a naplánovaná spuštění
Obor | Čtení | Zápis |
---|---|---|
Zdrojová větev | Ano | Yes |
main větev |
Yes | No |
master větev |
Yes | No |
Spuštění žádostí o přijetí změn
Obor | Čtení | Zápis |
---|---|---|
Zdrojová větev | Yes | No |
Cílová větev | Yes | No |
Zprostředkující větev (například refs/pull/1/merge ) |
Ano | Yes |
main větev |
Yes | No |
master větev |
Yes | No |
Spuštění forku žádosti o přijetí změn
Pobočka | Čtení | Zápis |
---|---|---|
Cílová větev | Yes | No |
Zprostředkující větev (například refs/pull/1/merge ) |
Ano | Yes |
main větev |
Yes | No |
master větev |
Yes | No |
Tip
Vzhledem k tomu, že mezipaměti jsou již vymezeny na projekt, kanál a větev, není nutné do klíče mezipaměti zahrnout žádné identifikátory projektu, kanálu ani větve.
Klimatizace při obnovení mezipaměti
V některých scénářích by úspěšné obnovení mezipaměti mělo způsobit spuštění jiné sady kroků. Například krok, který nainstaluje závislosti, se dá přeskočit, pokud se mezipaměť obnovila. To je možné pomocí cacheHitVar
vstupu úkolu. Nastavení tohoto vstupu na název proměnné prostředí způsobí, že se proměnná nastaví, když dojde k true
dosažení mezipaměti, inexact
v případě dosažení mezipaměti obnovovací klíče, jinak je nastavená na false
hodnotu . Na tuto proměnnou se pak dá odkazovat v podmínce kroku nebo ve skriptu.
V následujícím příkladu se install-deps.sh
krok při obnovení mezipaměti přeskočí:
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
Bundler
U projektů Ruby využívajících Bundler přepište BUNDLE_PATH
proměnnou prostředí, kterou sada Bundler používá k nastavení cesty Bundler , ve které hledá gemy.
Příklad:
variables:
BUNDLE_PATH: $(Pipeline.Workspace)/.bundle
steps:
- task: Cache@2
displayName: Bundler caching
inputs:
key: 'gems | "$(Agent.OS)" | Gemfile.lock'
path: $(BUNDLE_PATH)
restoreKeys: |
gems | "$(Agent.OS)"
gems
Ccache (C/C++)
Ccache je mezipaměť kompilátoru pro C/C++. Pokud chcete použít mezipaměť Ccache v kanálu, ujistěte se, že Ccache
je nainstalovaná a volitelně přidaná do vašeho PATH
kanálu (viz režimy spuštění mezipaměti). Nastavte proměnnou CCACHE_DIR
prostředí na cestu pod $(Pipeline.Workspace)
tímto adresářem a do mezipaměti.
Příklad:
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
displayName: Ccache caching
inputs:
key: 'ccache | "$(Agent.OS)" | $(Build.SourceVersion)'
path: $(CCACHE_DIR)
restoreKeys: |
ccache | "$(Agent.OS)"
Další podrobnosti najdete v nastavení konfigurace Ccache.
Image Dockeru
Ukládání imagí Dockeru do mezipaměti výrazně zkracuje dobu potřebnou ke spuštění kanálu.
variables:
repository: 'myDockerImage'
dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
tag: '$(Build.BuildId)'
pool:
vmImage: 'ubuntu-latest'
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'))
- task: Docker@2
displayName: 'Build Docker'
inputs:
command: 'build'
repository: '$(repository)'
dockerfile: '$(dockerfilePath)'
tags: |
'$(tag)'
- script: |
mkdir -p $(Pipeline.Workspace)/docker
docker save -o $(Pipeline.Workspace)/docker/cache.tar $(repository):$(tag)
displayName: Docker save
condition: and(not(canceled()), not(failed()), ne(variables.CACHE_RESTORED, 'true'))
- key: (povinné) – jedinečný identifikátor mezipaměti.
- path: (povinné) – cesta ke složce nebo souboru, který chcete uložit do mezipaměti.
Golang
U projektů jazyka Go můžete zadat balíčky, které se mají stáhnout v souboru go.mod . Pokud proměnná GOCACHE
ještě není nastavená, nastavte ji na místo, kam chcete mezipaměť stáhnout.
Příklad:
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
Použití integrované podpory ukládání do mezipaměti gradle může mít významný dopad na čas sestavení. Pokud chcete povolit mezipaměť sestavení, nastavte GRADLE_USER_HOME
proměnnou prostředí na cestu pod $(Pipeline.Workspace)
a buď spusťte sestavení se souborem--build-cache
, nebo ho gradle.properties
přidejte org.gradle.caching=true
do souboru.
Příklad:
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: Gradlew stop
- restoreKeys: Náhradní klíče, pokud primární klíč selže (volitelné)
Poznámka:
Mezipaměti jsou neměnné, jakmile se vytvoří mezipaměť s konkrétním klíčem pro určitý obor (větev), mezipaměť nelze aktualizovat. To znamená, že pokud je klíč pevnou hodnotou, nebudou moci všechna následná sestavení pro stejnou větev aktualizovat mezipaměť ani v případě, že se změnil obsah mezipaměti. Pokud chcete použít pevnou hodnotu klíče, musíte argument použít restoreKeys
jako záložní možnost.
Maven
Maven má místní úložiště, ve kterém ukládá stažené a sestavené artefakty. Chcete-li tuto složku povolit, nastavte maven.repo.local
možnost na cestu pod $(Pipeline.Workspace)
touto složkou a do mezipaměti.
Příklad:
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
Pokud používáte úlohu Maven, nezapomeňte také předat MAVEN_OPTS
proměnnou, protože se přepíše jinak:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
.NET/NuGet
Pokud používáte PackageReferences
ke správě závislostí NuGet přímo v souboru projektu a máte packages.lock.json
soubor, můžete ukládání do mezipaměti povolit nastavením NUGET_PACKAGES
proměnné prostředí na cestu pod $(UserProfile)
tímto adresářem a uložením tohoto adresáře do mezipaměti. Další podrobnosti o uzamčení závislostí najdete v referenčních informacích k balíčku v souborech projektu.
Pokud chcete použít více packages.lock.json, můžete dál použít následující příklad, aniž byste museli provádět změny. Obsah všech packages.lock.json souborů bude hashován a pokud se některý ze souborů změní, vygeneruje se nový klíč mezipaměti.
Příklad:
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)"
nuget
path: $(NUGET_PACKAGES)
displayName: Cache NuGet packages
Node.js/npm
Ukládání do mezipaměti v projektu Node.js se dá povolit různými způsoby, ale doporučeným způsobem je uložit do mezipaměti sdílený adresář mezipaměti npm. Tento adresář spravuje npm a obsahuje verzi všech stažených modulů v mezipaměti. Během instalace npm nejprve zkontroluje tento adresář (ve výchozím nastavení) pro moduly, které můžou omezit nebo eliminovat síťová volání veřejného registru npm nebo do privátního registru.
Vzhledem k tomu, že výchozí cesta k adresáři sdílené mezipaměti npm není stejná napříč všemi platformami, doporučuje se přepsat npm_config_cache
proměnnou prostředí na cestu pod $(Pipeline.Workspace)
. Tím také zajistíte, že mezipaměť bude přístupná z úloh kontejnerů a nekontejnerových úloh.
Příklad:
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
Pokud váš projekt soubor nemá package-lock.json
, místo toho na něj odkazujte package.json
ve vstupu klíče mezipaměti.
Tip
Protože npm ci
odstraní node_modules
složku, aby se zajistila konzistentní, opakovatelná sada modulů, měli byste se vyhnout ukládání do mezipaměti node_modules
při volání npm ci
.
Node.js/Yarn
Stejně jako u npm existují různé způsoby ukládání balíčků nainstalovaných do mezipaměti s Yarn. Doporučeným způsobem je ukládat do mezipaměti složku sdílené mezipaměti Yarn. Tento adresář spravuje Yarn a obsahuje verzi uložené v mezipaměti všech stažených balíčků. Během instalace Yarn nejprve zkontroluje tento adresář (ve výchozím nastavení) pro moduly, které můžou omezit nebo eliminovat síťová volání veřejných nebo privátních registrů.
Příklad:
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
Nastavení ukládání kanálu do mezipaměti s prostředími Anaconda:
Příklad
variables:
CONDA_CACHE_DIR: /usr/share/miniconda/envs
# Add conda to system path
steps:
- script: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
- bash: |
sudo chown -R $(whoami):$(id -ng) $(CONDA_CACHE_DIR)
displayName: Fix CONDA_CACHE_DIR directory permissions
- 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')
Windows
- task: Cache@2 displayName: Cache Anaconda inputs: key: 'conda | "$(Agent.OS)" | environment.yml' restoreKeys: | python | "$(Agent.OS)" python path: $(CONDA)/envs cacheHitVar: CONDA_CACHE_RESTORED - script: conda env create --quiet --file environment.yml displayName: Create environment condition: eq(variables.CONDA_CACHE_RESTORED, 'false')
PHP/Composer
U projektů PHP používajících Composer přepište proměnnou COMPOSER_CACHE_DIR
prostředí, kterou používá Composer.
Příklad:
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
Známé problémy a zpětná vazba
Pokud máte problémy s nastavením ukládání do mezipaměti pro váš kanál, projděte si seznam otevřených problémů v úložišti microsoft/azure-pipelines-tasks . Pokud svůj problém v seznamu nevidíte, vytvořte nový a uveďte potřebné informace o svém scénáři.
Q&A
Otázka: Můžu vymazat mezipaměť?
A: Vymazání mezipaměti se v současné době nepodporuje. Ke stávajícímu klíči mezipaměti ale můžete přidat řetězcový literál (například version2
) a změnit tak klíč způsobem, který zabrání případným zásahům do existujících mezipamětí. Změňte například následující klíč mezipaměti z tohoto:
key: 'yarn | "$(Agent.OS)" | yarn.lock'
Na toto:
key: 'version2 | yarn | "$(Agent.OS)" | yarn.lock'
Otázka: Kdy vyprší platnost mezipaměti?
A: Platnost mezipaměti vyprší po sedmi dnech žádné aktivity.
Otázka: Kdy se mezipaměť nahraje?
A: Po posledním kroku kanálu se z mezipaměti vytvoří mezipaměť path
a nahraje se. Další podrobnosti najdete v příkladu.
Otázka: Existuje omezení velikosti mezipaměti?
A: Neexistuje žádné vynucené omezení velikosti jednotlivých mezipamětí ani celkové velikosti všech mezipamětí v organizaci.