Githubaction一个接一个运行两个进程
我有两个 GitHub 操作应该一个接一个地运行,第一个install 1是安装和运行服务器(例如,服务器在端口 3000 上运行),这可行,但是安装 1 未完成(服务器已启动,您没有得到“停止”信号是可以的)但我只需要install 2 在服务器启动时继续下一步,我应该如何解决这个问题?
简而言之,当您运行某个进程并且您需要在一段时间后运行其他进程时
请参阅此repo和操作。
- name: install 1
shell: bash
run: |
make install
make run
- name: install 2
shell: bash
run: |
kubectl apply -f ./config/samples/test.yaml
我使用 kubebuilder 来生成项目包括makefile...
https://github.com/kubernetes-sigs/kubebuilder
回答
这两个进程install 1和install 2由隐已经执行了一个又一个if: ${{ success() }}。
您的问题是服务器尚未完全启动。有几种方法可以解决这个问题:
- 使用sleep 命令等待几秒钟:
- name: install 2
shell: bash
run: |
sleep 10 &&
kubectl apply -f ./config/samples/test.yaml
- 等待端口打开,例如使用工具等待端口
- 使用本机 Linux 工具netcat或netcat/netstat等待端口打开
您也可以自己创建一个退出代码,您可以在这篇文章的下一步中使用它:
- name: install 1
id: install1
shell: bash
run: |
make install
make run
echo ::set-output name=exit_code::$?
- name: install 2
if: steps.install1.outputs.exit_code == 0
shell: bash
run: |
kubectl apply -f ./config/samples/test.yaml
编辑:我想我找到了你的问题。通过执行make run您的服务器将永久运行并阻止操作的进一步处理。例如,您可以make run使用make run &. 而且我认为你也不需要这两个工作。有关构建期间的更多详细信息,您可以添加调试选项。