Comment puis-je faire un travail sur github action exécuter de façon aléatoire entre 1 et 50 fois par jour?

0

La question

comment puis-je faire un travail sur github action exécuter de façon aléatoire entre 1 et 50 fois par jour?

Voici ma tâche cron.

cron: '0 0 * * *'

Ce sera exécuté une fois par jour.

Mais ce que je veux, c'est de courir au hasard de 1 à 50 fois par jour.

Comment puis-je le faire fonctionner au hasard de 1 à 50?

ci-dessous mon git de l'action yml du fichier de configuration que les flux de travail

#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 }}

Tâches Cron et de façon aléatoire, à l'intérieur des heures de La méthode à travers ce post ne fonctionne pas.

enter image description here

En Ce Qui Concerne Meilleur!

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

La meilleure réponse

1

Vous pouvez le faire en modifiant votre script Bash pour boucle un nombre aléatoire de fois. Par exemple, ce script Bash boucles entre 1 et 50 fois.

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

Le seul inconvénient de cette approche est que vous avez besoin pour prendre les mesures qui se fait dans le 'Commit des fichiers' étape et de les fusionner dans le script dans le 'Exécuter des commandes" pas, ou ils ne seront pas répétées.

2021-11-20 06:06:40

Dans le git de l'action de l'environnement, ne peut pas exécuter le yml de l'environnement à l'intérieur de l'instruction for.
emarwa.mouma.35t

Vrai, mais toutes les choses que vous faites à l'intérieur de la "validation des fichiers" étape sont les choses que vous pouvez faire en Bash. Configuration De Git? Vous pouvez le faire en Bash. Valider des fichiers? Vous pouvez le faire en Bash. La date de l'obtention? Vous pouvez le faire en Bash.
Nick ODell

résultat de cette solution : ./task.sh: 4: i: not found
emarwa.mouma.35t

@emarwa.mouma.35t Si vous avez vraiment ne se soucient pas des intervalles, cette approche est la meilleure de l'OMI. Une fois par jour, le script/code s'exécute entre 1 et 50 fois dans une rangée. Vous pouvez la mettre en œuvre comme un script qui appelle ./task.sh (au lieu de echo foo), ou, ajouter la boucle pour task.sh. Je voudrais utiliser for ((i=1; i<=loops; i++)) au lieu de seqmais il n'a pas d'importance.
dan

@emarwa.mouma.35t comme l'erreur dans votre précédente question, et ma réponse, vous devez spécifier bash. L'exécution de while (( i <= loops )) (ou similaire) en sh va produire cette erreur.
dan

Dans d'autres langues

Cette page est dans d'autres langues

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