Skip to content

GitLab CI/CD YAML

Generate a CI/CD YAML

  1. Use the make command that defines the update-gitlab-ci target. This is the simpler option if your environment is already set up for it.

    make update-gitlab-ci
    
  2. Or use gomplate directly. This requires you to specify the configuration file (build.yaml), the template file (build-ci.tmpl), and the output file (.gitlab-ci.yml).

    gomplate -c build.yaml -f build-ci.tmpl -o .gitlab-ci.yml
    
Example .gitlab-ci.yml
.gitlab-ci.yml
# © Broadcom. All Rights Reserved.
# The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
# SPDX-License-Identifier: BSD-2-Clause

##############################################################################
##
## Auto-generated .gitlab-ci.yml for building Packer Example for vSphere
##
## Do not modify this file directly, either:
##
##     - Modify the source build-ci.yaml.
##     - Modify the template build-ci.tmpl.
##
## then run the following command to re-create the .gitlab-ci.yml file:
##
##     gomplate -c build-ci.yaml -f build-ci.tmpl -o .gitlab-ci.yml
##
##############################################################################

variables:
    SCRIPT_PATH: "${CI_PROJECT_DIR}"
    CONFIG_PATH: "${CI_PROJECT_DIR}/config"
    INPUT_PATH: ""
    BUILD_VARS: ""
    EXTRA_VAR_FILES: ""
    BUILD_ONLY: ""

##############################################################################

.packer-build:
    stage: build
    #tags:
    #    - packer
    before_script:
        - "packer init \"$INPUT_PATH\""
        - "packer validate -var-file=\"$CONFIG_PATH/vsphere.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/build.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/ansible.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/proxy.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/common.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/$BUILD_VARS\" ${EXTRA_VAR_FILES} \"$INPUT_PATH\""
    script:
        - "packer build -force -on-error=ask -var-file=\"$CONFIG_PATH/vsphere.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/build.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/ansible.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/proxy.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/common.pkrvars.hcl\" -var-file=\"$CONFIG_PATH/$BUILD_VARS\" ${EXTRA_VAR_FILES} ${BUILD_ONLY} \"$INPUT_PATH\""
    when: manual

##############################################################################

VMware-Photon-OS-5:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/photon/5/"
        BUILD_VARS: "linux-photon-5.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl"

##############################################################################

VMware-Photon-OS-4:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/photon/4/"
        BUILD_VARS: "linux-photon-4.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl"

##############################################################################

Debian-13:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/debian/13/"
        BUILD_VARS: "linux-debian-13.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Debian-12:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/debian/12/"
        BUILD_VARS: "linux-debian-12.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Debian-11:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/debian/11/"
        BUILD_VARS: "linux-debian-11.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Ubuntu-Server-24.04-LTS:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/ubuntu/24-04-lts/"
        BUILD_VARS: "linux-ubuntu-24-04-lts.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Ubuntu-Server-22.04-LTS:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/ubuntu/22-04-lts/"
        BUILD_VARS: "linux-ubuntu-22-04-lts.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Red-Hat-Enterprise-Linux-10:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rhel/10/"
        BUILD_VARS: "linux-rhel-10.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl -var-file=$CONFIG_PATH/rhsm.pkrvars.hcl"

##############################################################################

Red-Hat-Enterprise-Linux-9:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rhel/9/"
        BUILD_VARS: "linux-rhel-9.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl -var-file=$CONFIG_PATH/rhsm.pkrvars.hcl"

##############################################################################

Red-Hat-Enterprise-Linux-8:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rhel/8/"
        BUILD_VARS: "linux-rhel-8.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl -var-file=$CONFIG_PATH/rhsm.pkrvars.hcl"

##############################################################################

Red-Hat-Enterprise-Linux-7:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rhel/7/"
        BUILD_VARS: "linux-rhel-7.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl -var-file=$CONFIG_PATH/rhsm.pkrvars.hcl"

##############################################################################

