Github Actions设置等待至6点运行

一, Preface

Gtihub Actions就相当于白送给我们的一个服务器, 我们可用来签到打卡, 甚至抢票! 这里我写了一个yml让它每天帮我跑一个main.py的程序。

二, 具体代码

每天等待至6点执行, 运行超过5分钟就跳过。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
name: Schedule

on:
schedule:
# 每天凌晨 5 点 54 分执行
- cron: "54 5 * * *"

jobs:
run_program:
runs-on: ubuntu-latest
steps:

- name: Wait until 6:00 AM
run: |
now=$(date +'%s')
# 计算距离明天凌晨 6:00 AM 的秒数
next=$(( ($(date -d 'tomorrow 6:00' '+%s') - $now) % 86400 ))
echo "Waiting ${next} seconds until 6:00 AM"
# 判断等待时间是否超过 5 分钟
if [ $next -gt 300 ]; then
echo "Waiting too long, exiting"
exit 1
fi
# 循环等待直到 6:00 AM 或者超时
while [ $next -gt 0 ]; do
now=$(date +'%s')
# 计算距离明天凌晨 6:00 AM 的剩余秒数
next=$(( ($(date -d 'tomorrow 6:00' '+%s') - $now) % 86400 ))
# 计算下一次的等待时间
wait=$((next % 60 + 1))
if [ $next -le 0 ]; then
break
fi
# 判断现在是否已经超过 6:00 AM
if [ $(date +%H%M%S) -ge 060000 ]; then
break
fi
sleep ${wait}s
done

- name: Run Python program
run: python main.py #运行你想运行的代码