我在drone.yml
文件中定义了一些阶段。有没有办法指定需要通过命令行参数运行哪个阶段?例如:下面是我的drone.yml文件。我想分别构建buildOnContainer1
和buildOnContainer2
阶段。所以我正在寻找像drone exec buildOnContainer1
这样的命令。它只运行buildOnContainer1
下的命令。
buildOnContainer1:
image: container1
pull: true
commands:
- npm test:uat
buildOnContainer2:
image: container2
pull: true
commands:
- npm test:dev
答案 0 :(得分:0)
我首先想到的是实现粒度级别的控制是通过环境变量。
Drone提供了在运行时替换环境变量的功能。这使我们能够在管道配置中使用动态构建或提交细节。
您可以使用机密将环境变量传递到命令行,也传递给Drone服务器。查看ENV interpolation和docker exec
command
您应该为container1
和container2
构建自定义图像以运行命令或根据特定环境变量的值跳过它们。
一个肮脏的例子就像下面的.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.sh
bash脚本。该脚本可以检查ENVAR SKIP
的值是true还是false。如果true
,则无效。如果false
是执行npm
命令,则使用您传递给脚本的任何args。
然后你可以在本地执行构建:
drone exec --secret skip.buildOnContainer1=true --secret skip.buildOnContainer2=false