Penembolokan alur
Azure DevOps
Penembolokan alur dapat membantu mengurangi waktu build dengan memungkinkan output atau dependensi yang diunduh dari satu eksekusi untuk digunakan kembali dalam eksekusi nanti, sehingga mengurangi atau menghindari biaya untuk membuat ulang atau mengunduh ulang file yang sama lagi. Penembolokan sangat berguna dalam skenario di mana dependensi yang sama diunduh berulang-ulang di awal setiap eksekusi. Ini sering kali merupakan proses yang memakan waktu yang melibatkan ratusan atau ribuan panggilan jaringan.
Penembolokan dapat efektif untuk meningkatkan waktu build asalkan waktu untuk memulihkan dan menyimpan cache kurang dari waktu untuk menghasilkan output lagi dari awal. Karena itu, penembolokan mungkin tidak efektif dalam semua skenario dan mungkin benar-benar berdampak negatif pada waktu build.
Catatan
Penembolokan alur didukung dalam pekerjaan kumpulan agen untuk alur YAML dan Klasik. Namun, ini tidak didukung dalam alur rilis Klasik.
Kapan menggunakan artefak versus penembolokan
Penembolokan alur dan artefak alur melakukan fungsi serupa tetapi dirancang untuk skenario yang berbeda dan tidak boleh digunakan secara bergantian.
Gunakan artefak alur ketika Anda perlu mengambil file tertentu yang diproduksi dalam satu pekerjaan dan membagikannya dengan pekerjaan lain (dan pekerjaan lain ini kemungkinan akan gagal tanpanya).
Gunakan penembolokan alur saat Anda ingin meningkatkan waktu build dengan menggunakan kembali file dari eksekusi sebelumnya (dan tidak memiliki file ini tidak akan memengaruhi kemampuan pekerjaan untuk dijalankan).
Catatan
Penembolokan alur dan artefak alur gratis untuk semua tingkatan (gratis dan berbayar). lihat Konsumsi penyimpanan artefak untuk detail selengkapnya.
Tugas cache: cara kerjanya
Penembolokan ditambahkan ke alur menggunakan tugas Cache. Tugas ini berfungsi seperti tugas lain dan ditambahkan ke bagian steps
pekerjaan.
Ketika langkah cache ditemui selama eksekusi, tugas memulihkan cache berdasarkan input yang disediakan. Jika tidak ada cache yang ditemukan, langkah selesai dan langkah berikutnya dalam pekerjaan dijalankan.
Setelah semua langkah dalam pekerjaan telah berjalan dan dengan asumsi status pekerjaan yang berhasil, langkah "Post-job: Cache" khusus secara otomatis ditambahkan dan dipicu untuk setiap langkah "pulihkan cache" yang tidak dilewati. Langkah ini bertanggung jawab untuk menyimpan cache.
Catatan
Cache tidak dapat diubah, yang berarti bahwa setelah cache dibuat, kontennya tidak dapat diubah.
Mengonfigurasi tugas Cache
Tugas Cache memiliki dua argumen yang diperlukan: kunci dan jalur:
- jalur: jalur folder ke cache. Bisa menjadi jalur absolut atau relatif. Jalur relatif diselesaikan terhadap
$(System.DefaultWorkingDirectory)
.
Catatan
Anda dapat menggunakan variabel yang telah ditentukan sebelumnya untuk menyimpan jalur ke folder yang ingin Anda cache, namun kartubebas tidak didukung.
- kunci: harus diatur ke pengidentifikasi untuk cache yang ingin Anda pulihkan atau simpan. Kunci terdiri dari kombinasi nilai string, jalur file, atau pola file, di mana setiap segmen dipisahkan oleh
|
karakter.
String:
Nilai tetap (seperti nama cache atau nama alat) atau diambil dari variabel lingkungan (seperti OS saat ini atau nama pekerjaan saat ini)Jalur file:
Jalur ke file tertentu yang isinya akan di-hash. File ini harus ada pada saat tugas dijalankan. Perlu diingat bahwa setiap segmen kunci yang "terlihat seperti jalur file" akan diperlakukan seperti jalur file. Secara khusus, ini termasuk segmen yang.
berisi . Ini dapat mengakibatkan tugas gagal ketika "file" ini tidak ada.Tip
Untuk menghindari segmen string seperti jalur diperlakukan seperti jalur file, bungkus dengan tanda kutip ganda, misalnya:
"my.key" | $(Agent.OS) | key.file
Pola file:
Daftar pola wildcard gaya glob yang dipisahkan koma yang harus cocok dengan setidaknya satu file. Contohnya:**/yarn.lock
: semua file yarn.lock di bawah direktori sumber*/asset.json, !bin/**
: semua file asset.json yang terletak di direktori di bawah direktori sumber, kecuali di bawah direktori bin
Konten file apa pun yang diidentifikasi oleh jalur file atau pola file di-hash untuk menghasilkan kunci cache dinamis. Ini berguna ketika proyek Anda memiliki file yang secara unik mengidentifikasi apa yang sedang di-cache. Misalnya, file seperti package-lock.json
, yarn.lock
, Gemfile.lock
, atau Pipfile.lock
biasanya dirujuk dalam kunci cache karena semuanya mewakili sekumpulan dependensi unik.
Jalur file relatif atau pola file diselesaikan terhadap $(System.DefaultWorkingDirectory)
.
Contoh:
Berikut adalah contoh yang menunjukkan cara menyimpan dependensi yang diinstal oleh Yarn:
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
Dalam contoh ini, kunci cache berisi tiga bagian: string statis ("yarn"), OS tempat pekerjaan berjalan karena cache ini unik per sistem operasi, dan hash yarn.lock
file yang secara unik mengidentifikasi serangkaian dependensi dalam cache.
Pada eksekusi pertama setelah tugas ditambahkan, langkah cache akan melaporkan "cache miss" karena cache yang diidentifikasi oleh kunci ini tidak ada. Setelah langkah terakhir, cache akan dibuat dari file di dan diunggah $(Pipeline.Workspace)/s/.yarn
. Pada eksekusi berikutnya, langkah cache akan melaporkan "tembolok hit" dan konten cache akan diunduh dan dipulihkan.
Saat menggunakan checkout: self
, repositori dicek keluar ke $(Pipeline.Workspace)/s
, dan folder Anda .yarn
biasanya berada di repositori itu sendiri.
Catatan
Pipeline.Workspace
adalah jalur lokal pada agen yang menjalankan alur Anda tempat semua direktori dibuat. Variabel ini memiliki nilai yang sama dengan Agent.BuildDirectory
.
Pastikan Anda memperbarui variabel YARN_CACHE_FOLDER
jika menggunakan apa pun selain checkout: self
karena ini harus menunjuk ke repositori tempat .yarn
tinggal.
Memulihkan kunci
restoreKeys
dapat digunakan jika seseorang ingin mengkueri beberapa kunci atau awalan kunci yang tepat. Ini digunakan untuk kembali ke kunci lain dalam kasus bahwa key
tidak menghasilkan hit. Kunci pemulihan mencari kunci dengan awalan dan menghasilkan entri cache terbaru yang dibuat sebagai hasilnya. Ini berguna jika alur tidak dapat menemukan kecocokan yang tepat tetapi ingin menggunakan hit cache parsial sebagai gantinya. Untuk menyisipkan beberapa kunci pemulihan, batasi dengan menggunakan baris baru untuk menunjukkan kunci pemulihan (lihat contoh untuk detail selengkapnya). Urutan kunci pemulihan yang akan dicoba akan berada dari atas ke bawah.
Perangkat lunak yang diperlukan pada agen yang dihost sendiri
Mengarsipkan perangkat lunak / Platform | Windows | Linux | Mac |
---|---|---|---|
GNU Tar | Wajib | Wajib | No |
BSD Tar | Tidak | Tidak | Diperlukan |
7-Zip | Direkomendasikan | Tidak | Tidak |
Executable di atas harus berada dalam folder yang tercantum dalam variabel lingkungan PATH. Perlu diingat bahwa agen yang dihosting disertakan dengan perangkat lunak, ini hanya berlaku untuk agen yang dihost sendiri.
Contoh:
Berikut adalah contoh cara menggunakan kunci pemulihan oleh 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
Dalam contoh ini, tugas cache mencoba menemukan apakah kunci ada di cache. Jika kunci tidak ada di cache, kunci tersebut mencoba menggunakan kunci yarn | $(Agent.OS)
pemulihan pertama .
Ini mencoba mencari semua kunci yang sama persis dengan kunci tersebut atau memiliki kunci tersebut sebagai awalan. Hit awalan dapat terjadi jika ada segmen hash yang berbeda yarn.lock
.
Misalnya, jika kunci yarn | $(Agent.OS) | old-yarn.lock
berikut berada di cache di mana old-yarn.lock
menghasilkan hash yang berbeda dari yarn.lock
, kunci pemulihan akan menghasilkan hit parsial.
Jika ada kesalahan pada kunci pemulihan pertama, itu kemudian akan menggunakan kunci yarn
pemulihan berikutnya yang akan mencoba menemukan kunci apa pun yang dimulai dengan yarn
. Untuk hit awalan, hasilnya menghasilkan kunci cache yang terakhir dibuat sebagai hasilnya.
Catatan
Alur dapat memiliki satu atau beberapa tugas penembolokan. Tidak ada batasan pada kapasitas penyimpanan penembolokan, dan pekerjaan dan tugas dari alur yang sama dapat mengakses dan berbagi cache yang sama.
Isolasi dan keamanan cache
Untuk memastikan isolasi antara cache dari alur yang berbeda dan cabang yang berbeda, setiap cache termasuk dalam kontainer logis yang disebut cakupan. Cakupan menyediakan batas keamanan yang memastikan pekerjaan dari satu alur tidak dapat mengakses cache dari alur yang berbeda, dan pekerjaan yang membangun PR memiliki akses baca ke cache untuk cabang target PR (untuk alur yang sama), tetapi tidak dapat menulis (membuat) cache di cakupan cabang target.
Ketika langkah cache ditemui selama eksekusi, cache yang diidentifikasi oleh kunci diminta dari server. Server kemudian mencari cache dengan kunci ini dari cakupan yang terlihat oleh pekerjaan, dan mengembalikan cache (jika tersedia). Pada penyimpanan cache (di akhir pekerjaan), cache ditulis ke cakupan yang mewakili alur dan cabang. Baca di bawah ini untuk detail selengkapnya.
CI, manual, dan eksekusi terjadwal
Cakupan | Baca | Tulis |
---|---|---|
Cabang sumber | Ya | Ya |
main cabang |
Ya | Tidak |
master cabang |
Ya | Tidak |
Permintaan pull berjalan
Cakupan | Baca | Tulis |
---|---|---|
Cabang sumber | Ya | Tidak |
Cabang target | Ya | Tidak |
Cabang perantara (seperti refs/pull/1/merge ) |
Ya | Ya |
main cabang |
Ya | Tidak |
master cabang |
Ya | Tidak |
Eksekusi fork permintaan pull
Cabang | Baca | Tulis |
---|---|---|
Cabang target | Ya | Tidak |
Cabang perantara (seperti refs/pull/1/merge ) |
Ya | Ya |
main cabang |
Ya | Tidak |
master cabang |
Ya | Tidak |
Tip
Karena cache sudah tercakup ke proyek, alur, dan cabang, tidak perlu menyertakan proyek, alur, atau pengidentifikasi cabang apa pun dalam kunci cache.
Kondisi pada pemulihan cache
Dalam beberapa skenario, pemulihan cache yang berhasil harus menyebabkan serangkaian langkah yang berbeda dijalankan. Misalnya, langkah yang menginstal dependensi dapat dilewati jika cache dipulihkan. Ini dimungkinkan cacheHitVar
menggunakan input tugas. Mengatur input ini ke nama variabel lingkungan menyebabkan variabel diatur ke true
ketika ada hit cache, inexact
pada hit cache kunci pemulihan, jika tidak, itu diatur ke false
. Variabel ini kemudian dapat dirujuk dalam kondisi langkah atau dari dalam skrip.
Dalam contoh berikut, install-deps.sh
langkah dilewati saat cache dipulihkan:
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
Bunder
Untuk proyek Ruby menggunakan Bundler, ambil alih variabel lingkungan yang BUNDLE_PATH
digunakan oleh Bundler untuk mengatur jalur yang dicari Bundler untuk Gem.
Contoh:
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 adalah cache pengkompilasi untuk C/C++. Untuk menggunakan Ccache di alur Anda, pastikan Ccache
diinstal, dan secara opsional ditambahkan ke Anda PATH
(lihat mode eksekusi Ccache). Atur CCACHE_DIR
variabel lingkungan ke jalur di bawah $(Pipeline.Workspace)
dan cache direktori ini.
Contoh:
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)"
Lihat Pengaturan konfigurasi Ccache untuk detail selengkapnya.
Citra Docker
Penembolokan gambar Docker secara dramatis mengurangi waktu yang diperlukan untuk menjalankan alur Anda.
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: (wajib) - pengidentifikasi unik untuk cache.
- path: (wajib) - jalur folder atau file yang ingin Anda cache.
Golang
Untuk proyek Golang, Anda dapat menentukan paket yang akan diunduh dalam file go.mod . Jika variabel Anda GOCACHE
belum diatur, atur ke tempat Anda ingin cache diunduh.
Contoh:
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
Menggunakan dukungan penembolokan bawaan Gradle dapat berdampak signifikan pada waktu build. Untuk mengaktifkan cache build, atur GRADLE_USER_HOME
variabel lingkungan ke jalur di bawah $(Pipeline.Workspace)
dan jalankan build Anda dengan --build-cache
atau tambahkan org.gradle.caching=true
ke file Anda gradle.properties
.
Contoh:
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: Kunci fallback jika kunci utama gagal (Opsional)
Catatan
Cache tidak dapat diubah, setelah cache dengan kunci tertentu dibuat untuk cakupan tertentu (cabang), cache tidak dapat diperbarui. Ini berarti bahwa jika kunci adalah nilai tetap, semua build berikutnya untuk cabang yang sama tidak akan dapat memperbarui cache meskipun konten cache telah berubah. Jika Anda ingin menggunakan nilai kunci tetap, Anda harus menggunakan restoreKeys
argumen sebagai opsi fallback.
Maven
Maven memiliki repositori lokal di mana ia menyimpan unduhan dan artefak bawaan. Untuk mengaktifkan, atur opsi ke maven.repo.local
jalur di bawah $(Pipeline.Workspace)
dan cache folder ini.
Contoh:
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
Jika Anda menggunakan tugas Maven, pastikan juga untuk meneruskan MAVEN_OPTS
variabel karena akan ditimpa sebaliknya:
- task: Maven@4
inputs:
mavenPomFile: 'pom.xml'
mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
.NET/NuGet
Jika Anda menggunakan PackageReferences
untuk mengelola dependensi NuGet langsung dalam file proyek Anda dan memiliki packages.lock.json
file, Anda dapat mengaktifkan penembolokan dengan mengatur NUGET_PACKAGES
variabel lingkungan ke jalur di bawah $(UserProfile)
dan penembolokan direktori ini. Lihat Referensi paket dalam file proyek untuk detail selengkapnya tentang cara mengunci dependensi.
Jika Anda ingin menggunakan beberapa packages.lock.json, Anda masih dapat menggunakan contoh berikut tanpa membuat perubahan apa pun. Konten semua file packages.lock.json akan di-hash dan jika salah satu file diubah, kunci cache baru dibuat.
Contoh:
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
Ada berbagai cara untuk mengaktifkan penembolokan dalam proyek Node.js, tetapi cara yang disarankan adalah dengan menyimpan direktori cache bersama npm. Direktori ini dikelola oleh npm dan berisi versi cache dari semua modul yang diunduh. Selama penginstalan, npm memeriksa direktori ini terlebih dahulu (secara default) untuk modul yang dapat mengurangi atau menghilangkan panggilan jaringan ke registri npm publik atau ke registri privat.
Karena jalur default ke direktori cache bersama npm tidak sama di semua platform, disarankan untuk mengambil npm_config_cache
alih variabel lingkungan ke jalur di bawah $(Pipeline.Workspace)
. Ini juga memastikan cache dapat diakses dari pekerjaan kontainer dan nonkontainer.
Contoh:
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
Jika proyek Anda tidak memiliki package-lock.json
file, referensikan package.json
file di input kunci cache sebagai gantinya.
Tip
Karena npm ci
menghapus node_modules
folder untuk memastikan bahwa set modul yang konsisten dan dapat diulang digunakan, Anda harus menghindari penembolokan node_modules
saat memanggil npm ci
.
Node.js/Yarn
Seperti halnya npm, ada berbagai cara untuk cache paket yang diinstal dengan Yarn. Cara yang disarankan adalah dengan menyimpan folder cache bersama Yarn. Direktori ini dikelola oleh Yarn dan berisi versi cache dari semua paket yang diunduh. Selama penginstalan, Yarn memeriksa direktori ini terlebih dahulu (secara default) untuk modul, yang dapat mengurangi atau menghilangkan panggilan jaringan ke registri publik atau privat.
Contoh:
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
Siapkan penembolokan alur Anda dengan lingkungan Anaconda:
Contoh
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
Untuk proyek PHP menggunakan Composer, ambil alih variabel lingkungan yang COMPOSER_CACHE_DIR
digunakan oleh Composer.
Contoh:
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
Masalah dan umpan balik yang diketahui
Jika Anda mengalami masalah saat menyiapkan penembolokan untuk alur Anda, periksa daftar masalah terbuka di microsoft/azure-pipelines-tasks repositori. Jika Anda tidak melihat masalah Anda, buat masalah baru dan berikan informasi yang diperlukan tentang skenario Anda.
Q&A
T: Dapatkah saya menghapus cache?
A: Menghapus cache saat ini tidak didukung. Namun, Anda dapat menambahkan string literal (seperti version2
) ke kunci cache yang ada untuk mengubah kunci dengan cara yang menghindari temuan apa pun pada cache yang ada. Misalnya, ubah kunci cache berikut dari ini:
key: 'yarn | "$(Agent.OS)" | yarn.lock'
Untuk ini:
key: 'version2 | yarn | "$(Agent.OS)" | yarn.lock'
T: Kapan cache kedaluwarsa?
A: Cache kedaluwarsa setelah tujuh hari tanpa aktivitas.
T: Kapan cache diunggah?
A: Setelah langkah terakhir alur Anda, cache akan dibuat dari cache path
Anda dan diunggah. Lihat contoh untuk detail selengkapnya.
T: Apakah ada batasan ukuran cache?
A: Tidak ada batasan yang diberlakukan pada ukuran cache individual atau ukuran total semua cache dalam organisasi.