问题标签 [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.
continuous-deployment - 在持续交付工作流程中使用 nix
可以nix
在持续交付工作流程中使用吗?
我们使用信号量作为我们的持续集成服务,现在我正在研究在成功构建后构建包。为此,我正在考虑使用nix
.
我不知道用这个包管理器建立持续交付管道的正确方法是什么。似乎这样的自动化过程将涉及:
- 创建 nixpkgs存储库的分支(在 CI 服务器中)。
- 更新
rev
字段fetchFromGithub
。 - (自动)提交拉取请求。
但我不知道这是否有意义,而且我担心持续交付过程涉及手动步骤(让人工批准拉取请求)。
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 中选择了我的语言和版本,我该如何更改我的节点版本?
在此先感谢您的帮助。
ruby-on-rails - Rails 如何从子目录中包含模块
我目前有这个文件夹目录
- 应用程序
- 控制器
- 项目控制器.rb
- 子任务
- index_helper.rb
- 控制器
项目控制器.rb
index_helper.rb
require
此配置无需声明即可在本地工作。但是当在 CI (semaphoreci) 上运行时,它会返回
我试图通过添加所有可能的子配置来使用自动加载功能
但这会引发不同的错误
我的问题是:有没有办法在没有任何require
, require_relative
,require_dependency
子句的情况下包含这个模块?这个设置在几个月前有效,但它突然开始失败。
elasticsearch - RSpec 和 Elasticsearch 导致 CI 失败
我们有一个 Rails 应用程序,并且有 semaphoreCI 运行我们的规范。在我们的本地机器中,所有规格都通过,没有任何问题。
但是,我们的所有规格都失败了,失败如下:
我们一直在研究,发现https://semaphoreci.com/docs/elasticsearch.html,这意味着它已经配置好了,所以 elasticsearch 会自动运行。
是否可以作为更改默认端口信号量CI 使用的解决方案?如果是这种情况,我们怎么能做到这一点?
提前非常感谢!
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 移动到根目录...
docker - Elixir - 无法在 dockerized 应用程序中运行混合测试
我有这个信号量配置
除了最后一个“Test Elixir”之外,所有测试都通过了。相反,我收到以下错误:
docker - Docker - Alpine Elixir 容器具有不可满足的约束
我的 Phoenix 应用程序有这个Dockerfile。使用 Semaphore CI 运行促销时,我的部署失败并返回此错误:
这两个包怎么取不了?
git - 在 GitHub 上签入后自动更改文件的最佳实践
我们有两个环境。此代码不能使用环境变量,因为它是客户端 JavaScript。
我们需要根据环境更改对象中的键。我不想使用 if 语句,因为代码中有多个位置。
我只需要在 Semaphore CI 部署环境上更改它。我在想也许 post-commit 钩子可能是最好的方法,只需运行一个命令行工具sed
就可以了%s/my_local_web/my_staging_web/g
。我愿意接受任何建议或替代思维方式。
automation - 如何安全地设置持续交付?
设置:
- 私人主仓库,每个开发人员都有自己的私人分叉。
- 目前使用 CircleCI,但我们很乐意切换以满足要求
- 主仓库上的分支受到合并限制的保护
要求:
- 构建 + 测试分叉的拉取请求
- 根据 master repo 分支更新部署到不同环境
- 并非所有开发人员都可以完全信任生产凭证
部分解决方案:
- 在分叉的拉取请求上启用构建和传递秘密(参考)
- 使用 CircleCI 上下文为每个分支设置环境变量。这允许不同的部署目标。
问题:
- 任何可以打开 PR 的人现在都可以访问所有 repo 特定的秘密以及所有全局上下文。
- 即使我们禁用基于分叉拉取请求的构建,任何对至少一个 repo 具有写访问权限的人都可以访问所有全局上下文。
问题:
- 这似乎是一个非常常见的用例。其他公司是如何解决的?
- CircleCI 不是解决此问题的正确工具吗?-不,不是(见下文)。
- 我们应该建立一个定制的解决方案吗?
编辑1:
CircleCI 回复了我,令人惊讶的是这不是他们支持的用例。现在寻找其他供应商。上述问题仍未得到解答。
编辑2:
我还联系了 TravisCi 和 SemaphoreCi,似乎只有 TravisCi 支持构建分叉 PR 并且不向其中泄露秘密(参考)。
SempahoreCi 缺少 (1) 构建分叉 PR 和 (2) 在非主工作流的部署阶段隐藏秘密
CircleCi 具有受限的上下文,但它们需要手动更改工作流程。绝对不容易设置,我不完全理解它们将如何工作。
heroku - 由于依赖私有仓库,无法在 Heroku 上部署 Elixir 应用程序
我正在为 Elixir 使用 heroku 的 buildpack,其中一个依赖项失败了,mix deps.get
因为它来自一个私有的 Github 存储库。
当我尝试部署时,出现此错误:
我尝试添加GITHUB_API_TOKEN
Heroku 的配置变量,但仍然遇到相同的错误。