问题标签 [gitlab-ci.yml]

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 回答
628 浏览

gitlab - .gitlab-ci.yml yaml 中的数组变量

我想在我的 gitlab ci/cd yml 文件的变量中使用数组,如下所示:

但 Lint 告诉我文件不正确:

我试过下一个:

但是构建失败并打印出 bash 错误:

有没有办法在 .gitlab-ci.yml 文件中使用数组变量?

0 投票
0 回答
79 浏览

yaml - 仅适用于“主”和“标签”的 GitLab 规则

我正在寻找一种解决方案来执行 CI/CD 作业mastertags但同时我想检查是否Dockerfile存在,这需要使用rules

我想达到什么

我只想为特定的标记符号构建 Docker 映像,master并且tags不受限制。我曾经能够通过only

gitlab-ci.yml

然而不幸的是,only我不得不放弃对“Dockerfile”的检查,所以我切换到rules.

有问题rules

但是,问题rules在于,到目前为止,在这里找到解决方案的唯一方法是使用正则表达式。这极大地限制了标签的约定。

在我的例子中 0-9.0-9.0-9

其他符号将被禁止,1.0.0.1 或 1.0.0-alpha,必须为每个项目单独定义和实施。

有没有更优雅的处理方式?

编辑:

无法if: $CI_COMMIT_TAG =~ "/[0-9].[0-9].[0-9]/g"正常工作

0 投票
1 回答
93 浏览

gitlab - 当只有降价更改时,有没有办法跳过管道?

目标

发布管道应该启动特定分支的部署。如果只有文档更改,则
不应发生这种情况(跳过工作) 。(文件)*.md

问题

如果您更改了多个文件,但只有一个文件以 结尾.mdbuild,则仍会跳过该作业。该作业不会针对任何文件运行。

https://docs.gitlab.com/ee/ci/jobs/job_control.html#onlychanges--exceptchanges-examples

那么,是否甚至可以指定上述规则?

到目前为止我尝试了什么(摘录)

那么,如果"*.md"不起作用,是否可以恢复它?
"**/!(*.md)" # Every file except *.md

这不会执行任何操作

这总是执行

问题

我必须使用自定义变量来解决这个问题还是有更简单的方法?

0 投票
1 回答
140 浏览

gitlab - 如何在 Gitlab 管道中运行 Specflow 测试用例以实现 CI/CD 实施

我想实现 CI/CD,这样每当开发团队在他们的构建中提交任何更改时,我的整个自动化套件就会在构建和部署之前运行。

我在 GitLab 中有 yml 文件,在 Visual Studio 中有自动化测试用例脚本(C# 中的 Specflow 框架)。

请在下面找到 yml 文件:

但是我的工作没有实际执行项目中的任何测试用例就通过了

Visual Studio 中的文件夹结构: 在此处输入图像描述

我尝试在路径中进行许多更改,但都没有成功。我是不是走错路了?谁能帮我解决这个问题?如果 yml 文件完全错误,那么有人可以指导我吗?提前致谢!!!:)

PS:我在提交之前验证了 yml,并且 ymlvalidator 将其显示为正确的 yml 文件。

0 投票
0 回答
25 浏览

gitlab - Git 创建了一个额外的文件,最后附加了我的机器名称

我刚刚更改了一个文件并成功提交并推送它,从那个角度来看一切都很好,但是当我回到主分支时,它似乎创建了一个额外的 yaml 文件......与那个完全相同我刚刚推送,但这次它的末尾附加了我的机器名称......

它开始看起来像这样。gitlab-ci-yml....但它现在创建了一个名为 . gitlab-ci-mikeslaptop.yaml在同一个文件夹中......和豪华的 git 说 [master = +1 ~0 -0 !] 和 git 说untracked files (use "git add ,file>..." to include in what will be committed) .gitlab-ci-mikeslaptop.yaml

以前有没有人见过这种行为..我在盯着看,但什么也没找到。感激地收到任何帮助

0 投票
0 回答
107 浏览

node.js - 节点pm2的gitlab ci / cd管道问题

我有这些工作的管道: 在此处输入图像描述

这是 YAML 文件

在部署阶段,我将pm2用于节点应用程序。当我用pm2重新启动应用程序时,如果它还没有启动它会抛出一个错误。如果我启动已经启动的应用程序,它会再次引发错误。所以我允许deploy-restart失败,如果失败部署启动将被执行。我需要一个没有失败的解决方案。

0 投票
1 回答
179 浏览

amazon-ec2 - 将战争文件从 GitLab 复制到 EC2

我正在尝试创建一个 CI/CD 管道来构建战争文件并将其从 GitLab 部署到 EC2。

创建war文件后,我想将其复制到EC2中的某个文件夹,以便从那里将其复制到tomcat服务器。

以下是“.gitlab-ci.yml”文件。

我添加了 AWS_ACCESS_KEY_ID 和 AWS_SECRET_KEY 变量。但是当上述管道运行时,在部署阶段 scp 命令给出“权限被拒绝”错误。关于如何解决这个问题的任何想法?

错误信息:

谢谢你。

0 投票
0 回答
33 浏览

ssh - 无法停止、删除战争文件并使用 SSH 启动 tomcat

我正在尝试开发一个 GitLab 管道以将战争文件部署到 EC2 tomcat 中。我正在成功地将战争文件移动到 EC2 到文件夹 home/ec2-user。从那里我试图将战争文件复制到 home 之前的 tomcat8/webapps 文件夹(主文件夹级别)。

我正在使用以下代码,但在尝试关闭或启动服务器时会抛出类似“没有这样的文件或目录”的错误。

以下是错误。(如果我在 EC2 实例中手动运行上述步骤,它们工作正常)。

谁能帮我解决我在这里犯的错误?谢谢你。

0 投票
0 回答
75 浏览

docker - 为什么赛普拉斯服务失败?

下面是我的管道,我试图让 Cypress 工作来运行针对 Nginx 服务(指向主应用程序)的测试,该服务是在build阶段构建的 下面基于来自这里的官方模板https://gitlab.com /cypress-io/cypress-example-docker-gitlab/-/blob/master/.gitlab-ci.yml

错误输出:

这个设置有什么问题?

0 投票
1 回答
272 浏览

gitlab - GITLAB:CI/CD 管道没有失败并在测试用例失败时自动终止。我该怎么做才能达到同样的效果?

我正在使用 GitLab,我的测试用例是用 C# Speflow 编写的。我已将管道配置为在部署之前执行完整的自动化套件,但我的管道不会失败并在测试用例失败时终止,它会继续运行,即使执行了完整的套件,它仍然没有失败或停止。只有达到运行器超时限制时,管道才会停止。请看下图:

在此处输入图像描述

一旦任何测试用例失败,我想停止管道并将其标记为失败。我使用了“allow_failure:false”,但它没有用。有人可以帮我吗?所以简而言之,我想终止 CI 管道并在我的第一个测试用例失败时立即失败,并且不希望我的管道继续处理其他剩余的测试用例。

我的 GitLab yml 文件如下: