Continuous integration 如何在GitLab上跳过CI/CD步骤,这取决于目标计算机是否已经有该文件?

Continuous integration 如何在GitLab上跳过CI/CD步骤,这取决于目标计算机是否已经有该文件?,continuous-integration,gitlab,gitlab-ci,continuous-deployment,gitlab-ci-runner,Continuous Integration,Gitlab,Gitlab Ci,Continuous Deployment,Gitlab Ci Runner,从GitLab的例子来看,似乎只能根据文件是否更改跳过CI/CD阶段。是否可以根据要部署的计算机上是否存在文件/文件夹跳过步骤 在这种情况下,使用包管理工具是很常见的。(例如PHP中的composer或Node.js中的NPM)目前的规则是检查相应的配置文件是否已更改(例如composer中的composer.json或NPM中的package.json),以查看是否有必要运行安装步骤(即composer安装或NPM安装),尽管这种情况很少发生,当使用新计算机进行部署时,CI/CD将崩溃,因为已

从GitLab的例子来看,似乎只能根据文件是否更改跳过CI/CD阶段。是否可以根据要部署的计算机上是否存在文件/文件夹跳过步骤

在这种情况下,使用包管理工具是很常见的。(例如PHP中的composer或Node.js中的NPM)目前的规则是检查相应的配置文件是否已更改(例如composer中的composer.json或NPM中的package.json),以查看是否有必要运行安装步骤(即
composer安装
NPM安装
),尽管这种情况很少发生,当使用新计算机进行部署时,CI/CD将崩溃,因为已跳过安装步骤


目前,通过手动触发安装步骤可以解决此问题,但是否可以自动检测主机上是否存在该文件,以确定是否应运行安装步骤?

我认为没有办法执行您所描述的操作。在创建任何作业之前,GitLab中的
only/except
功能在GitLab服务器上运行。为了能够知道服务器上是否已经存在文件,需要创建一个作业,并将其分配给gitlab runner

他们有这个问题,看起来可以启动作业,然后使用退出代码确定是否应跳过该作业:


同时,您可以使安装作业始终运行,然后使用构建脚本检查此文件。从GitLab中的管道视图中,您将始终看到安装步骤。如果文件已经存在,则实际作业可以跳过以执行任何操作,然后您不需要记住手动运行作业。

对于生产环境或UAT环境,这可能是可行的,但是对于开发环境,因为运行安装步骤需要时间,尽管只需几分钟,在开发过程中经常有提交是令人不安的。然后我想我误解了你真正的要求。运行gitlab作业的机器是否有时必须安装依赖项,如果它们是新机器,但如果它们不是新机器,您希望它们什么也不做?不,我认为您在原始帖子中的理解是正确的。
npm安装
composer安装
要做的是从录制的源下载成吨的库文件,这需要几分钟的时间。(通常不将这些库文件包含在存储库中)如果要部署到新机器上,即使配置没有更改,运行程序也需要下载库文件。否则,跳过安装步骤可以节省时间。是否有某种方法可以检查作业是否在新机器上运行?可能正在检查
npm
composer
是否未安装任何内容?然后,您可以拥有一个始终启动的GitLab作业,但您不在旧机器上安装任何东西,而是将作业显示为已完成。类似于
if(新机器){npm install}
。我认为,你可以不必手动触发任何作业。