问题标签 [circleci-workflows]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - CircleCI 错误您的测试可能会向此“baseUrl”发出请求,如果您不启动服务器,这些测试将失败
我正在运行一个 Angular 2+ 应用程序,使用 Cypress.io 和 CI 使用 circleCI 进行集成测试。
我重复了这里提供的使用 circleCI 设置 Angular 项目的教程,但还需要添加 cypress orbs 来运行 Cypress。所以我最终得到了以下 config.yml 脚本:
当 circleCI 启动时,工作流的前两个作业成功(构建和 cypress/install),但 cypress/run 产生以下错误:
赛普拉斯无法验证设置为“baseUrl”的服务器是否正在运行:
您的测试可能会向此“baseUrl”发出请求,如果您不启动服务器,这些测试将失败。
请启动此服务器,然后再次运行 Cypress。
我猜我没有使用该npm run build
命令启动服务器。
我尝试添加:
在“构建”工作中,但错误是:
/bin/bash: ng: 找不到命令
我试图在 dockerhub 上找到一个可以执行 ng 命令的 docker 容器,并且“angular/ngcontainer”似乎是一个不错的候选者,因为按照教程链接使用 circleci/node:6.10-browsers 作为我的 docker 映像也无法识别 ng 命令。
我想我在这里大部分时间都超出了我的深度,并且无法找到使用 Cypress 并在 circleCI 上运行 CI 的 Angular 项目的示例。有这样一个例子可能会大大有助于让事情变得有意义。在那之前,有没有人对我如何执行命令有任何建议,ng serve
你认为这会解决我的服务器无法启动错误吗?
2019 年 2 月 3 日 19:34 更新:
根据网上朋友的建议,我wait-on
在研究了柏树球的使用情况后补充了一点。因此,我更新的-cypress/run
命令显示为:
这似乎在等待一个永远不会发生的“ http://localhost:4200 ”。
docker - 如何在 CircleCI 2.0 的部署步骤中使用构建步骤中的 docker 映像?
最后几天努力从 CircleCI 1.0 迁移到 2.0,虽然构建过程完成,但部署仍然是一个大问题。CircleCI 文档并没有太大帮助。
这与config.yml
我所拥有的类似:
问题在于deploy
工作。我必须指定这docker: -image
一点,但我想从build
已经安装了所有必需的东西的作业中重用环境。当然,我可以将它们安装在deploy
工作中,但是拥有多个deploy
工作会导致代码重复,这是我不想要的。
java - 如何在 CircleCI 中查看测试结果的 HTML 表示
我是 CircleCI 的新手。我已经配置了我的.circleci/config.yml
. 我的构建成功执行;据我在控制台上看到的,所有测试都通过了。但是,我很高兴看到测试报告是 HTML,就像我通常可以对 Jenkins 所做的那样。
CircleCI 可以做到这一点吗?
这是来自的相关部分config.yml
:
据我所知,这是测试报告在我的本地机器上作为 XML 文件的位置。
当构建运行时,它会打印以下内容:
它将测试结果上传到哪里?到运行我的构建的 docker 中的其他本地文件夹?在这种情况下,它并没有太大帮助。
我在一个项目中看到人们将测试结果上传到 s3。在我的情况下这是不可能的,因为我正在处理我的私人项目并且没有 s3 存储。此外,即使存储在 s3 中的报告也无法使用 Web 浏览器直接查看;它们最好存储在 HTTP 服务器下。
那么,让我的测试报告可访问的最简单的解决方案是什么?
continuous-integration - CircleCI 2.1 版-“找不到名为‘restore-cache’的命令的定义”
我目前正在尝试使用commands
CircleCI 2.1 版中提供的功能,以便我可以重用一些常用命令。我正在使用 CLI 命令进行测试:
但我收到以下错误:
似乎restore-cache
在直接的版本 2 配置文件中工作得很好,但是当我尝试使用process
它来处理 2.1 文件时,它会大惊小怪。
下面是我的config.yaml
文件的编辑版本,希望它有一些用处。如果有任何其他有用的信息,请告诉我。
circleci - 如何在 CircleCI 中获取 PR 前往的分支
CircleCI 有一个CIRCLE_BRANCH
env 变量,它告诉你 PR 本身的分支的名称。
但我想反过来,我需要 PR 的分支名称试图合并。
scala - sbt 总是在 CI 中重新编译整个项目,即使有缓存?
我正在努力将 SBT 用于具有以下基本工作流程的 CI 流程:
- 编译测试
- 缓存
~/.sbt
和~/.ivy2/cache
- 缓存
target
我项目中的所有目录
在随后的步骤中:
- 恢复
~/.sbt
和~/.ivy2/cache
- 恢复完整项目,包括先前生成
target
的包含.class
文件和相同源代码的目录(应该是相同的结帐) - 通过运行测试
sbt test
100% 的时间,sbt test
重新编译整个项目。我想了解或调试为什么会这样,因为自上次编译以来没有任何改变(好吧,什么都不应该改变,那么是什么导致它相信某些东西?)
我目前正在将 circleci 与 docker 执行器一起使用。这意味着有一个新的 docker 实例,来自同一个图像,运行每个步骤,尽管我希望缓存能够解决这个问题。
相关部分.circleci/config.yml
(如果你不使用圆圈,这应该仍然可以理解;我已经注释了我能做的):
第二阶段的输出通常如下所示:
我该怎么做才能确定为什么第二次重新编译所有源并缓解它?
我在 linux 容器中运行 sbt 1.2.8 和 scala 2.12.8。
更新
我还没有解决这个问题,但我想我会为我最糟糕的问题分享一个解决方法。
主要问题:将“测试编译”与“测试运行”分开次要问题:构建速度更快,而无需在每次推送时重新编译所有内容
我对二级没有办法。对于初级:
我可以从 CLI via而不是 via运行scalatest运行器,以避免任何重新编译的尝试。运行器可以对文件目录进行操作。scala -cp ... org.scalatest.tools.Runner
sbt test
.class
变更摘要:
- 更新 docker 容器以包含 scala cli 安装。(不幸的是,我现在需要保持这些版本同步)
- 构建阶段:
sbt test:compile 'inspect run' 'export test:fullClasspath' | tee >(grep -F '.jar' > ~test-classpath.txt)
- 编译但也记录一个可复制的类路径字符串,适合传递
scala -cp VALUE_HERE
给运行测试
- 编译但也记录一个可复制的类路径字符串,适合传递
- 测试阶段:
scala -cp "$(cat test-classpath.txt)" org.scalatest.tools.Runner -R target/scala-2.12/test-classes/ -u target/test-reports -oD
- 通过运行器运行 scalatest,使用 中的编译
.class
文件target/scala-2.12/test-classes
,使用编译阶段报告的类路径,并将 printint 打印到标准输出以及报告目录
- 通过运行器运行 scalatest,使用 中的编译
我不喜欢这个,它有一些问题,但我想我会分享这个解决方法。
circleci-2.0 - 无法在 Circleci orb 中使用环境变量
我正在尝试创建一个 Circleci 工作流程,该工作流程构建 Java WAR 并将其上传到我的组织现有的 S3 工件存储桶存储库。首先,构建项目并将一些信息保存在文件中,并将 VERSION 放入 BASH_ENV:
然后,我尝试使用官方 S3 orb 上传工件:
此上传任务失败,The user-provided path target/project-.war does not exist.
因为正在插入空字符串而不是预期版本。
Circleci 文档指出:
在每一步中,CircleCI 都使用 bash 来获取 BASH_ENV。这意味着 BASH_ENV 会自动加载和运行,允许您在运行步骤中使用插值和共享环境变量。
然而,情况似乎并非如此。如何让 S3 上传任务使用我设置的环境变量?
yaml - Circleci:找不到名为发布最新的作业的定义
有人可以告诉我我在这里做错了什么吗?当我尝试通过 circleci 运行此 yaml 文件时出现以下错误
!/bin/sh -eo pipefail 调用工作流时出错:'build-master' 找不到名为 publish-latest 的作业的定义
警告:此配置是自动生成的,用于向您显示上述消息。不要重新运行此作业。重新运行将没有效果。错误的
php - 尽管在本地成功,但在 Circleci 上构建失败
每当我在 Circleci 上运行工作流时,都会失败,给我一个 500 HTTP 错误代码,尽管我在本地运行它时已经过测试并且成功了。
当我在本地运行测试时,我从存储中获取图像并使用它来执行我的 HTTP 请求,但是由于我使用的是 Circleci,所以我使用 curl 获取图像,将此图像放入文件夹中,然后我获取它以执行我的 HTTP 请求,但是,尝试在 Circleci 上构建时总是失败。
我想知道我是否在通过 curl 错误地存储图像时做错了什么,并指向最终不在正确位置的东西,或者可能是其他东西。尽管 500 HTTP 错误请求听起来像是我的 API 有问题,但我可以确认当它在本地运行时,我没有收到 HTTP 500 错误代码,因为它返回:时间:6.85 秒,内存:28.00MB好的(5 个测试,8 个断言)。
我将在我的 config.yaml 和虚拟测试函数下面发布。
配置文件