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 1install 2由隐已经执行了一个又一个if: ${{ success() }}

您的问题是服务器尚未完全启动。有几种方法可以解决这个问题:

  1. 使用sleep 命令等待几秒钟:
  - name: install 2
    shell: bash
    run: |
      sleep 10 &&
      kubectl apply -f ./config/samples/test.yaml
  1. 等待端口打开,例如使用工具等待端口
  2. 使用本机 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 &. 而且我认为你也不需要这两个工作。有关构建期间的更多详细信息,您可以添加调试选项。


以上是Githubaction一个接一个运行两个进程的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>