问题标签 [gitlab-ci-runner]

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 投票
2 回答
4127 浏览

docker - Gitlab docker executor - 在 before_script 之后缓存图像

在文件中gitlab-ci有一个选项可以在.gitlab-ci.yml任何实际脚本运行之前执行命令,称为before_script. .gitlab-ci.yml示例说明在此处安装辅助程序。但是,我注意到的是,当使用 docker 执行器时,这些更改不会缓存在 Docker 中。我天真地假设在运行这些命令之后,docker 会缓存图像,因此在下一次运行或测试时,docker 只会加载before_script. 这将大大加快构建速度。

例如,我的.gitlab-ci.yml看起来有点像:

一个可能的解决方案是转到运行器机器并创建一个 docker 映像,该映像可以构建我的软件而无需任何其他安装,然后image在 yaml 文件的部分中引用它。这样做的缺点是,每当我想添加依赖项时,我都需要登录到运行器机器并在构建成功之前更新映像。如果我只需将依赖项添加到末尾apt-get install并让 docker / gitlab-ci 处理适当的缓存,那就更好了。

中还有一个cache命令.gitlab-ci.yml,我尝试将其设置为untracked: true,我认为它会缓存不是我项目副产品的所有内容,但它似乎没有任何效果。

有没有办法得到我想要的行为?

0 投票
1 回答
872 浏览

gitlab - Gitlab CI 永远运行

我刚刚将 Gitlab CE 更新到最新版本 8.3.4。在升级之前,我的 Gitlab CI 运行良好。

升级后,我的 Gitlab CI 触发了新的构建,但它们在开始时挂起。升级我的 Gitlab CI 运行器后,构建开始但再次挂起。我在控制台中看不到任何输出。

如果我检查跑步者上的文件夹 ~/builds,我注意到构建在执行之前挂起grunt

这是我的 .gitlab-ci.yml 文件:

你有什么暗示我可以调试这个吗?application.log、production.log 或 sidekiq.log 中没有相关日志。

0 投票
2 回答
1549 浏览

gitlab-ci - 如何保存用于在 Gitlab CI 中执行构建的 Docker 容器?

我将 Gitlab CI 与使用 Docker 的运行器结合使用。在 Gitlab 的一个项目的 git repo 中,我放置了一个 .gitlab-ci.yml 文件。推送此文件会导致运行程序基于我提供的 Docker 映像创建一个 Docker 容器。然后它运行 yml 文件中规定的构建步骤。当构建成功时,这非常有效。

但是,当构建失败时,我希望能够在用于运行此构建的 Docker 容器中找到原因。这可能吗?

'docker ps' 的输出显示容器在构建期间正在运行,但之后'docker ps -a' 的输出显示容器已被完全删除。有什么办法可以防止这种情况发生吗?

0 投票
0 回答
1021 浏览

gitlab - GitLab CI 在指定 shell 运行程序时继续使用 docker

编辑:在修改配置文件并不断尝试之后,我最终决定只清除 GitLab 运行器并重新安装它。重新安装并注册后,一切正常。

每当将代码推送到我的 GitLab 存储库时,我都会尝试创建自动部署。部署只需清理存储库文件,然后复制到/var/www. 我通过这些注册在服务器上设置了一个跑步者:

所以我假设构建将直接在我的主机服务器上运行。

这是toml文件:

但是,gitlab 生成的构建日志表明它仍在使用 docker 来运行构建。

  1. 如何在主机环境中本地运行构建?
  2. 有什么方法可以使用 GitLab CI 进行持续部署,只需将存储库的文件复制到另一个目录?

请不要建议使用 webhook,因为我现在正在学习 GitLab CI Runner。

谢谢。

0 投票
2 回答
7346 浏览

node.js - GitLab-CI 和 node.js - 如何启动本地服务器然后运行测试?

我已经设置了 GitLab-CI,并且正在编写我的代码.gitlab-ci.yml来运行我的测试。我的应用程序是用 node.js 编写的,文件如下所示:

我在实际启动服务器然后运行测试时遇到了麻烦,因为node server.js创建了一个永远不存在的前台进程,除非您手动执行此操作。有没有办法启动服务器,然后继续,然后在测试完成后停止它?