AlmaLinux-OS-10:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/almalinux/10/"
        BUILD_VARS: "linux-almalinux-10.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

AlmaLinux-OS-9:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/almalinux/9/"
        BUILD_VARS: "linux-almalinux-9.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

AlmaLinux-OS-8:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/almalinux/8/"
        BUILD_VARS: "linux-almalinux-8.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Rocky-Linux-10:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rocky/10/"
        BUILD_VARS: "linux-rocky-10.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Rocky-Linux-9:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rocky/9/"
        BUILD_VARS: "linux-rocky-9.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Rocky-Linux-8:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/rocky/8/"
        BUILD_VARS: "linux-rocky-8.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Oracle-Linux-10:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/oracle/10/"
        BUILD_VARS: "linux-oracle-10.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Oracle-Linux-9:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/oracle/9/"
        BUILD_VARS: "linux-oracle-9.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Oracle-Linux-8:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/oracle/8/"
        BUILD_VARS: "linux-oracle-8.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

CentOS-Stream-10:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/centos/10/"
        BUILD_VARS: "linux-centos-10.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

CentOS-Stream-9:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/centos/9/"
        BUILD_VARS: "linux-centos-9.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

Fedora-Server-43:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/fedora/43/"
        BUILD_VARS: "linux-fedora-43.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/network.pkrvars.hcl -var-file=$CONFIG_PATH/linux-storage.pkrvars.hcl"

##############################################################################

SUSE-Linux-Enterprise-Server-15:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/linux/sles/15/"
        BUILD_VARS: "linux-sles-15.pkrvars.hcl"
        EXTRA_VAR_FILES: "-var-file=$CONFIG_PATH/scc.pkrvars.hcl"

##############################################################################

Windows-Server-2025-All:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2025/"
        BUILD_VARS: "windows-server-2025.pkrvars.hcl"

##############################################################################

Windows-Server-2025-Standard-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2025/"
        BUILD_VARS: "windows-server-2025.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-standard-dexp,vsphere-iso.windows-server-standard-core"

##############################################################################

Windows-Server-2025-Datacenter-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2025/"
        BUILD_VARS: "windows-server-2025.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-datacenter-dexp,vsphere-iso.windows-server-datacenter-core"

##############################################################################

Windows-Server-2022-All:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2022/"
        BUILD_VARS: "windows-server-2022.pkrvars.hcl"

##############################################################################

Windows-Server-2022-Standard-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2022/"
        BUILD_VARS: "windows-server-2022.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-standard-dexp,vsphere-iso.windows-server-standard-core"

##############################################################################

Windows-Server-2022-Datacenter-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2022/"
        BUILD_VARS: "windows-server-2022.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-datacenter-dexp,vsphere-iso.windows-server-datacenter-core"

##############################################################################

Windows-Server-2019-All:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2019/"
        BUILD_VARS: "windows-server-2019.pkrvars.hcl"

##############################################################################

Windows-Server-2019-Standard-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2019/"
        BUILD_VARS: "windows-server-2019.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-standard-dexp,vsphere-iso.windows-server-standard-core"

##############################################################################

Windows-Server-2019-Datacenter-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/server/2019/"
        BUILD_VARS: "windows-server-2019.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-server-datacenter-dexp,vsphere-iso.windows-server-datacenter-core"

##############################################################################

Windows-11-All:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/desktop/11/"
        BUILD_VARS: "windows-desktop-11.pkrvars.hcl"

##############################################################################

Windows-11-Enterprise-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/desktop/11/"
        BUILD_VARS: "windows-desktop-11.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-desktop-ent"

##############################################################################

Windows-11-Professional-Only:
    extends: .packer-build
    variables:
        INPUT_PATH: "$SCRIPT_PATH/builds/windows/desktop/11/"
        BUILD_VARS: "windows-desktop-11.pkrvars.hcl"
        BUILD_ONLY: "--only vsphere-iso.windows-desktop-pro"

##############################################################################