Building a Custom Pipelines Build Plane VM Image using Hashicorp Packer

JFrog Pipelines Documentation

ft:sourceType
Paligo

A custom Pipelines build plane VM image can be built to include your own artifacts. In this example we'll reference Hashicorp packer and Ubuntu 20, but any VM image build process (AWS cloud formation, PowerShell, or others) can be used with any OS that we support.

To build the custom build plane VM image:

  1. Download the buildplane package (RPM for Centos or a tar file for Windows) to the machine that will be used to build the VM image.

    Note

    This API can be used by authenticated users only.

    Example

    curl --request GET  --url https://my-pipelines-api-url/v1/passthrough/artifacts/buildPlane-x86_64-Ubuntu_20.04.deb --output buildPlane-x86_64-Ubuntu_20.04.deb
    buildPlane package names:
    buildPlane-x86_64-Ubuntu_18.04
    buildPlane-x86_64-Ubuntu_20.04.deb
    buildPlane-x86_64-Centos_7.rpm
    buildPlane-x86_64-CentOS_8.rpm
    buildPlane-x86_64-WindowsServer_2019.tar.gz
  2. Update your packer (or cloud formation) template to:

    1. Copy the buildplane file to /tmp/

    2. Install it (using dpkg, yum, or untar, depending on the type)

    3. Run the boot.sh (or boot.ps1 if creating a W19 image). Path to this file is /var/opt/jfrog/pipelines/nodeInit/x86_64/<OS>/boot.sh

  3. Build your VM image.

  4. Use the resulting VM image id in the next step.

    This step should be performed with every new pipelines version.

Example 'provisioners' section of a terraform template file using the Ubuntu 20 buildplane

  "provisioners": [
    {
      "type": "file",
      "source": "buildPlane-x86_64-Ubuntu_20.04.deb",
      "destination": "/tmp/buildPlane-x86_64-Ubuntu_20.04.deb"
    },
    {
      "type": "shell",
      "inline": [
        "sudo dpkg -i /tmp/buildPlane-x86_64-Ubuntu_20.04.deb",
        "sudo /var/opt/jfrog/pipelines/nodeInit/x86_64/Ubuntu_20.04/boot.sh"
      ]
    }