İş akışlarını önbelleğe alma, paylaşma ve hatalarını ayıklama

Tamamlandı

Bu ünitede, günlükleri ve belirteçleri kullanarak performansı iyileştirmeyi, işler arasında veri geçirmeyi ve iş akışlarında sorun gidermeyi öğreneceksiniz.

Bu işlemi uygulamak için şunları nasıl yapacağınızı öğreneceksiniz:

  • Daha hızlı iş akışları için önbellek bağımlılıkları.
  • İşler arasında artifakt verilerini aktarma.
  • İş akışları için hata ayıklama günlüğünü etkinleştirin.
  • GitHub kullanıcı arabiriminden ve REST API'sinden iş akışı günlüklerine erişin.
  • GitHub Uygulaması kimlik doğrulaması için yükleme belirteçlerini kullanın.

Önbellek eylemiyle önbellek bağımlılıkları

Bir iş akışı oluştururken genellikle aynı çıkışları yeniden kullanmanız veya bağımlılıkları bir çalıştırmadan diğerine indirmeniz gerekir. Bu bağımlılıkları tekrar tekrar indirmek yerine, iş akışınızın daha hızlı ve daha verimli çalışmasını sağlamak için bunları önbelleğe alabilirsiniz. GitHub'da barındırılan runner'lardaki işler her seferinde temiz bir sanal ortamda başladığından, bağımlılıkları önbelleğe alma, iş akışında belirli adımları çalıştırmak için gereken süreyi azaltır.

Bir işin bağımlılıklarını önbelleğe almak için GitHub'ın eylemini cache kullanın. Bu eylem, sağladığınız benzersiz bir anahtar tarafından tanımlanan bir önbelleği alır. Eylem önbelleği bulduğunda, önbelleğe alınan dosyaları yapılandırdığınız yola alır. Eylemi kullanmak cache için birkaç belirli parametre ayarlamanız gerekir:

