在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。具体修改步骤如下:
- 拉取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授权访问。
- 安装JDK(若需要)
Jena基于Java运行,Ubuntu runner默认可能未预装对应版本JDK,需添加安装步骤:
- name: Install JDK uses: actions/setup-java@v3 with: java-version: '11' # 根据Jena要求选择对应版本 distribution: 'temurin'
- 启动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
- 修改后的完整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
相关产品推荐
相关产品推荐

