¿cómo puedo hacer un trabajo en github acción de ejecutar de forma aleatoria entre 1 y 50 veces al día?

0

Pregunta

¿cómo puedo hacer un trabajo en github acción de ejecutar de forma aleatoria entre 1 y 50 veces al día?

Aquí está mi tarea en el cron.

cron: '0 0 * * *'

Esto ejecutará una vez al día.

Pero lo que quiero es ejecutar de forma aleatoria 1-50 veces al día.

¿Cómo puedo hacer que funcione de forma aleatoria de entre 1 a 50?

a continuación es mi git acción del yml archivo de configuración como los flujos de trabajo

#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 jobs y de forma aleatoria, dentro de un horario El método a través de este post no funciona.

enter image description here

Saludos!

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

Mejor respuesta

1

Usted puede hacer esto mediante la modificación de su script de Bash para bucle un número aleatorio de veces. Por ejemplo, este script de Bash lazos entre 1 y 50 veces.

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

El único inconveniente de este enfoque es que usted necesita para tomar las medidas que se realiza en el 'Commit de los archivos del paso y la combinación de ellos en la secuencia de comandos en el 'Ejecutar comandos' paso, o que no se repite.

2021-11-20 06:06:40

En el git de acción de medio ambiente, no se puede ejecutar la yml medio ambiente dentro de la instrucción for.
emarwa.mouma.35t

Cierto, pero todas las cosas que estás haciendo en el interior de la "Encomienda" archivos de paso son cosas que usted puede hacer en Bash. La Configuración De Git? Puedes hacerlo en Bash. Cometer los archivos? Puedes hacerlo en Bash. Obtener la fecha? Puedes hacerlo en Bash.
Nick ODell

el resultado de esta solución : ./task.sh: 4: i: not found
emarwa.mouma.35t

@emarwa.mouma.35t Si realmente no se preocupan por los intervalos, este es el mejor enfoque de la OMI. Una vez por día, el script/código se ejecuta entre 1 y 50 veces en una fila. Se puede implementar como un contenedor de secuencia de comandos que llama ./task.sh (en lugar de echo foo), o bien, agregue el bucle task.sh. Me gustaría utilizar for ((i=1; i<=loops; i++)) en lugar de seq, pero no importa.
dan

@emarwa.mouma.35t como el error en la anterior pregunta, y mi respuesta, es necesario especificar bash. Ejecución while (( i <= loops )) (o similares) en sh va a producir el error.
dan

En otros idiomas

Esta página está en otros idiomas

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