Drone CI 中文文档

版本提升发布 (Promotions)

你可以使用版本提升发布功能,按构建版本号将代码发布到目标环境,例如,将构建版本号 42 推广到生产环境。下面是使用版本提升发布功能的一些好处。

  • 创建可重复的部署
  • 创建一个审计跟踪
  • 减少人为错误
  • 分离职责
  • 撤销开发人员对服务器环境的访问

工作原理

当你发布一个版本提升构建时,Drone 会创建一个新的构建(有一个新的构建编号),它的值继承自被提升的构建。这个新的构建将有一个事件类型被设置为 promote。你可以在你的流水线配置中引用该事件类型和目标环境。

Drone 执行你的构建时,默认情况下,它会执行你的 yaml 中定义的所有流水线 (Pipeline) 和所有步骤 (Steps)。你可以根据事件和目标环境来限制流水线和步骤的执行。

  • 按目标环境限制流水线的执行:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    kind: pipeline
    type: docker
    name: default
    
    steps:
    - name: test
      image: node
      commands:
      - npm install
      - npm run test
      - npm run bundle
    
    - name: deploy
      image: plugins/ssh
      settings: ...
    
    trigger:
      event:
      - promote
      target:
      - production
    
  • 按目标环境限制流水线步骤的执行:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    kind: pipeline
    type: docker
    name: deploy
    
    steps:
    - name: test
      image: node
      commands:
      - npm install
      - npm run test
      - npm run bundle
    
    - name: deploy
      image: plugins/ssh
      settings: ...
      when:
        event:
        - promote
        target:
        - production
    
  • 为版本提升发布活动创建单独的流水线:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    kind: pipeline
    type: docker
    name: build
    
    steps:
    - name: test
      image: node
      commands:
      - npm install
      - npm run test
    
    trigger:
      event:
      - push
      - pull_request
    
    ---
    kind: pipeline
    type: docker
    name: deploy
    
    steps:
    - name: test
      image: node
      commands:
      - npm install
      - npm run test
      - npm run bundle
    
    - name: deploy
      image: plugins/ssh
      settings: ...
    
    trigger:
      event:
      - promote
      target:
      - production
    

如何发布提升版本

你可以使用命令行工具触发版本提升发布的构建。

  • 使用 build promote 命令:

    1
    
    drone build promote <repo> <number> <environment>
    
  • 将第 42 个构建版本的构建物(制品)发布到 staging 环境(暂存/中转区)的示例:

    1
    
    drone build promote octocat/hello-world 42 staging
    
  • 将第 42 个构建版本的构建物(制品)发布到 production 环境(生产环境)的示例:

    1
    
    drone build promote octocat/hello-world 42 production
    

在上面的例子中,我们参考了 stagingproduction 环境,然而,environment 是一个自由字段。你可以使用任何环境 (environment) 名称。