Brew kurulumuyla GitHub eylemleri önbelleğini kullanın
Tüm bağımlılıkları defalarca yeniden indirmek yerine, komutumun actions/cache@v2önbelleğini kaydetmek için GitHub Actions cache ( ) kullanmak istiyorum brew install.
Bu, yapılarımı daha hızlı hale getirir, bunu nasıl başarabilirim?
Yanıtlar
Bu aldatıcıdır çünkü eylemler / önbellek, kitaplıkları daha sonra önbelleğe alınabilen ve geri alınabilen belirli bir klasöre koymanıza bağlıdır. Ve sistem dosyalarının birçok bağımlılığı vardır, bu da her kitaplığı bu süreç söz konusu olduğunda benzersiz kılar.
İşte bunu başarmak için alabileceğiniz üç seçenek
Yol 1:
Demleme paketlerini belirli bir klasöre yüklemeye bakabiliriz, ancak bunu paket başına yapamayız, bunun yerine tüm işletim sistemi için yapabiliriz. Ama homebrew'e görehttps://github.com/Homebrew/brew/blob/664d0c67d5947605c914c4c56ebcfaa80cb6eca0/docs/Installation.md#untar-anywherePaketlerin düzgün yüklenmemesiyle ilgili sorunlar olabileceğinden bu iyi bir fikir değildir. Ayrıca bu, temelde günün sonunda ihtiyacınız olan en son paketleri yüklemekten daha hızlı olup olmayacağını bilmediğimiz her şeyi önbelleğe almak olacaktır.
Yol 2:
Paketi normalde demlemede yaptığınız gibi kurun ve ardından ikili dosyaları kopyalayın. Buradaki uyarı, bağımlılıklar bazen kontrolden çıkabileceğinden, bunu kütüphane bazında yapmanız gerekecek olmasıdır. İşte bir örnek APT paketlerini Linux'ta apt-get ile bu işlemden geçerek GitHub Eylemler iş akışında önbelleğe alma , ancak aynı işlemi brew ile de takip edebilirsiniz.
Yol 3:
İstediğiniz en son paketlerle güncel tuttuğunuz kendi docker dosya görüntünüzü bulun veya oluşturun. Bu, her zaman en yenisine sahip olmanıza izin verir ve bu, docker görüntünüzden bir konteyner derlemesinde adımlarınızı başlatmanıza olanak tanır. Bu daha sonra sistem bağımlılıklarınızı karşılayacaktır.
jobs:
ci:
runs-on: ubuntu-latest
container:
image: <your-personalized-docker-image>
İş akışı iş yapılandırmanızda:
steps:
- name: Update Homebrew
run: |
brew update --preinstall
cat "$(brew --repository)/Library/Taps/homebrew/homebrew-core/Formula/foo.rb" > .github/brew-formulae - name: Configure Homebrew cache uses: actions/cache@v2 with: path: | ~/Library/Caches/Homebrew/foo--* ~/Library/Caches/Homebrew/downloads/*--foo-* key: brew-${{ hashFiles('.github/brew-formulae') }}
restore-keys: brew-
- name: Install Homebrew dependencies
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install foo
Burada ~/Library/Caches/Homebrewçıktısına karşılık gelir brew --cache.
Tüm dizini GitHub Actions önbelleğinde saklamak yerine, yukarıdaki yapılandırma yalnızca "foo" paketiyle ilgili dosyaları saklayacaktır. Bunun nedeni, GitHub tarafından sağlanan macOS görüntülerindeki Homebrew önbellek dizininin, temel Homebrew kurulumu için zaten dosyalar içermesidir (bunları yeniden depolamanıza gerek yoktur).
Bu önbelleğin iş akışınızı hızlandırma olasılığının düşük olduğunu unutmamalısınız. Homebrew şişelerini yüklemek (varsayılan), şişe dosyaları bintray'in CDN'sinde sunulduğundan, genellikle GitHub / Azure'un kendi depolama önbelleğinden indirmeye benzer performansa sahip olacaktır.