问题标签 [gitlab-pipelines]

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 投票
0 回答
114 浏览

gitlab - 带有 gitlab-runner 的自托管 CI VM 中的 GitLab 子父管道

我在专用 YAML 文件上定义了一个单独的 GitLab 管道np-pipeline.yml。然后我从另一个具有以下trigger功能的手动作业中调用它:

我基本上遵循了这里的文档:https ://docs.gitlab.com/ee/ci/pipelines/pipeline_architectures.html#child--parent-pipelines

但是我无法运行整个子管道。问题在于流程图像中下方的琥珀色图标。子管道流中的第一个作业被此消息卡住:

这项工作被卡住了,因为该项目没有在线分配任何跑步者。转到项目 CI 设置

父/子流程概览:

父/子流

我在我拥有的虚拟机中配置了一个自托管gitlab-runner,该虚拟机在我管理的各种 GitLab 项目(存储库)和组中注册。

当我转到存储库(项目)CI 设置时,我看不到任何可用于注册另一个 GitLab 运行器的新令牌。

我已经使用类似于以下命令的命令注册了一个项目运行器:

我还用单独的令牌注册了一些团体跑步者,但是当我

  1. 进入 GitLab 网站项目页面
  2. 然后单击左侧面板上的“设置”
  3. 然后点击“CI/CD”
  4. 然后展开“Runners”部分:

它们不会出现在可用令牌的项目列表中。我只能看到我用上面的命令注册的一个项目运行器。

  • 如何在带有 GitLab 运行器的自托管 CI VM 中运行此 CI 父/子管道?
  • 我想使用shell跑步者(没有码头或其他任何东西)
  • 我有一个相当大的虚拟机用于 CI 工作,所以我想看看是否有办法在同一个虚拟机中拥有多个跑步者。

单独的子管道供参考:

0 投票
0 回答
56 浏览

terminal - 在我的本地机器上查看 Gitlab CI/CD 管道

我在服务器上使用 gitlab 来存储和管理我们的项目。但是每次我推送我的代码时,我都必须:

=> 登录 gitlab 的前台

=> 选择我的项目

=> CI/CD

=> 管道

有没有办法在我的本地计算机上的命令之后立即看到该终端运行所有 .gitlab-ci.yml 内容git push

0 投票
0 回答
57 浏览

gitlab - 是否可以将 POST 文件发送到 GitLab 管道作业工件?

我有一个在外部运行的管道,并通过 GitLab API 将管道的状态发送回 GitLab。我想知道是否也可以发送管道日志并将它们存储在 GitLab 的工作工件中。据我了解,工件似乎只能通过内部(gitlab-ci.yml)创建,并且此处的文档也没有说明任何选项来创建作业工件的 POST。

0 投票
0 回答
54 浏览

gitlab - 桥和作业 Gitlab API 端点找不到子管道及其作业

我无法通过这两个 API 从主管道获取下游子管道详细信息

  1. 获取 /projects/:id/pipelines/:pipeline_id/jobs
  2. 获取 /projects/:id/pipelines/:pipeline_id/bridges

还有其他方法可以从 GitLab API 获取子管道详细信息吗?

0 投票
1 回答
191 浏览

gitlab - 如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?

我们有一个要求,如果先前的管道具有相同的部署作业处于运行状态,则管道中的部署作业应该等待。因此,我们面临并发问题。例子:

  • 由于提交而处于运行状态的旧管道 > 作业名称 DEV 部署 -> 清理数据并部署
  • 由于新提交而处于运行状态的新管道 > 作业名称 DEV 部署 --> 现在这些干净的数据将影响之前的管道部署。

我们希望等待新的管道特定作业,直到具有相同作业名称的前一个管道未完成。

我们在 GitLab 中有什么解决方案吗?

我有一个解决方法来处理使用带有管道 API 的 before_script。我正在执行的处理此问题的步骤:

  1. 对于新管道,首先检查当前管道 ID。
  2. 然后检查之前的管道与当前管道 ID 不相等,并且状态为运行或挂起。
  3. 然后获取当前管道部署作业名称。
  4. 然后检查之前运行的具有相同作业名称的管道。
  5. 如果是,则等待,否则跳过并移动以进行新部署。

任何不通过脚本处理的通用解决方案都将受到高度赞赏。

0 投票
1 回答
297 浏览

gitlab - 在 Gitlab 管道中的条件手动阶段之后运行阶段

我正在尝试运行一个管道,其中最后阶段取决于前一个阶段,其作业是有条件的手动的。

我做了这个例子 .gitlab-ci.yml 来证明这一点。我正在处理三个阶段:

测试阶段有一项工作

Publish 阶段的三个作业,都是手动的,仅在某些文件发生更改时才存在

最后是创建标签阶段,我只想在其中一个发布作业完成后运行。

通常我可以needs用来使 Create Tag 作业依赖于发布作业。但是,例如,如果我只在 a/ 目录中进行更改,我将收到以下错误,因为只存在“发布包 a”:

我真正想要的是

但据我所知,没有这样的事情。只有在 Publish 阶段的现有作业完成后,我才能运行 Create Tags 作业?

0 投票
1 回答
367 浏览

node.js - 在 Gitlab 管道中安装依赖项时出错

在 gitlab 管道中安装依赖项时出错。我不知道我能用这个错误做什么。有人可以解释为什么会出现吗?

0 投票
2 回答
83 浏览

gitlab - 如何在 Gitlab 中运行从 repo A 到管道 B 的脚本

我在 GitLab 中有两个存储库,比如说存储库 A 和 B。

回购 A 包含:

  • read_ci.yml
  • read_ci.sh

read_ci.yml 包含:

回购 B 包含:

  • gitlab-ci.yml

gitlab-ci.yml 包含:

显然,这不符合我的意图。我想要实现的是在项目 B 管道中运行项目 A 脚本。原因是我希望从多个不同的管道调用项目 A 并在那里运行。

GitLab 的替代方案:Azure Pipelines。从资源仓库运行脚本

0 投票
1 回答
79 浏览

.net-core - 将 gitlab 存储库的一部分复制到 gitlab 内的另一个存储库

我有一个运行 IIS 的共享服务器,它接受 Git 自动部署,我使用的是 .Net 2.2。文件将在使用 SSH 和 WebHooks 推送到 gitlab 存储库后立即部署到 plesk 网站。所以这个存储库只会部署,例如:dll文件。我在 gitlab 中有另一个存储库用于存储库。

我可以通过管道中的命令在本地发布。

问题:如何创建一个管道命令, 在部署命令之后将部署的文件从代码存储库复制到部署存储库dotnet publish

编辑

Mike bellow 回答了问题,但我在复制文件的过程中遇到错误,我收到如下消息:

通过添加-rlike解决- 'cp -r path/to/published/files/* deploy/'

0 投票
1 回答
50 浏览

laravel - gitlab CI/CD 部署 laravel 项目

我想通过 ci/cd gitlab 部署我的 laravel 项目,我在部署我的项目时遇到了问题。我正在尝试通过 gitlab CI 将我的 laravel 项目部署到 cpanel。我在这个项目中使用部署程序包,但是当我将提交推送到 gitlab 时,管道失败了。

当我将提交推送到 gitlab 并在管道 错误图像中出现此错误时出现此错误

这是我的 deploy.php 代码

这是我的 gitlab-ci.yml 代码