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

在GitHub Actions中,前端仓库能否对接本地Jena Fuseki后端Mock服务?

问题

我有两个GitHub仓库:front-end和backend-mockdata。前端基于localhost的React开发服务器,使用Cypress执行测试,测试需要依赖运行中的backend-mockdata提供API数据。当前通过GitHub Actions部署时,因为backend-mockdata未启动,导致Cypress测试失败。

相关服务信息:

  • front-end运行于http://localhost:3000/
  • backend-mockdata通过命令./jena/fuseki-server --loc=./gc-alldata.db /gc启动,对应的Jena服务器运行于http://localhost:3030

我在front-end仓库中配置的GitHub Action如下:

name: Deploy Action runner
on: [push, pull_request]
jobs:
  publish:
    name: Deploy
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./build
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Install dependencies
        run: yarn

      - name: Cypress
        uses: cypress-io/github-action@v4
        with:
          working-directory: ./client
          install: false
          browser: chrome
          start: yarn start

请问是否可以在front-end的GitHub Action中触发启动运行于http://localhost:3030的Jena服务器,使Cypress测试能在无头工作流中正常调用该服务?


解决方案

完全可以在front-end的GitHub Action中启动Jena服务器,让Cypress测试正常调用API。具体修改步骤如下:

  1. 拉取backend-mockdata仓库代码
    在原有Checkout步骤后,新增拉取backend-mockdata仓库的步骤,获取Jena启动文件和数据库文件:
- name: Checkout backend-mockdata
  uses: actions/checkout@v2
  with:
    repository: 你的用户名/backend-mockdata
    path: backend-mockdata
    fetch-depth: 0

替换你的用户名为实际GitHub用户名,若仓库为私有,需额外配置Personal Access Token授权访问。

  1. 安装JDK(若需要)
    Jena基于Java运行,Ubuntu runner默认可能未预装对应版本JDK,需添加安装步骤:
- name: Install JDK
  uses: actions/setup-java@v3
  with:
    java-version: '11' # 根据Jena要求选择对应版本
    distribution: 'temurin'
  1. 启动Jena服务器并等待就绪
    在前端依赖安装完成后、Cypress测试前,启动Jena服务器并确保服务就绪:
- name: Start Jena server and wait for readiness
  run: |
    cd ../backend-mockdata
    ./jena/fuseki-server --loc=./gc-alldata.db /gc &
    # 循环检测服务是否启动完成
    until curl -s http://localhost:3030 > /dev/null; do
      sleep 2
    done
  1. 修改后的完整Action配置
    整合所有步骤后的完整配置:
name: Deploy Action runner
on: [push, pull_request]
jobs:
  publish:
    name: Deploy
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./build
    steps:
      - name: Checkout front-end
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Checkout backend-mockdata
        uses: actions/checkout@v2
        with:
          repository: 你的用户名/backend-mockdata
          path: backend-mockdata
          fetch-depth: 0

      - name: Install JDK
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'

      - name: Install front-end dependencies
        run: yarn

      - name: Start Jena server and wait for readiness
        run: |
          cd ../backend-mockdata
          ./jena/fuseki-server --loc=./gc-alldata.db /gc &
          until curl -s http://localhost:3030 > /dev/null; do
            sleep 2
          done

      - name: Run Cypress tests
        uses: cypress-io/github-action@v4
        with:
          working-directory: ./client
          install: false
          browser: chrome
          start: yarn start

内容的提问来源于stack exchange,提问作者me-me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:24:52