代码之家  ›  专栏  ›  技术社区  ›  kyb thursdaysDove

使用GitLab CI使发布分支的部署作业自动,其他分支的部署作业手动

  •  0
  • kyb thursdaysDove  · 技术社区  · 7 年前

    deploy_release:
      stage: deploy
      tags:
      - linux
      only: 
      - master
      - stable
      retry: 2
      script:
      - do_action 1
      - do_action 2
      - git push artifacts
    
    deploy_manual:
      stage: deploy
      tags:
      - linux
      except: 
      - master
      - stable
      when: manual
      retry: 2
      script:
      - do_action 1
      - do_action 2
      - git push artifacts
    

    但它有一个 重要的 script:

    我认为写这样的东西是个好主意:

    .deploy_base:
      stage: deploy
      tags:
      - linux
      retry: 2
      script:
      - do_action 1
      - do_action 2
      - git push artifacts
    
    deploy_release:
      include: .deploy_base
      only: 
      - master
      - stable
    
    deploy_manual:
      include: .deploy_base
      except: 
      - master
      - stable
      when: manual
    

    但我怀疑这是否管用。 有没有可能在YAML中做类似的事情?


    另一个直接的想法是

    移动 脚本: 分隔文件 deploy_script.sh

    2 回复  |  直到 7 年前
        1
  •  5
  •   kyb thursdaysDove    6 年前

    给你 https://docs.gitlab.com/ce/ci/yaml/README.html#extends

    extends

    在GitLab 11.3中引入

    extends 定义使用扩展的作业将从中继承的条目名称。
    在另一种情况下,使用YAML锚定更灵活和可读。

    .tests:
      only:
        refs:
          - branches
    
    rspec:
      extends: .tests
      script: rake rspec
      stage: test
      only:
        variables:
          - $RSPEC
    
        2
  •  0
  •   kyb thursdaysDove    7 年前

    多亏了这个问答 yaml repeated node that is a key

    解决方案是:

    .deploy_base:  &deploy_base
      stage: deploy
      tags:
      - linux
      retry: 2
      script:  &deploy_script
      - do_action 1
      - do_action 2
      - git push artifacts
    
    deploy_release:
      only:  &deploy_release_only
      - master
      - stable
      script: *deploy_script
    
    deploy_manual:
      except: *deploy_release_only
      when: manual
      script: *deploy_script
    

    更妙的是:

    .deploy_base :

    .deploy_base: &deploy_base
      stage: deploy
      tags:
      - DlpcsCore
      - linux
      retry: 2
      variables:
        URL: 'git@gitlab.com:Yahoo/HeavenShine-bin.git'
      script: &deploy_script
      - do_act_1
      - do_action_2
    
    deploy_release:
      << : *deploy_base
      only: &deploy_release_only
      - master
      - stable
      - CI
      #- /^master[-_].+$/
      #- /^(.+)[+]bin$/
    
    deploy_manual:
      << : *deploy_base
      except: *deploy_release_only
      when: manual
    

    YAML合并

        3
  •  0
  •   Zoltan Peto    5 年前