我正在使用AWS Codebuild来设置一个自托管的Github Actions运行器。在我的主构建部分中,我只是运行命令./run.sh
,这将启动自托管的运行程序,监听一个作业,然后拾取特定的作业。在某些情况下,它们实际上并没有完成任务,只是坐在那里监听任务30分钟,直到Codebuild超时。
我想做的是运行这个命令,但检查在运行的第一分钟内,它输出一个包含Running job:
的字符串。如果可以,那就继续运行run.sh命令,直到它完成。如果没有,退出命令并完成代码构建。
这是可能的吗?我对Linux命令不太熟悉。
我可以使用以下命令将其添加到我的buildspec中:
build:
commands:
- |
cat >> expect.sh <<EOL
#!/usr/bin/expect -f
set timeout 30
spawn ./run.sh
expect {
"Running job:" { puts "Job found"; set timeout -1; exp_continue }
timeout { puts "Timed out"; exit 1 }
eof { puts "End of command"; exit 0 }
}
EOL
- expect -f expect.sh