如何让 github 操作中的工作每天随机运行 1 到 50 次?

Posted

技术标签:

【中文标题】如何让 github 操作中的工作每天随机运行 1 到 50 次?【英文标题】:how can I make a job in github action run randomly between 1 and 50 times a day? 【发布时间】:2021-12-30 17:44:33 【问题描述】:

如何让 github action 中的作业每天随机运行 1 到 50 次?

这是我的 cron 工作。

cron: '0 0 * * *'

这将每天运行一次。

但我想要的是每天随机运行 1-50 次。

如何让它从 1 到 50 随机工作?

下面是我的 git action 的 yml 设置文件作为工作流

#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 and random times, within given hours通过本帖的方法无效。

最好的问候!

【问题讨论】:

您只关心它运行的次数,还是希望它以随机间隔运行? @NickODell 只关心次数但应该是随机的1到50 【参考方案1】:

您可以通过修改 Bash 脚本以随机循环次数来做到这一点。例如,这个 Bash 脚本循环 1 到 50 次。

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

这种方法的一个缺点是您需要执行“提交文件”步骤中正在执行的步骤,并在“执行命令”步骤中将它们合并到脚本中,否则它们将不会重复。

【讨论】:

在git action环境下,无法运行for语句里面的yml环境。 没错,但是您在“提交文件”步骤中所做的所有事情都是您可以在 Bash 中做的事情。配置 Git?你可以在 Bash 中做到这一点。提交文件?你可以在 Bash 中做到这一点。得到日期?你可以在 Bash 中做到这一点。 此解决方案的结果:./task.sh: 4: i: not found @emarwa.mouma.35t 如果您真的不关心间隔,那么这种方法是最好的 IMO。每天一次,脚本/代码连续运行 1 到 50 次。您可以将其实现为调用./task.sh(而不是echo foo)的包装脚本,或者将循环添加到task.sh。我会使用for ((i=1; i<=loops; i++)) 而不是seq,但这没关系。 @emarwa.mouma.35t 喜欢您previous question 中的错误,而我的回答是,您需要指定 bash。在sh 中运行while (( i <= loops ))(或类似的)将产生该错误。

以上是关于如何让 github 操作中的工作每天随机运行 1 到 50 次?的主要内容,如果未能解决你的问题,请参考以下文章

每天午夜更改随机图像

程序员职场小技巧:每天工作那么多事,如何安排事务的优先级?

GitHub 操作自托管运行器如何工作?

使用1个存储过程中的表,该表仅在一周中的一天运行,作为对每天运行的另一个存储过程的引用

作为研发如何使用Github Api?

如何每天更新一次 UILabel