Github eyleminde günde 1 ila 50 kez rastgele çalışan bir işi nasıl yapabilirim?

0

Soru

github eyleminde günde 1 ila 50 kez rastgele çalışan bir işi nasıl yapabilirim?

İşte benim cron işim.

cron: '0 0 * * *'

Bu günde bir kez olacak.

Ama istediğim günde 1-50 kez rastgele koşmak.

1'den 50'ye rastgele çalışmasını nasıl sağlayabilirim?

aşağıda git eylemimin yml ayar dosyası iş akışları olarak verilmiştir

#1. Repository Fork
# 2. Modify the files A and B according to the procedure
# 3. After committing the modifications, push & Enjoy!

name: planting-grass

# A. Comment lines 8-11
# on:
# push:
# branches:
# - unknown

# B. Uncomment lines 14-16
on:
   schedule:
     - cron: '0 0 * * *'

jobs:
  task:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set current date
        id: date
        run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
      - name: Execute commands
        run: bash ./task.sh ${{ steps.date.outputs.date }}
      - name: Commit files
        run: |
          git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)"
          git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
          git add date.txt
          git commit -m ${{ steps.date.outputs.date }}
      - name: Push changes
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ github.ref }}

Cron işleri ve rastgele zamanlar, verilen saatler içinde Bu yazı aracılığıyla yöntem çalışmaz.

enter image description here

Saygılarımla!

bash cron github-actions sh
2021-11-20 05:36:39
1

En iyi cevabı

1

Bunu, Bash komut dosyanızı rasgele sayıda döngü yapacak şekilde değiştirerek yapabilirsiniz. Örneğin, bu Bash komut dosyası 1 ile 50 kez arasında döngü yapar.

#!/usr/bin/env bash
loops=$(( ( RANDOM % 50 )  + 1 ))
echo "$loops"
for i in $(seq 1 $loops); do
    echo foo
done

Bu yaklaşımın bir dezavantajı, 'Dosyaları tamamlama' adımında yapılan adımları atmanız ve bunları 'Komutları yürüt' adımında komut dosyasına birleştirmeniz gerektiğidir, aksi takdirde bunlar tekrarlanmayacaktır.

2021-11-20 06:06:40

Git eylem ortamında, for deyimi içinde yml ortamı çalıştırılamıyor.
emarwa.mouma.35t

Doğru, ancak "Taahhüt dosyaları" adımının içinde yaptığınız her şey Bash'de yapabileceğiniz şeylerdir. Git'i yapılandırıyor musunuz? Bunu Bash'ta yapabilirsin. Dosya işlemek mi? Bunu Bash'ta yapabilirsin. Randevuyu aldın mı? Bunu Bash'ta yapabilirsin.
Nick ODell

bu çözümün sonucu : ./task.sh: 4: i: not found
emarwa.mouma.35t

@emarwa.mouma.35t Aralıkları gerçekten umursamıyorsanız, bu yaklaşım en iyi ımo'dur. Günde bir kez, komut dosyası / kod arka arkaya 1 ila 50 kez çalışır. Çağıran bir sarmalayıcı komut dosyası olarak uygulayabilirsiniz ./task.sh (yerine echo foo) veya döngüyü task.sh. Kullanırdım for ((i=1; i<=loops; i++)) yerine seq ama bunun önemi yok.
dan

@emarwa.mouma.önceki sorunuzdaki hata gibi 35t ve cevabım, bash belirtmeniz gerekiyor. Koşma while (( i <= loops )) (veya benzer) içinde sh bu bir hata üretecektir.
dan

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................