问题标签 [semaphore-ci]

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 投票
1 回答
1024 浏览

continuous-deployment - 在持续交付工作流程中使用 nix

可以nix在持续交付工作流程中使用吗?

我们使用信号量作为我们的持续集成服务,现在我正在研究在成功构建后构建包。为此,我正在考虑使用nix.

我不知道用这个包管理器建立持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:

  1. 创建 nixpkgs存储库的分支(在 CI 服务器中)。
  2. 更新rev字段fetchFromGithub
  3. (自动)提交拉取请求。

但我不知道这是否有意义,而且我担心持续交付过程涉及手动步骤(让人工批准拉取请求)。

0 投票
2 回答
418 浏览

node.js - Semaphore CI ruby​​ 项目上的 Javascript (Jest) 测试

几年来,我使用 Semaphore CI 建立了一个 Ruby on Rails 项目。Semaphore 项目设置为使用 Ruby 2.2.2 作为它的语言。随着时间的推移,该项目采用了带有 browserify 和 babelify 的 npm,并且我们使用了所有最新的 ES6 特性。npm install我们在 Semaphore 构建中添加了一个设置步骤,效果很好。

现在我们开始使用 Jest 来测试我们的 javascript,这在本地运行良好。但是当我添加npm test到我们的信号量测试命令时,npm test信号量 CI 失败并出现以下错误:

这是来自项目的一些相关信息package.json

这是.babelrc位于项目中的文件:

在本地,我在node v7.10.0. 我通过 SSH 进入我的 Semaphore CI 会话并发现它node v4.8.4已安装在那里。我尝试node v4.8.4在我的本地机器上安装并安装了该版本,我在本地得到了与在 CI 上相同的测试错误(上面发布)。所以这是一个节点版本问题。

我补充说:

到我的package.json文件,但这并不影响安装在 Semaphore 上的节点版本。

因此,如果我已经Ruby 2.2.2在 Semaphore Build Settings 中选择了我的语言和版本,我该如何更改我的节点版本?

在此先感谢您的帮助。

0 投票
0 回答
681 浏览

ruby-on-rails - Rails 如何从子目录中包含模块

我目前有这个文件夹目录

  1. 应用程序
    • 控制器
      • 项目控制器.rb
      • 子任务
        • index_helper.rb

项目控制器.rb

index_helper.rb

require此配置无需声明即可在本地工作。但是当在 CI (semaphoreci) 上运行时,它会返回

我试图通过添加所有可能的子配置来使用自动加载功能

但这会引发不同的错误

我的问题是:有没有办法在没有任何require, require_relative,require_dependency子句的情况下包含这个模块?这个设置在几个月前有效,但它突然开始失败。

0 投票
0 回答
229 浏览

elasticsearch - RSpec 和 Elasticsearch 导致 CI​​ 失败

我们有一个 Rails 应用程序,并且有 semaphoreCI 运行我们的规范。在我们的本地机器中,所有规格都通过,没有任何问题。

但是,我们的所有规格都失败了,失败如下:

我们一直在研究,发现https://semaphoreci.com/docs/elasticsearch.html,这意味着它已经配置好了,所以 elasticsearch 会自动运行。

是否可以作为更改默认端口信号量CI 使用的解决方案?如果是这种情况,我们怎么能做到这一点?

提前非常感谢!

0 投票
0 回答
1444 浏览

docker - Docker 无法在目录中准备上下文

所以!我正在建立一个 CI/CD 系统,它有自己的文件夹和 yaml 文件。在该文件夹中,我需要调用 docker build。但是,我继续收到以下错误:

unable to prepare context: path "./server" not found.

这是我的应用程序的结构:

在 deployment-file.yaml 中,我调用:

docker build -t dizzy/dizzy-server:latest -f ./server/Dockerfile.prod ./server

我已经尝试过使用 ../server 等相对路径的所有变体,但 Docker 不会接受。它给了我一个新的错误unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat

执行此操作的正确方法是什么,或者我需要将该 deployment-file.yaml 移动到根目录...

0 投票
0 回答
137 浏览

docker - Elixir - 无法在 dockerized 应用程序中运行混合测试

我有这个信号量配置

除了最后一个“Test Elixir”之外,所有测试都通过了。相反,我收到以下错误:

0 投票
1 回答
2820 浏览

docker - Docker - Alpine Elixir 容器具有不可满足的约束

我的 Phoenix 应用程序有这个Dockerfile。使用 Semaphore CI 运行促销时,我的部署失败并返回此错误:

这两个包怎么取不了?

0 投票
1 回答
23 浏览

git - 在 GitHub 上签入后自动更改文件的最佳实践

我们有两个环境。此代码不能使用环境变量,因为它是客户端 JavaScript。

我们需要根据环境更改对象中的键。我不想使用 if 语句,因为代码中有多个位置。

我只需要在 Semaphore CI 部署环境上更改它。我在想也许 post-commit 钩子可能是最好的方法,只需运行一个命令行工具sed就可以了%s/my_local_web/my_staging_web/g。我愿意接受任何建议或替代思维方式。

0 投票
0 回答
84 浏览

automation - 如何安全地设置持续交付?

设置:

  • 私人主仓库,每个开发人员都有自己的私人分叉。
  • 目前使用 CircleCI,但我们很乐意切换以满足要求
  • 主仓库上的分支受到合并限制的保护

要求:

  • 构建 + 测试分叉的拉取请求
  • 根据 master repo 分支更新部署到不同环境
  • 并非所有开发人员都可以完全信任生产凭证

部分解决方案:

  • 在分叉的拉取请求上启用构建和传递秘密(参考
  • 使用 CircleCI 上下文为每个分支设置环境变量。这允许不同的部署目标。

问题:

  • 任何可以打开 PR 的人现在都可以访问所有 repo 特定的秘密以及所有全局上下文。
  • 即使我们禁用基于分叉拉取请求的构建,任何对至少一个 repo 具有写访问权限的人都可以访问所有全局上下文。

问题:

  • 这似乎是一个非常常见的用例。其他公司是如何解决的?
  • CircleCI 不是解决此问题的正确工具吗?-不,不是(见下文)。
  • 我们应该建立一个定制的解决方案吗?

编辑1:

CircleCI 回复了我,令人惊讶的是这不是他们支持的用例。现在寻找其他供应商。上述问题仍未得到解答。


编辑2:

我还联系了 TravisCi 和 SemaphoreCi,似乎只有 TravisCi 支持构建分叉 PR 并且不向其中泄露秘密(参考)。

SempahoreCi 缺少 (1) 构建分叉 PR 和 (2) 在非主工作流的部署阶段隐藏秘密

CircleCi 具有受限的上下文,但它们需要手动更改工作流程。绝对不容易设置,我不完全理解它们将如何工作。

0 投票
1 回答
193 浏览

heroku - 由于依赖私有仓库,无法在 Heroku 上部署 Elixir 应用程序

我正在为 Elixir 使用 heroku 的 buildpack,其中一个依赖项失败了,mix deps.get因为它来自一个私有的 Github 存储库。

当我尝试部署时,出现此错误:

我尝试添加GITHUB_API_TOKENHeroku 的配置变量,但仍然遇到相同的错误。