Hız için Bağımlılıkları Önbelleğe Alma
Oluşturulan bağımlılıkları ve derleme çıktılarını yeniden kullanarak iş akışınızın yürütme hızını önemli ölçüde artırmak için önbelleğe almayı uygulayın.
Hız için Bağımlılıkları Önbelleğe Alma, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Önbelleğe Almayla İş Akışlarını Hızlandırma
İş akışınızın her seferinde aynı bağımlılıkları yeniden indirdiğini hiç fark ettiniz mi? Bu, işleri yavaşlatır!
GitHub Eylemleri'ndeki önbelleğe alma, önceki çalıştırmalardaki dosyaları saklamanıza ve yeniden kullanmanıza olanak tanır. Bu, sonraki iş akışı yürütmelerini büyük ölçüde hızlandırır.
Önbellek Eylemiyle Tanışma
GitHub, actions/cache@v3 adlı özel bir eylem sağlar. Bu eylem, iş akışlarınızı hızlandırmak için dosyaları kaydetmek ve geri yüklemek üzere tasarlanmıştır.
Akıllıca çalışır: geri yüklemeyi denemeden önce önbelleğin zaten var olup olmadığını kontrol eder ve önbellek yoksa onu kaydeder.
Önbellek Anahtarı ve Yolu
actions/cache için iki önemli parametre key ve path'tir:
key: Önbelleğinizi tanımlayan benzersiz dizedir. Bu anahtara sahip bir önbellek bulunursa geri yüklenir.path: Önbelleğe almak istediğiniz dosya yolları veya dizinlerdir. Bu, eyleme neyi kaydetmesi veya geri yüklemesi gerektiğini bildirir.
Anahtar, bağımlılıklar değiştiğinde önbelleğin geçersiz kılınmasını sağlamak için genellikle bağımlılık dosyalarının karma değerini içerir.
Node.js Bağımlılıklarını Önbelleğe Alma
Bir Node.js projesi için node_modules dizinini önbelleğe alalım. package-lock.json temel alınarak dinamik bir anahtar oluşturmak için hashFiles kullanacağız.
Bu basit iş akışı kod parçasını çalıştırmayı deneyin:
name: Node.js CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: node_modules
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm testGeri Yükleme Anahtarlarıyla Geri Dönüş
Tam key değeriniz bir önbellekle eşleşmezse ne olur? İşte restore-keys burada işe yarar!
restore-keys, aranacak geri dönüş anahtarlarının bir listesini sağlar. Birincil anahtar (örneğin npm-${{ hashFiles(...) }}) eşleşmezse GitHub Eylemleri, restore-keys değerlerini sırayla kullanarak bir önbellek bulmaya çalışır.
Örneğimizde npm-, "npm-" ile başlayan herhangi bir önbelleği bulmaya çalışır. Bu, yalnızca küçük bağımlılık sürümleri değiştiğinde kullanışlıdır.
Python Bağımlılıklarını Önbelleğe Alma
Önbelleğe alma yalnızca Node.js için değildir! Aynı ilkeyi Python gibi diğer dillere de uygulayabilirsiniz. Burada Python'un sanal ortamını ve pip önbelleğini önbelleğe alıyoruz.
Buradaki anahtar hashFiles('requirements.txt') kullanır ve yol, sanal ortamı ve pip'in önbellek dizinini gösterir.
name: Python CI with Cache
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: |
~/.cache/pip
.venv
key: pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
pip-
- name: Install dependencies
run: |
python -m venv .venv
.venv/bin/pip install -r requirements.txt
- name: Run tests
run: .venv/bin/python -m unittest discoverÖnbellek Ne Zaman Geçersiz Kılınmalı
Bir önbellek yalnızca yeterince güncelse kullanışlıdır. Bağımlılıklarınız değişirse önbelleğiniz de değişmelidir!
Birincil key değeriniz (örneğin npm-${{ hashFiles('package-lock.json') }}) değiştiğinde önbellek otomatik olarak geçersiz kılınır. package-lock.json güncellenirse karma değeri değişir ve yeni bir önbellek oluşturulur.
Anahtarı manuel olarak değiştirerek de önbelleğin yeniden oluşturulmasını zorlayabilirsiniz; örneğin npm-v2-${{ hashFiles(...) }} gibi bir sürüm son eki ekleyebilirsiniz.
Önbellek Kapsamı ve Sınırları
Önbelleğe almanın arka planda nasıl çalıştığını bilmek faydalıdır:
- Kapsam: Önbellekler depo ve dal başına ayrı kapsamlandırılır.
maindalındaki bir önbellek,lookup-pathdeğerini açıkça yapılandırmadığınız sürece bir özellik dalında kullanılmaz. - Boyut Sınırı: Her önbellek en fazla 10 GB olabilir.
- Saklama Süresi: Önbellekler son erişimden sonra 7 gün boyunca saklanır. Eski ve kullanılmayan önbellekler otomatik olarak kaldırılır.
Akıllı Önbelleğe Alma Uygulamaları
Önbelleğe almadan en iyi şekilde yararlanmak için:
hashFileskullanın: Önbellek anahtarınızı her zaman bağımlılık bildirim dosyalarına bağlayın (örneğinpackage-lock.jsonverequirements.txt).pathdeğerini belirli tutun: Yalnızca gerekli olanları önbelleğe alın (örneğinnode_modulesve~/.cache/pip).restore-keyskullanın: Önbellek isabet oranlarını artırmak için geri dönüş seçenekleri sağlayın.- Değişken Verileri Önbelleğe Almaktan Kaçının: Sık değişen veya çok büyük ve her çalıştırmada benzersiz olan dosyaları önbelleğe almayın (örneğin dağıtım için tasarlanmış derleme çıktıları).
Önbellek Anahtarı Sorusu
Maven kullanan bir Java projeniz var. Bağımlılıkları pom.xml içinde tanımlanmış ve Maven, indirilen Java arşivlerini genellikle ~/.m2/repository içinde saklar.
pom.xml değiştiğinde Maven bağımlılıklarının önbelleğe alınmasını ve doğru şekilde geçersiz kılınmasını en iyi şekilde sağlayan önbellek yapılandırması hangisidir?
Özet: Hız İçin Önbellek!
Harika iş çıkardınız! GitHub Eylemleri'nde CI/CD iş akışlarınızı önemli ölçüde hızlandırmak için önbelleğe almayı nasıl uygulayacağınızı öğrendiniz.
actions/cacheeylemi aracınızdır.- Neyi ve nasıl önbelleğe alacağınızı tanımlamak için
keyvepathkullanın. hashFiles, akıllı geçersiz kılma için dinamik anahtarlar oluşturur.restore-keysdeğerleri değerli geri dönüş seçenekleri sağlar.
Bağımlılıkları akıllıca önbelleğe alarak derleme süresinden ve işlem kaynaklarından tasarruf eder, işlem hatlarınızı daha verimli hâle getirirsiniz!
Sıkça Sorulan Sorular
“Hız için Bağımlılıkları Önbelleğe Alma” dersi ücretsiz mi?
Evet — “Hız için Bağımlılıkları Önbelleğe Alma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“Hız için Bağımlılıkları Önbelleğe Alma” dersinde ne öğreneceğim?
Oluşturulan bağımlılıkları ve derleme çıktılarını yeniden kullanarak iş akışınızın yürütme hızını önemli ölçüde artırmak için önbelleğe almayı uygulayın. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Hız için Bağımlılıkları Önbelleğe Alma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Birden Çok Ortam için Matris Derlemeleri
- Hız için Bağımlılıkları Önbelleğe Alma
- Yeniden Kullanılabilir İş Akışları ve Eylemler
- Koşullu Yürütme ve İş Bağımlılıkları