在 CI 管道中运行开发服务器

2023-12-01

我有一个使用 Github Action/Workflows 的 CI 管道设置,我想在其中运行 Cypress 自动化测试,但是我在如何运行我的开发服务器方面遇到了一些逻辑问题。让我向你展示我的管道

name: Nuxt CI Pipeline

on:
  push:
    branches: [ CI-pipeline ]
  # pull_request:
  #   branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [ 14.x ]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - name: Make envfile
      uses: SpicyPizza/create-envfile@v1
      with:
        envkey_ENV: staging
        file_name: .env
    - run: npm ci
    - run: npm run dev
    - run: | 
        cd e2e
        ls -l
        npm ci
        npx cypress run

现在我想启动开发服务器并在该端口(通常为 3000)上运行测试,但是问题是当命令npm run dev执行后,管道继续在那里等待并且不会向前移动,这是有道理的,因为 devserver 不会像其他命令那样返回响应,所以它有点卡在那里。我对 DevOps 的了解是最低限度的,有人能指出我错过了什么吗?


我认为执行方式并不理想,特别是因为节点服务器最终也没有被正确杀死。使用像这样的帮助包启动服务器并测试应该为你解决这个问题:

npm install --save-dev start-server-and-test

虽然我不确定你的脚本背后到底是什么package.json,最终可能看起来像这样:

  "scripts": {
    "start:ci": "<<start your dev server>>",
    "cy:run": "cypress run --browser chrome --headless",
    "cy:ci": "start-server-and-test start:ci http://localhost:3000 cy:run"
  }, 

然后您可以简单地将其作为管道中的单个命令运行npm run cy:ci。该脚本将负责启动您的开发服务器,等待 URL 可用,然后执行测试,所有测试完成后,它将关闭服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CI 管道中运行开发服务器 的相关文章

随机推荐

  • 在 Websphere 中跟踪 HTTP 请求

    我有以下要求 我想跟踪通过我们的 WebSphere 服务器的所有请求 我们有一些 Web 应用程序和一些 Web 服务部署到我们的服务器上 但是 我不想将跟踪机制添加到每个应用程序中 是否有可能添加一些插件或为WebSphere服务器创建
  • Python:实时或从 wav 文件获取音量分贝级别

    对于项目工作 我需要从录制的音频文件或使用麦克风实时录制来测量音量 经过初步研究 我尝试使用声音文件库 该文件是使用 soundfile 读取的并使用20 np log10 np sqrt np mean np absolute a 2 我
  • 为什么添加 float 属性会使我的 div 表现得像内联块?

    我有两个 div 有两个主要属性显示块和宽度 block1 display block width 20 background color red height 100px block2 display block width 70 bac
  • 查找圆与矩形碰撞的碰撞边时出现问题

    我发现了一个非常适合检测圆形和矩形之间的碰撞以及找到接触点的函数 然后 我使用该点来确定圆击中矩形的哪一侧 以便我可以反映圆 但是 当圆心位于矩形内部时 该函数会将最近的点作为圆心 并将其处理为击中顶点而不是边 这是我的代码 def col
  • PyCharm 5.0.1 无法解析内置模块/方法

    我的 PyCharm 5 0 1 安装无法解析对任何内置模块或方法的引用 正如你所看到的 我已经通过 cygwin 安装了 python 我已经尝试过 重新安装 更新 python 安装 从 2 7 9 到 2 7 10 重新安装pycha
  • 协议符合具有关联值的类型

    我有以下片段 protocol MyProtocol Identifiable where ID UUID var id UUID get var test MyProtocol 协议 MyProtocol 只能用作通用约束 因为它具有 S
  • 如何获取 PHP 关联数组索引的智能感知? [复制]

    这个问题在这里已经有答案了 可能的重复 PHPDoc 用于可变长度参数数组 每当我打字时 SERVER 并按 Ctrl 空格键 它会给我可能的索引列表 我怎样才能使我创建的数组成为可能 代码完成为 SERVER为您提供有关人们从该关联数组中
  • 获取 Google Static Maps API 的西南角和东北角

    我在 Unity 应用程序中获取 Google 静态地图的边界时遇到问题 我已经尝试了在 stackoverflow 上找到的多个答案 NET相关问题 Javascript相关问题 我试图计算角点的地图是this one 首先我尝试翻译ma
  • 从驱动程序代码设置设备权限失败

    我想从 Linux 内核 3 10 14 中的用户空间访问 I2C 设备驱动程序节点 我在内核配置中添加了 i2c dev 并获得了 dev i2c 设备节点 然而他们有许可 ls l dev i2c crw root root 89 1
  • 定义 JSON 结构是否需要 JSON 模式?

    我问这个问题是因为我看到当前的 JSON 模式草案 http json schema org 建议采用以下方式拥有 JSON 架构 对于 JSON a abc b 123 草案中提出的模式是这样的 type object propertie
  • 使用 git filter-repo 将子目录拆分到其自己的存储库

    我正在关注这个 https docs github com en get started using git splitting a subfolder out into a new repository 我有一个名为my repo 其下面
  • 检查两个 php 页面之间的上次访问情况

    是否有某种 PHP 代码可以让我找出最后访问的两个页面中的哪一个 这就是我需要它的原因 我有 3 个页面 名为 user management php manage membership php and manage user php 有两
  • C# Windows 应用程序连接到系统的设备无法运行

    我看到以下异常来自 Windows 7 计算机上的 Windows 窗体应用程序 这才刚刚开始在这台机器上发生 它在其他机器上仍然可以正常工作 但在特定机器上却不行 例外 Exception Type System ApplicationE
  • 有延迟的 GAE 重定向

    是否可以在 GAE 中延迟重定向到另一个网址 我知道我可以使用 JavaScript 来实现此目的 但可能有一种方法可以在没有 JavaScript 的情况下进行延迟重定向吗 现在我用self redirect 来自GAE教程 谢谢 您可以
  • 我想在 PHP 中比较两个数组

    假设我有两个数组 如下所示 array1 array 1 3 5 array2 array x gt 1 y gt 2 z gt 5 如何以最有效和正确的方式检查两个数组是否完全相同 并且不关心数组的键名 array2 我想创建一个函数 如
  • GlobalSettings onStart 仅在第一次请求后触发

    当我启动播放服务器时 我只需要运行一些代码一次 使用 GlobalSettings OnStart 时 我注意到代码仅在向服务器发出第一个 http 请求后执行 知道如何在服务器启动后和发送任何请求之前运行我的代码吗 Thanks 这是应用
  • JS |如何以弧度为单位旋转?

    function lerp start end amt return 1 amt start amt end 这个 lerp 函数与坐标完美配合 我可以轻松地将 X 从 1 调整到 10 但当涉及轮换时就会出现问题 物体的旋转以弧度为单位
  • 如何在不加载关联实体的情况下获取关联实体的 id?

    考虑一个具有 单向 多对一关联的实体 EntityX type entity table x id id type integer generator strategy AUTO fields type type string manyTo
  • 避免嵌套 for 循环 python

    我有一个函数 它接受表达式并用我用作输入的值的所有排列替换变量 这是我已经测试过并且可以工作的代码 但是在查看了 SO 之后 人们说嵌套 for 循环是一个坏主意 但是我不确定如何提高效率 有人可以帮忙吗 谢谢 def replaceVar
  • 在 CI 管道中运行开发服务器

    我有一个使用 Github Action Workflows 的 CI 管道设置 我想在其中运行 Cypress 自动化测试 但是我在如何运行我的开发服务器方面遇到了一些逻辑问题 让我向你展示我的管道 name Nuxt CI Pipeli