Başka bir havuz yeni bir sürüm oluşturduğunda GitHub Eylemini tetikle


11

Başka bir depo yeni bir sürüm oluşturduğunda tetiklenecek bir GitHub iş akışı oluşturmaya çalışıyorum.

Belgelerde paragraf var: on.event_name.typesnerede event_nameolacak release.

Soru şudur: releaseBaşka bir deponun olayından bahsetmenin herhangi bir yolu var mı ?


1
Ben inanmıyorum. Sürümü oluşturan repoya erişmeniz gerekir.
osowskit

Yanıtlar:


11

Başka bir deponun bırakma olayına başvurmanın herhangi bir yolu var mı?

Bu özelliğin mevcut olmadığından oldukça emin olun.

Sürümü oluşturan depoya erişiminiz varsa on: repository_dispatch, başka bir depoda çalışmak üzere bir iş akışını tetiklemek için bir webhook olayını çağırabilirsiniz . depo gönderme eylemi bu durumda yardımcı olabilir.

Sürümü oluşturan depoya erişiminiz yoksa (ki burada böyle olduğunu varsayıyorum) o zaman bu benim önerim olacaktır. İlk olarak, izlemek istediğiniz deponun yayın sürümü etiketini düzenli olarak kontrol eden aşağıdaki iş akışını oluşturun. Deponuza kaydettiğiniz sürümden farklıysa, yeni sürüm yüklenecektir.

Değiştirilen dosyalar denetiminin çalışması için önce hedef dosyayı (örn. Release-version / swagger-ui-latest.txt) hazırlamanız gerektiğini unutmayın. Ayrıca, repovarsayılan yerine bir kapsam belirteci kullanmalısınız GITHUB_TOKEN. Bununla ilgili daha fazla ayrıntı için GitHub eyleminden başlayarak aktar

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

Ardından, yalnızca dizinde herhangi bir değişiklik gördüğünde çalışan ikinci bir iş akışı oluşturabilirsiniz release-versions.

on:
  push:
    paths:
      - 'release-versions/*'

Bu iş akışında, kayıtlı varlıkları ihtiyacınız olan öğeleri almak ve ihtiyacınız olan işlemleri yapmak için kullanabilirsiniz.

İşte hemen taahhüt etmek yerine bir çekme talebi yaratan benzer bir örnek .


1
Ne yazık ki önsezimi onayladın. Ayrıca, yaklaşımınızı paylaştığınız için teşekkür ederiz.
PierDipi

3
Deneyimlerimi eklemek istiyorum: $(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)bunu kullanmak yerine: Bence kullanmak daha iyi olurdu: $([ -z "`git status --porcelain`" ] && echo "false" || echo "true") neden? git diff-indexyalnızca dosyanın değiştirilmiş zaman damgasının değişmesi durumunda da bir değer döndürür. Bu, taahhüdün başarısız olmasına neden olacaktır, çünkü taahhütte herhangi bir değişiklik yoktur. Kullanıldığında git statusyalnızca gerçek içerik değiştiğinde bir şey döndürülür.
KirKone
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.