Parametre Açıklama Gerekli
Key Önbellek kaydedilirken ve aranırken oluşturulan anahtar tanımlayıcısına başvurur. Evet
Path Önbelleğe almak veya aramak için çalıştırıcıdaki dosya yolunu ifade eder. Evet
Restore-keys İstenen önbellek anahtarı bulunamazsa önbelleğe almak için alternatif mevcut anahtarlardan oluşur. Hayı
steps:
  - uses: actions/checkout@v2

  - name: Cache NPM dependencies
    uses: actions/cache@v2
    with:
      path: ~/.npm
      key: ${{ runner.os }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
      restore-keys: |
        ${{ runner.os }}-npm-cache-

Yukarıdaki örnekte , path olarak ayarlanır ~/.npm ve key çalıştırıcının işletim sistemini ve dosyanın SHA-256 karması içerir package-lock.json . Anahtarın ön ekini bir kimlikle (npm-cache bu örnekte) önek olarak kullanmak, geri dönüşü kullanırken restore-keys ve birden çok önbelleğiniz olduğunda yararlıdır.

İşler arasında yapıt verilerini geçirme

İş akışınızdaki bağımlılıkları önbelleğe alma fikrine benzer şekilde, aynı iş akışı içindeki işler arasında veri geçirebilirsiniz. Verileri upload-artifact ve download-artifact eylemlerini kullanarak geçirebilirsiniz. Önceki işin yapıtlarına bağımlı olan işler, çalışmadan önce önceki işin başarıyla tamamlanmasını beklemelidir. Bu yaklaşım, önceki bir işten yüklenen artifaktlara dayanarak ardışık olarak çalışması gereken bir dizi işiniz olduğunda kullanışlıdır. Örneğin, job_2 söz dizimini job_1 kullanarak gerektirirneeds: job_1.

name: Share data between jobs
on: push
jobs:
  job_1:
    name: Upload File
    runs-on: ubuntu-latest
    steps:
      - run: echo "Hello World" > file.txt
      - uses: actions/upload-artifact@v2
        with:
          name: file
          path: file.txt

  job_2:
    name: Download File
    runs-on: ubuntu-latest
    needs: job_1
    steps:
      - uses: actions/download-artifact@v2
        with:
          name: file
      - run: cat file.txt

Bu örnekte iki iş vardır. job_1 file.txt dosyasında bazı metinler yazar. Ardından eylemini actions/upload-artifact@v2 kullanarak bu yapıtı karşıya yükler ve verileri iş akışında daha sonra kullanmak üzere depolar. job_2 job_1 söz dizimini needs: job_1 kullanarak tamamlanması gerekir. Ardından eylemini actions/download-artifact@v2 kullanarak bu yapıtı indirir ve içeriğini file.txtyazdırır.

bir iş akışında adım hata ayıklama günlüğünü etkinleştirme

Bazı durumlarda, varsayılan iş akışı günlükleri belirli bir iş akışı çalıştırma, iş veya adımın neden başarısız olduğunu tanılamak için yeterli ayrıntı sağlamaz. Bu senaryolarda, iki seçenek için daha fazla hata ayıklama günlüğü etkinleştirebilirsiniz: çalıştırmalar ve adımlar. Bu tanılama günlüğünü etkinleştirmek için, admin deposuna erişim true gerektiren iki depo gizli anahtarı ayarlayın.

  • Tanılama kaydını çalıştırmayı etkinleştirmek için, iş akışını içeren depodaki ACTIONS_RUNNER_DEBUG gizli diziyi true olarak ayarlayın.
  • Adım tanılama günlüğünü etkinleştirmek için, iş akışını içeren depodaki gizli diziyi olarak ACTIONS_STEP_DEBUGayarlayıntrue.

GitHub'da iş akışı günlüklerine erişme

Başarılı otomasyon hakkında düşünürken, ilgili şeylere odaklanabilmek için en az zaman ayırıp otomatikleştirilmiş olan şeylere bakmayı hedeflersiniz. Ancak bazen işler planlandığı gibi gitmez ve olanları gözden geçirmeniz gerekir. Bu hata ayıklama işlemi sinir bozucu olabilir.

GitHub, geçerli hata ayıklama adımının bağlamını korurken işler arasında hızla geçiş yapmaya yardımcı olan net ve yapılandırılmış bir düzene sahiptir.

GitHub'da bir iş akışının günlüklerini görüntülemek için:

  1. Deponuzda Eylemler sekmesine gidin.
  2. Sol bölmede iş akışını seçin.
  3. İş akışı çalıştırmaları listesinde çalıştırmayı seçin.
  4. İşler'in altında işi seçin.
  5. Günlük çıkışını okuyun.

Bir iş akışı içinde birkaç çalıştırmanız varsa, iş akışınızı seçtikten sonra Durum filtresini seçebilir ve bu iş akışında yalnızca başarısız çalıştırmaları görüntülemek için Başarısız olarak ayarlayabilirsiniz.

REST API'den iş akışı günlüklerine erişme

GitHub aracılığıyla günlükleri görüntülemeye ek olarak, github REST API'sini kullanarak iş akışı çalıştırmalarının günlüklerini görüntüleyebilir, iş akışlarını yeniden çalıştırabilir ve hatta iş akışı çalıştırmalarını iptal edebilirsiniz. API kullanarak bir iş akışı çalıştırmasının günlüğünü görüntülemek için günlükler uç noktasına bir GET istek gönderin. Depoya okuma erişimi olan herkesin bu uç noktayı kullanabileceğini unutmayın. Depo özelse, kapsamıyla repo bir erişim belirteci kullanmanız gerekir.

Örneğin, belirli bir GET iş akışı çalıştırma günlüğünü görüntüleme isteği şu yolu izler:

GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs

GitHub uygulamasından yükleme belirtecinin ne zaman kullanılacağını belirleme

GitHub uygulamanız bir hesaba yüklendiğinde, REST ve GraphQL API istekleri için installation access token kullanarak uygulamanızı bir yükleme olarak doğrulayabilirsiniz. Bu adım, uygulamaya gerekli depo erişimi ve izinleri verildiğini varsayarak uygulamanın yüklemenin sahip olduğu kaynaklara erişmesine olanak tanır. Uygulama yüklemesi tarafından yapılan REST veya GraphQL API istekleri uygulamaya bağlanır.

Aşağıdaki örnekte yerine yükleme erişim belirtecini koyacaksınız INSTALLATION_ACCESS_TOKEN :

curl --request GET \
--url "https://api.github.com/meta" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer INSTALLATION_ACCESS_TOKEN" \
--header "X-GitHub-Api-Version: 2022-11-28"

HTTP tabanlı Git erişimi için kimlik doğrulaması yapmak için bir yükleme erişim belirteci de kullanabilirsiniz. Uygulamanızın Contents depo izni olmalıdır. Ardından yükleme erişim belirtecini HTTP parolası olarak kullanabilirsiniz.

Örnekteki TOKEN öğesini yükleme erişim belirteci ile değiştirirsiniz.

git clone https://x-access-token:TOKEN@github.com/owner/repo.git