问题标签 [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.

0 投票
3 回答
1060 浏览

angular - CircleCI 错误您的测试可能会向此“baseUrl”发出请求,如果您不启动服务器,这些测试将失败

我正在运行一个 Angular 2+ 应用程序,使用 Cypress.io 和 CI 使用 circleCI 进行集成测试。

我重复了这里提供的使用 circleCI 设置 Angular 项目的教程,但还需要添加 cypress orbs 来运行 Cypress。所以我最终得到了以下 config.yml 脚本:

当 circleCI 启动时,工作流的前两个作业成功(构建和 cypress/install),但 cypress/run 产生以下错误:

赛普拉斯无法验证设置为“baseUrl”的服务器是否正在运行:

http://localhost:4200

您的测试可能会向此“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 ”。

0 投票
2 回答
421 浏览

docker - 如何在 CircleCI 2.0 的部署步骤中使用构建步骤中的 docker 映像?

最后几天努力从 CircleCI 1.0 迁移到 2.0,虽然构建过程完成,但部署仍然是一个大问题。CircleCI 文档并没有太大帮助。

这与config.yml我所拥有的类似:

问题在于deploy工作。我必须指定这docker: -image一点,但我想从build已经安装了所有必需的东西的作业中重用环境。当然,我可以将它们安装在deploy工作中,但是拥有多个deploy工作会导致代码重复,这是我不想要的。

0 投票
0 回答
609 浏览

java - 如何在 CircleCI 中查看测试结果的 HTML 表示

我是 CircleCI 的新手。我已经配置了我的.circleci/config.yml. 我的构建成功执行;据我在控制台上看到的,所有测试都通过了。但是,我很高兴看到测试报告是 HTML,就像我通常可以对 Jenkins 所做的那样。

CircleCI 可以做到这一点吗?

这是来自的相关部分config.yml

据我所知,这是测试报告在我的本地机器上作为 XML 文件的位置。

当构建运行时,它会打印以下内容:

它将测试结果上传到哪里?到运行我的构建的 docker 中的其他本地文件夹?在这种情况下,它并没有太大帮助。

我在一个项目中看到人们将测试结果上传到 s3。在我的情况下这是不可能的,因为我正在处理我的私人项目并且没有 s3 存储。此外,即使存储在 s3 中的报告也无法使用 Web 浏览器直接查看;它们最好存储在 HTTP 服务器下。

那么,让我的测试报告可访问的最简单的解决方案是什么?

0 投票
2 回答
2227 浏览

continuous-integration - CircleCI 2.1 版-“找不到名为‘restore-cache’的命令的定义”

我目前正在尝试使用commandsCircleCI 2.1 版中提供的功能,以便我可以重用一些常用命令。我正在使用 CLI 命令进行测试:

但我收到以下错误:

似乎restore-cache在直接的版本 2 配置文件中工作得很好,但是当我尝试使用process它来处理 2.1 文件时,它会大惊小怪。

下面是我的config.yaml文件的编辑版本,希望它有一些用处。如果有任何其他有用的信息,请告诉我。

0 投票
1 回答
541 浏览

circleci - 如何在 CircleCI 中获取 PR 前往的分支

CircleCI 有一个CIRCLE_BRANCHenv 变量,它告诉你 PR 本身的分支的名称。

但我想反过来,我需要 PR 的分支名称试图合并。

0 投票
5 回答
1623 浏览

scala - sbt 总是在 CI 中重新编译整个项目,即使有缓存?

我正在努力将 SBT 用于具有以下基本工作流程的 CI 流程:

  1. 编译测试
  2. 缓存~/.sbt~/.ivy2/cache
  3. 缓存target我项目中的所有目录

在随后的步骤中:

  1. 恢复~/.sbt~/.ivy2/cache
  2. 恢复完整项目,包括先前生成target的包含.class文件和相同源代码的目录(应该是相同的结帐)
  3. 通过运行测试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.Runnersbt test.class

变更摘要:

  1. 更新 docker 容器以包含 scala cli 安装。(不幸的是,我现在需要保持这些版本同步)
  2. 构建阶段:sbt test:compile 'inspect run' 'export test:fullClasspath' | tee >(grep -F '.jar' > ~test-classpath.txt)
    • 编译但也记录一个可复制的类路径字符串,适合传递scala -cp VALUE_HERE给运行测试
  3. 测试阶段: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 打印到标准输出以及报告目录

我不喜欢这个,它有一些问题,但我想我会分享这个解决方法。

0 投票
0 回答
240 浏览

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 上传任务使用我设置的环境变量?

0 投票
2 回答
745 浏览

circleci - CircleCI 配置:VSCode 中缺少属性“docker”

我有 CircleCI 工作流程,它定义了执行程序和使用该执行程序的作业数量:

它按预期工作,但在 VSCode 中我看到错误: 在此处输入图像描述

有什么想法可以解决吗?

0 投票
2 回答
3402 浏览

yaml - Circleci:找不到名为发布最新的作业的定义

有人可以告诉我我在这里做错了什么吗?当我尝试通过 circleci 运行此 yaml 文件时出现以下错误

!/bin/sh -eo pipefail 调用工作流时出错:'build-master' 找不到名为 publish-latest 的作业的定义

警告:此配置是自动生成的,用于向您显示上述消息。不要重新运行此作业。重新运行将没有效果。错误的

0 投票
1 回答
572 浏览

php - 尽管在本地成功,但在 Circleci 上构建失败

每当我在 Circleci 上运行工作流时,都会失败,给我一个 500 HTTP 错误代码,尽管我在本地运行它时已经过测试并且成功了。

当我在本地运行测试时,我从存储中获取图像并使用它来执行我的 HTTP 请求,但是由于我使用的是 Circleci,所以我使用 curl 获取图像,将此图像放入文件夹中,然后我获取它以执行我的 HTTP 请求,但是,尝试在 Circleci 上构建时总是失败。

我想知道我是否在通过 curl 错误地存储图像时做错了什么,并指向最终不在正确位置的东西,或者可能是其他东西。尽管 500 HTTP 错误请求听起来像是我的 API 有问题,但我可以确认当它在本地运行时,我没有收到 HTTP 500 错误代码,因为它返回:时间:6.85 秒,内存:28.00MB好的(5 个测试,8 个断言)。

我将在我的 config.yaml 和虚拟测试函数下面发布。

配置文件