Remix.run Logo
plqbfbv 3 hours ago

In my experience include/extends works well for importing or extending whole jobs, but not so much for defining a small snippet of text that I want to reuse across many jobs, perhaps when overriding stuff.

An example of how I normally use them and why I still find them useful:

  # Imports whole pipeline architecture jobs
  include:
  - project: company/ci-templates
    ref: "master"
    file: "languages/stack.yaml"
  
  # Define a command I need to use exactly the same
  # across different jobs I'm going to override
  .vpn_connect: &vpn_connect
    - cmd1
    - cmd2
    - cmd3 &
  
  job1:
    extends: imported1
    script:
      - ....
      - *vpn_connect # 2nd command
      - ...
  
  job2:
    extends: imported2
    script:
      - ...
      - ...
      - *vpn_connect # 3rd command
      - ...