还是我实际上做错了,我的服务器是否应该自己开始测试?我读到的所有内容都只是说“启动节点,然后在另一个终端中针对本地服务器运行测试”,但这在自动化 CI 系统中显然毫无意义?

0 投票
1 回答
951 浏览

javascript - 在带有 JavaScript 的普通 HTML 页面中使用 GitLab 变量

GitLab 支持预定义的环境变量、YAML 定义的变量和安全用户变量 - http://doc.gitlab.com/ce/ci/variables/README.html

如何在基本 GitLab-Pages 站点中使用安全用户变量作为 JavaScript 脚本的一部分?(即该站点不使用 ruby​​、node 等,它仅使用 html、css 和 javascript)

例如,我为此项目定义了 START_PAGE_USER 和 START_PAGE_ID 变量。我的.gitlab-ci.yml通过echo $START_PAGE_USER&公开它们echo $START_PAGE_ID,并且我已经验证它们已在构建日志中公开。如何在我的 javascript 中使用这些变量(例如在我的config.js中设置用户名):

0 投票
2 回答
12085 浏览

spring-boot - 如何使用 GitLab runner 启动服务并防止它停止?

我将使用 GitLab CI 服务器部署简单的 Spring Boot 应用程序。我.gitlab-ci.yml的如下:

deploy阶段产生以下输出:

但是,我无法加载应用程序,因为一旦跑步者完成阶段,服务就停止了:

我的服务脚本将实际工作委托给组装好的war包:

此外,当我手动启动服务 ( service gitlab-runner-test start) 时,即使在用户会话关闭后它仍然在运行。

我不确定,问题的根源是什么——Spring Boot 启动脚本、GitLab 配置、我的服务脚本或其他什么?

我正在使用 GitLab CI 多运行器版本 0.5.0 (c38415a) 运行 Ubuntu 14.04。

升级版:

将运行器升级到版本 1.0.1 (cffb5c7) 并不能解决问题。

0 投票
1 回答
573 浏览

git - 创建构建文件 git push gitlab ci

我正在我的 gitlab 服务器上托管一个 plsql 项目(有很多存储过程(SP)),每个 SP 都在一个文件上。我想在每个构建(使用 gitlab-ci)上创建一个包含 SP 更改的新文件。我的问题是如何在每次构建之间获取具有他的状态(新、删除或修改)的文件列表?请记住,我正在使用 gitlab-runner 运行 gitlab-ci,并且运行程序在此之前获取更改,我有机会制作 git diff。

谢谢。

更新:来自构建 gitlab-ci 的日志

0 投票
2 回答
1439 浏览

gitlab-ci - gitlab-ci 阶段的问题

我一直致力于建立一个自动化的 RPM 构建,我想在继续任何构建步骤之前对 SPEC 文件执行一个简单的测试。我遇到的问题是,这项工作似乎总是跳到部署阶段。这是我的 .gitlab-ci.yml 中的相关片段:

我没有找到任何问题或在线文档来正确地向我解释这一点,因此感谢您的帮助!

0 投票
3 回答
14141 浏览

docker - 如何让 gitlab-ci-runner DinD 图像缓存中间图像?

我有一个 Dockerfile,它从安装 texlive-full 包开始,它很大并且需要很长时间。如果我docker build在本地,安装后创建的中间映像会被缓存,后续构建速度很快。

但是,如果我推送到我自己的 GitLab 安装并且 GitLab-CI 构建运行程序启动,这似乎总是从头开始,重新下载FROM图像,然后再次进行 apt-get 安装。这对我来说似乎是一个巨大的浪费,所以我试图弄清楚如何让 GitLab DinD 图像缓存构建之间的中间图像,到目前为止还没有运气。

我曾尝试使用--cache-dirand--docker-cache-dir作为gitlab-runner register命令,但无济于事。

这甚至是 gitlab-runner DinD 图像应该能够做的事情吗?

我的.gitlab-ci.yml

我的Dockerfile

我使用 GitLab CE 8.4.0 和 gitlab/gitlab-runner:latest 作为运行器,开始为

跑步者使用以下方式注册:

这将创建以下内容config.toml

cache_dir(我已经对,docker_cache_dir和的不同值进行了实验,disable_cache结果都相同:没有任何缓存)