Gitlab Artifact 在分支之间传递

Gitlab Artifact passing between branches

我正在寻找正确或可用的方法来处理和存储工件

我正在使用 Gitlab CI/CD 作为我的 terraform 规划和部署方法。我有两个阶段:planapply.

在“计划”阶段,它为每个项目目录创建计划文件,最后它存储每个项目目录的工件。所以创建的计划文件,以及包含 运行.

目录列表的文件

为了让用户应用更改,他们必须提交合并请求,一旦获得批准,它将针对主分支。

这个 运行 阶段 apply,理想情况下我希望它做的是拉下工件并应用。

除了因为现在它是主分支上的管道 运行ning 之外,没有任何工件可以拉下来。

 curl -k --location --header "PRIVATE-TOKEN:super_secret_token" "https://gitlab.my_domain.tld/api/v4/projects/2/jobs/artifacts/my_source_branch_name/download?job=terraform_plan" -o artifact.zip

用预定义变量中的 $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME 替换 my_source_branch_name。除非分支被删除,因为它是合并请求中的一个选项,它不能将其拉下。

所以我唯一的赌注是做一些像外部工件存储这样的事情,我可以在其中将分支名称作为文件夹结构传递?除非我可以用 Gitlab 做点什么?

或者我可能只是在想法上偏离了方向。

只是确认一下,这是我的回答:

Also, is generic_packages an option to use for you ? – Nicolas Pepinster

使用通用包时,我使用了一个 ID 系统,其中包括分支名称和作为管道 ID 的版本号(以获得唯一性)。然后在管道中,我可以 CURL 从 repo 中提取包,按版本号排序,并在我的 apply 阶段下拉“最新”(不是最新的)。