有没有办法在 drone.yml 中定义构建阶段?



我在drone.yml文件中定义了一些阶段。有没有办法指定需要通过命令行参数运行哪个阶段?例如:下面是我的drone.yml文件。我想分别构建buildOnContainer1buildOnContainer2舞台。所以我正在寻找一个命令,例如drone exec buildOnContainer1.它仅在buildOnContainer1下运行命令。

buildOnContainer1:
image: container1
pull: true
commands:
- npm test:uat
buildOnContainer2:
image: container2
pull: true
commands:
- npm test:dev

实现这种粒度级别的控制的第一个想法是通过环境变量。

无人机提供了在运行时替换环境变量的功能。这使我们能够在工作流配置中使用动态构建或提交详细信息。

您可以使用机密将环境变量传递到命令行和 Drone 服务器。检查有关 ENV 插值和docker exec命令的无人机文档

您应该为container1container2构建自定义映像,以便根据特定环境变量的值运行命令或跳过它们。

一个肮脏的例子是类似于以下.drone.yml

buildOnContainer1:
image: container1
pull: true
environment:
- SKIP=${skip.buildOnContainer1}
commands:
- ./myscript.sh test:uat
buildOnContainer2:
image: container2
pull: true
environment:
- SKIP=${skip.buildOnContainer2}
commands:
- ./mysqcrypt.sh test:dev

自定义映像应在工作目录中包含mysqcript.shbash 脚本。该脚本可以检查 ENVARSKIP的值是真还是假。如果true,它将什么也不做。如果false将使用您传递给脚本的任何参数执行npm命令。

然后,您可以在本地执行构建:

drone exec --secret skip.buildOnContainer1=true --secret skip.buildOnContainer2=false

相关内容

  • 没有找到相关文章

最新更新