Brew kurulumuyla GitHub eylemleri önbelleğini kullanın

Aug 31 2020

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

1 EdwardRomero Sep 01 2020 at 04:55

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>
p00ya Nov 29 2020 at 01:48

İş 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.