我在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发布于 2017-06-16 11:51:38
我的第一个想法是通过环境变量来实现控制的粒度级别。
无人机提供了在运行时替代环境变量的能力。这使我们能够在管道配置中使用动态构建或提交详细信息。
您可以使用机密将环境变量传递给命令行,也可以传递给您的无人机服务器。检查ENV插值和命令上的无人机文档
您应该为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是使用传递给脚本的任何arg执行npm命令的话。
然后可以在本地执行构建:
drone exec --secret skip.buildOnContainer1=true --secret skip.buildOnContainer2=falsehttps://stackoverflow.com/questions/43927556
复制相似问题