You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让GitHub Actions Runner在启动Go REST API服务器后执行测试?

解决GitHub Actions中Go服务器启动后卡住无法执行测试的问题

核心原因

启动服务器的./main命令会持续监听请求,占用当前步骤的运行进程,导致GitHub Actions无法推进到后续的测试步骤。

解决方案

需要将服务器放到后台运行,并添加检查确保服务器完全启动后再执行测试,测试完成后终止服务器进程。修改后的GitHub Actions配置如下:

name: Continuous Integration

on:
  push:
    branches:
      - "main"
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: checkout repository
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.20.7
      - name: build
        run: go build -o main
      - name: change permissions
        run: chmod +x main
      - name: start server in background
        run: ./main &
      - name: wait for server to be ready
        run: |
          # 用nc检查端口是否开放(替换成你的服务器实际端口)
          until nc -z localhost 8080; do
            echo "Waiting for server to start..."
            sleep 2
          done
      - name: test
        run: go test -v ./tests
      - name: stop server
        run: pkill main

关键说明

  • 后台运行服务器:在启动命令末尾加&,让服务器进程转到后台执行,释放当前步骤的进程,允许后续步骤继续。
  • 等待服务器就绪:通过nc循环检查服务器端口是否开放,确保服务器完全启动后再执行测试,避免测试因服务器未就绪而失败。如果你的服务器有健康检查接口,也可以替换成curl调用该接口的方式。
  • 终止服务器:测试完成后用pkill main杀掉服务器进程,清理Runner资源。

内容的提问来源于stack exchange,提问作者Jayanth Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:06:02