首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种在drone.yml中定义构建阶段的方法?

是否有一种在drone.yml中定义构建阶段的方法?
EN

Stack Overflow用户
提问于 2017-05-12 00:24:45
回答 1查看 1.5K关注 0票数 0

我在drone.yml文件中定义了一些阶段。是否有方法指定需要通过命令行参数运行哪个阶段?例如:下面是我的drone.yml文件。我想分别建立buildOnContainer1buildOnContainer2阶段。因此,我正在寻找一个命令,如drone exec buildOnContainer1。它只在buildOnContainer1下运行命令。

代码语言:javascript
复制
buildOnContainer1:
    image: container1
    pull: true
    commands:
      - npm test:uat
buildOnContainer2:
    image: container2
    pull: true
    commands:
      - npm test:dev
EN

回答 1

Stack Overflow用户

发布于 2017-06-16 11:51:38

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

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

您可以使用机密将环境变量传递给命令行,也可以传递给您的无人机服务器。检查ENV插值命令上的无人机文档

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

一个肮脏的示例将类似于下面的.drone.yml

代码语言:javascript
复制
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命令的话。

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

代码语言:javascript
复制
drone exec --secret skip.buildOnContainer1=true --secret skip.buildOnContainer2=false
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43927556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档