Folyamat gyorsítótárazása
Azure DevOps Services
A folyamat gyorsítótárazása segíthet csökkenteni a létrehozási időt azáltal, hogy lehetővé teszi, hogy az egy futtatás kimenetei vagy letöltött függőségei újra felhasználhatók legyenek a későbbi futtatásokban, ezáltal csökkentve vagy elkerülve ugyanazon fájlok újbóli létrehozását vagy újbóli letöltését. A gyorsítótárazás különösen akkor hasznos, ha ugyanazokat a függőségeket minden futtatás elején újra és újra letölti a rendszer. Ez gyakran több száz vagy több ezer hálózati hívással járó időigényes folyamat.
A gyorsítótárazás hatékonyan javíthatja a buildelési időt, feltéve, hogy a gyorsítótár visszaállítására és mentésére kevesebb idő áll rendelkezésre, mint a kimenet nulláról történő ismételt előállításának ideje. Emiatt előfordulhat, hogy a gyorsítótárazás nem minden esetben hatékony, és negatív hatással lehet a létrehozási időre.
Feljegyzés
A folyamat gyorsítótárazása mind a YAML, mind a klasszikus folyamatok ügynökkészlet-feladataiban támogatott. A klasszikus kiadási folyamatok azonban nem támogatják.
Mikor érdemes összetevőket használni a gyorsítótárazással szemben?
A folyamat gyorsítótárazása és a folyamatösszetevők hasonló funkciókat végeznek, de különböző forgatókönyvekhez vannak kialakítva, és nem használhatók fel felcserélhetően.
Folyamatösszetevőket akkor használjon, ha egy feladatban létrehozott adott fájlokat kell felvennie, és meg kell osztania őket más feladatokkal (és ezek a feladatok valószínűleg nélkülük meghiúsulnak).
Akkor használja a folyamat gyorsítótárazását , ha javítani szeretné a buildelési időt a korábbi futtatásokból származó fájlok újrafelhasználásával (és ha ezek a fájlok nem rendelkeznek ilyen fájlokkal, az nem befolyásolja a feladat futtatási képességét).
Feljegyzés
A folyamat gyorsítótárazása és a folyamatösszetevők minden szinten ingyenesek (ingyenesek és fizetősek). további részletekért lásd : Artifacts storage consumption .
Gyorsítótár-feladat: hogyan működik
A gyorsítótár-feladat használatával a gyorsítótár-feladat hozzáadja a gyorsítótárazást egy folyamathoz. Ez a tevékenység minden más tevékenységhez hasonlóan működik, és a feladat szakaszához lesz hozzáadva steps
.
Ha egy futtatás során gyorsítótár-lépés történik, a feladat a megadott bemenetek alapján visszaállítja a gyorsítótárat. Ha nem található gyorsítótár, a lépés befejeződik, és a feladat következő lépése fut.
Miután a feladat összes lépése lefutott, és a feladat sikeres állapotát feltételezte, a rendszer automatikusan hozzáad egy speciális "Post-job: Cache" lépést, és aktiválódik minden olyan "visszaállítási gyorsítótár" lépéshez, amely nem lett kihagyva. Ez a lépés a gyorsítótár mentéséért felelős.
Feljegyzés
A gyorsítótárak nem módosíthatók, ami azt jelenti, hogy a gyorsítótár létrehozása után a gyorsítótár tartalma nem módosítható.
A Gyorsítótár-feladat konfigurálása
A Gyorsítótár feladatnak két kötelező argumentuma van: kulcs és elérési út:
- elérési út: a gyorsítótárba helyezendő mappa elérési útja. Lehet abszolút vagy relatív elérési út. A relatív elérési utakat a rendszer feloldja
$(System.DefaultWorkingDirectory)
.
Feljegyzés
Előre definiált változókkal tárolhatja a gyorsítótárazni kívánt mappa elérési útját, a helyettesítő karakterek azonban nem támogatottak.
- kulcs: a visszaállítani vagy menteni kívánt gyorsítótár azonosítójára kell állítani. A kulcsok sztringértékek, fájlelérési utak vagy fájlminták kombinációjából állnak, ahol az egyes szegmenseket egy
|
karakter választja el egymástól.
Sztringek:
Rögzített érték (például a gyorsítótár vagy az eszköz neve) vagy környezeti változóból vett érték (például az aktuális operációs rendszer vagy az aktuális feladat neve)Fájl elérési útjai:
Egy adott fájl elérési útja, amelynek tartalma kivonatos lesz. Ennek a fájlnak a feladat futtatásakor kell léteznie. Ne feledje, hogy minden olyan kulcsszegmens, amely "fájlelérési útnak néz ki", fájlelérési útvonalként lesz kezelve. Ez különösen azokat a szegmenseket foglalja magában, amelyek egy.
. Ez azt eredményezheti, hogy a feladat meghiúsul, ha ez a "fájl" nem létezik.Tipp.
Ha el szeretné kerülni, hogy egy elérésiút-szerű sztringszakasz fájlelérési útvonalként legyen kezelve, csomagolja be dupla idézőjelekkel, például:
"my.key" | $(Agent.OS) | key.file
Fájlminták:
Vesszővel tagolt lista a glob stílusú helyettesítő karakterekről, amelyeknek legalább egy fájlnak meg kell egyeznie. Példa:**/yarn.lock
: az összes yarn.lock fájl a forráskönyvtár alatt*/asset.json, !bin/**
: az összes asset.json fájl, amely a forráskönyvtár alatt található egy könyvtárban, kivéve a bin könyvtárat
A fájl elérési útja vagy a fájlminta által azonosított fájlok tartalma kivonatolt, hogy dinamikus gyorsítótárkulcsot állítsunk elő. Ez akkor hasznos, ha a projekt olyan fájlokkal rendelkezik, amelyek egyedileg azonosítják a gyorsítótárazott adatokat. Például a gyorsítótárkulcsban gyakran hivatkoznak az olyan fájlokra, mint package-lock.json
a , yarn.lock
vagy Gemfile.lock
Pipfile.lock
általában hivatkoznak rájuk, mivel ezek mindegyike függőségek egyedi készletét képviseli.
A relatív fájlelérési utak vagy fájlminták feloldása a következőre $(System.DefaultWorkingDirectory)
van feloldva: .
Példa:
Íme egy példa a Yarn által telepített függőségek gyorsítótárazására:
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
Ebben a példában a gyorsítótárkulcs három részből áll: egy statikus sztringből ("yarn"), a feladat által futtatott operációs rendszerből, mivel ez a gyorsítótár operációs rendszerenként egyedi, és a yarn.lock
fájl kivonata, amely egyedileg azonosítja a gyorsítótár függőségeinek készletét.
A feladat hozzáadása utáni első futtatáskor a gyorsítótár-lépés "gyorsítótár-hiányt" jelent, mivel a kulcs által azonosított gyorsítótár nem létezik. Az utolsó lépés után a rendszer létrehoz egy gyorsítótárat a benne lévő $(Pipeline.Workspace)/s/.yarn
és feltöltött fájlokból. A következő futtatáskor a gyorsítótár lépése "gyorsítótár-találatot" jelent, és a gyorsítótár tartalma le lesz töltve és visszaállítva.
A használat során checkout: self
az adattár ki van véve $(Pipeline.Workspace)/s
, és a .yarn
mappa általában magában az adattárban található.
Feljegyzés
Pipeline.Workspace
a folyamatot futtató ügynök helyi elérési útja, ahol az összes címtár létrejön. Ez a változó ugyanazzal az értékkel rendelkezik, mint a Agent.BuildDirectory
.
Győződjön meg arról, hogy frissíti a változót YARN_CACHE_FOLDER
, ha nem checkout: self
ezt használja, mivel ennek arra az adattárra kell mutatnia, ahol .yarn
a tárház található.
Kulcsok visszaállítása
restoreKeys
akkor használható, ha több pontos kulcs vagy kulcselőtag alapján szeretne lekérdezni. Ez arra szolgál, hogy visszaessen egy másik kulcsra abban az esetben, ha egy key
nem eredményez találatot. A visszaállítási kulcs előtaggal keres egy kulcsot, és ennek eredményeként a legújabb gyorsítótár-bejegyzést hozza létre. Ez akkor hasznos, ha a folyamat nem talál pontos egyezést, de inkább részleges gyorsítótár-találatot szeretne használni. Ha több visszaállítási kulcsot szeretne beszúrni, akkor azokat egy új vonallal kell elválasztani a visszaállítási kulcs jelzéséhez (további részletekért lásd a példát). A visszaállítási kulcsok kipróbálásának sorrendje felülről lefelé halad.
Szükséges szoftver a saját üzemeltetésű ügynökön
Szoftver archiválása / platform | Windows | Linux | Mac |
---|---|---|---|
GNU Tar | Szükséges | Szükséges | Nem |
BSD Tar | Nem | Nem | Szükséges |
7-Zip | Ajánlott | Nem | Nem |
A fenti végrehajtható fájloknak a PATH környezeti változóban felsorolt mappában kell lenniük. Ne feledje, hogy a üzemeltetett ügynökök tartalmazzák a szoftvereket, ez csak a saját üzemeltetésű ügynökökre vonatkozik.
Példa:
Íme egy példa a visszaállítási kulcsok Yarn általi használatára:
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
Ebben a példában a gyorsítótár-feladat megpróbálja megtalálni, hogy a kulcs megtalálható-e a gyorsítótárban. Ha a kulcs nem létezik a gyorsítótárban, megpróbálja használni az első visszaállítási kulcsot yarn | $(Agent.OS)
.
Ez megpróbálja megkeresni az összes olyan kulcsot, amely pontosan egyezik az adott kulccsal, vagy előtagként szerepel a kulcsban. Előtag-találat akkor fordulhat elő, ha más yarn.lock
kivonatszegmens volt.
Ha például a következő kulcs yarn | $(Agent.OS) | old-yarn.lock
a gyorsítótárban volt, ahol a old-yarn.lock
kivonat más kivonatot eredményezett, mint yarn.lock
a visszaállítási kulcs, részleges találatot eredményez.
Ha hiányzik az első visszaállítási kulcs, akkor a következő visszaállítási kulcsot yarn
fogja használni, amely megpróbálja megtalálni a kezdőkulcsot yarn
. Előtag-találatok esetén az eredmény a legutóbb létrehozott gyorsítótárkulcsot adja eredményül.
Feljegyzés
Egy folyamat rendelkezhet egy vagy több gyorsítótárazási tevékenységgel. Nincs korlátozva a gyorsítótárazási kapacitás, és az ugyanabból a folyamatból származó feladatok és feladatok elérhetik és megoszthatják ugyanazt a gyorsítótárat.
Gyorsítótár elkülönítése és biztonsága
A különböző folyamatokból és ágakból származó gyorsítótárak elkülönítésének biztosítása érdekében minden gyorsítótár egy hatókörnek nevezett logikai tárolóhoz tartozik. A hatókörök olyan biztonsági határt biztosítanak, amely biztosítja, hogy az egyik folyamatból származó feladatok ne férhessenek hozzá a gyorsítótárakhoz egy másik folyamatból, és a lekérdezést létrehozó feladat olvasási hozzáféréssel rendelkezik a lekéréses kérelem célágának gyorsítótáraihoz (ugyanahhoz a folyamathoz), de nem tud gyorsítótárakat írni (létrehozni) a célág hatókörében.
Amikor egy futtatás során gyorsítótár-lépés történik, a rendszer a kulcs által azonosított gyorsítótárat kéri a kiszolgálótól. A kiszolgáló ezután megkeresi a feladat számára látható hatókörökből ezt a kulcsot tartalmazó gyorsítótárat, és visszaadja a gyorsítótárat (ha van ilyen). A gyorsítótár mentésekor (a feladat végén) a rendszer a gyorsítótárat a folyamat és az ág hatókörébe írja. További részleteket alább talál.
CI-, manuális és ütemezett futtatások
Hatókör | Olvasás | Írás |
---|---|---|
Forráság | Igen | Igen |
main ág |
Igen | Nem |
master ág |
Igen | Nem |
Lekéréses kérelmek futtatása
Hatókör | Olvasás | Írás |
---|---|---|
Forráság | Igen | Nem |
Célág | Igen | Nem |
Köztes ág (például refs/pull/1/merge ) |
Igen | Igen |
main ág |
Igen | Nem |
master ág |
Igen | Nem |
Lekéréses kérelem elágazásai
Ág | Olvasás | Írás |
---|---|---|
Célág | Igen | Nem |
Köztes ág (például refs/pull/1/merge ) |
Igen | Igen |
main ág |
Igen | Nem |
master ág |
Igen | Nem |
Tipp.
Mivel a gyorsítótárak már hatókörrel vannak elosztva egy projektre, folyamatra és ágra, a gyorsítótárkulcsban nincs szükség projekt-, folyamat- vagy ágazonosítókra.
A gyorsítótár helyreállításának kondicionálása
Bizonyos esetekben a gyorsítótár sikeres visszaállításának más lépések futtatását kell eredményeznie. A függőségeket telepítő lépés például kihagyható, ha a gyorsítótárat visszaállították. Ez a cacheHitVar
tevékenységbemenettel lehetséges. Ha ezt a bemenetet egy környezeti változó nevére állítja, akkor a változó gyorsítótár-találat inexact
esetén a visszaállítási kulcs gyorsítótárának találatára van beállítvatrue
, ellenkező esetben pedig a következőre false
van állítva: . Ezt a változót ezután egy lépésfeltételben vagy egy szkriptben lehet hivatkozni.
A következő példában a rendszer kihagyja a install-deps.sh
lépést a gyorsítótár visszaállításakor:
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
A Bundlert használó Ruby-projektek esetében felülbírálja a BUNDLE_PATH
Bundler által használt környezeti változót a Gemek elérési útjának beállításához.
Példa:
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++)
A Ccache a C/C++ fordítói gyorsítótára. Ha a Ccache-t szeretné használni a folyamatban, győződjön meg arról, hogy Ccache
telepítve van, és opcionálisan hozzáadja az Önhöz PATH
(lásd : Ccache-futtatási módok). Állítsa be a CCACHE_DIR
környezeti változót egy elérési útra $(Pipeline.Workspace)
, és gyorsítótárazza ezt a könyvtárat.
Példa:
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)"
További részletekért tekintse meg a Ccache konfigurációs beállításait .
Docker-képek
A Docker-képek gyorsítótárazása jelentősen csökkenti a folyamat futtatásához szükséges időt.
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'))
- kulcs: (kötelező) – a gyorsítótár egyedi azonosítója.
- elérési út: (kötelező) – a gyorsítótárazni kívánt mappa vagy fájl elérési útja.
Golang
Golang-projektek esetén megadhatja a go.mod fájlban letöltendő csomagokat. Ha a GOCACHE
változó még nincs beállítva, állítsa be oda, ahová a gyorsítótárat le szeretné tölteni.
Példa:
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
A Gradle beépített gyorsítótárazási támogatásának használata jelentős hatással lehet a buildelési időre. A buildgyorsítótár engedélyezéséhez állítsa a GRADLE_USER_HOME
környezeti változót egy elérési útra$(Pipeline.Workspace)
, és futtassa a buildet a fájllal--build-cache
, vagy adja hozzáorg.gradle.caching=true
.gradle.properties
Példa:
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: A tartalék kulcsok, ha az elsődleges kulcs meghibásodik (nem kötelező)
Feljegyzés
A gyorsítótárak nem módosíthatók, ha létrejön egy adott kulccsal rendelkező gyorsítótár egy adott hatókörhöz (ághoz), a gyorsítótár nem frissíthető. Ez azt jelenti, hogy ha a kulcs rögzített érték, az ugyanazon ághoz tartozó összes későbbi build nem fogja tudni frissíteni a gyorsítótárat, még akkor sem, ha a gyorsítótár tartalma módosult. Ha rögzített kulcsértéket szeretne használni, az restoreKeys
argumentumot tartalék beállításként kell használnia.
Maven
A Maven rendelkezik egy helyi adattárral, ahol letöltéseket és beépített összetevőket tárol. Az engedélyezéshez állítsa be a maven.repo.local
beállítást egy elérési útra $(Pipeline.Workspace)
, és gyorsítótárazza ezt a mappát.
Példa:
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
Ha Maven-feladatot használ, győződjön meg arról, hogy a MAVEN_OPTS
változót is át kell adnia, mert az máskülönben felülíródik:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
.NET/NuGet
Ha a NuGet-függőségeket közvetlenül a projektfájlban kezeli PackageReferences
, és rendelkezik egy packages.lock.json
fájllal, engedélyezheti a gyorsítótárazást úgy, hogy a NUGET_PACKAGES
környezeti változót egy elérési útra állítja a könyvtár alatt $(UserProfile)
, és gyorsítótárazhatja azt. A függőségek zárolásáról további információt a projektfájlok csomaghivatkozásában talál.
Ha több packages.lock.json szeretne használni, akkor is használhatja az alábbi példát módosítás nélkül. Az összes packages.lock.json fájl tartalma kivonatos lesz, és ha az egyik fájl módosul, létrejön egy új gyorsítótárkulcs.
Példa:
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
Különböző módokon engedélyezheti a gyorsítótárazást egy Node.js projektben, de az ajánlott módszer az npm megosztott gyorsítótár-könyvtárának gyorsítótárazása. Ezt a könyvtárat az npm felügyeli, és az összes letöltött modul gyorsítótárazott verzióját tartalmazza. A telepítés során az npm először (alapértelmezés szerint) ellenőrzi ezt a könyvtárat olyan modulok esetében, amelyek csökkenthetik vagy megszüntethetik a nyilvános npm-beállításjegyzékbe vagy egy magánregisztrációs adatbázisba irányuló hálózati hívásokat.
Mivel az npm megosztott gyorsítótár könyvtárának alapértelmezett elérési útja nem azonos minden platformon, javasoljuk, hogy felülbírálja a npm_config_cache
környezeti változót a következő $(Pipeline.Workspace)
elérési útra: . Ez azt is biztosítja, hogy a gyorsítótár elérhető legyen tároló- és nem tárolófeladatokból.
Példa:
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
Ha a projekt nem rendelkezik fájllal package-lock.json
, hivatkozzon inkább a package.json
gyorsítótárkulcs bemenetében lévő fájlra.
Tipp.
Mivel npm ci
a node_modules
mappa törlése biztosítja, hogy a modulok egységes, megismételhető készlete legyen használatban, a híváskor npm ci
ne gyorsítótárazhassonnode_modules
.
Node.js/Yarn
Az npm-hez hasonlóan a Yarnban telepített csomagok gyorsítótárazásának különböző módjai is vannak. Az ajánlott módszer a Yarn megosztott gyorsítótármappájának gyorsítótárazása. Ezt a könyvtárat a Yarn kezeli, és az összes letöltött csomag gyorsítótárazott verzióját tartalmazza. A telepítés során a Yarn először (alapértelmezés szerint) ellenőrzi ezt a könyvtárat a moduloknál, ami csökkentheti vagy kiküszöbölheti a nyilvános vagy magánregisztrációs adatbázisokba irányuló hálózati hívásokat.
Példa:
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
A folyamat gyorsítótárazásának beállítása Anaconda-környezetekkel:
Példa
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
A Composert használó PHP-projektek esetében felül kell bírálni a COMPOSER_CACHE_DIR
Composer által használt környezeti változót .
Példa:
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
Ismert problémák és visszajelzés
Ha problémákat tapasztal a folyamat gyorsítótárazásának beállításával kapcsolatban, ellenőrizze a tárházban található nyitott problémák microsoft/azure-pipelines-tasks listáját. Ha a problémája nem szerepel a listán hozzon létre egy újat, és adja meg a szükséges információkat a forgatókönyvéről.
Q&A
K: Törölhetem a gyorsítótárat?
V: A gyorsítótár törlése jelenleg nem támogatott. A meglévő gyorsítótárkulcshoz azonban sztringkonstanst (például version2
) is hozzáadhat, hogy a kulcs úgy módosuljon, hogy a meglévő gyorsítótárakon ne legyen találat. Módosítsa például a következő gyorsítótárkulcsot:
key: 'yarn | "$(Agent.OS)" | yarn.lock'
Ehhez:
key: 'version2 | yarn | "$(Agent.OS)" | yarn.lock'
K: Mikor jár le a gyorsítótár?
V: A gyorsítótárak hét napnyi tevékenység nélkül lejárnak.
K: Mikor lesz feltöltve a gyorsítótár?
V: A folyamat utolsó lépése után létrejön egy gyorsítótár a gyorsítótárból path
, és fel lesz töltve. További részletekért lásd a példát .
K: Van-e korlátozás a gyorsítótár méretére?
V: Nincs kényszerített korlát az egyes gyorsítótárak méretére vagy a szervezet összes gyorsítótárának teljes méretére vonatkozóan.