Managing Pipelines Static Nodes

JFrog Pipelines Documentation

ft:sourceType
Paligo

Static Nodes are build nodes (virtual machines) that you provide to a Pipelines node pool and are persistently available through a fixed IP address.

Static nodes enable you to execute pipeline steps on your own infrastructure, by attaching your machines to a Pipelines node pool. Your static nodes can be anywhere, such as in your Amazon EC2 VPN, Google Cloud, or in your data center behind a firewall. This powerful hybrid approach gives you full control over the infrastructure and security of your build machines.

Advantages are:

  • Security: Your build machines can be inside your VPC and/or behind your firewall, enabling you to configure access, IAM, etc. Your code never leaves your firewall and no external entity can access your machines. You have complete control over your build machines, including SSH access, ability to choose your cloud provider and the size of build machines.

  • Faster build times: You can leave your build machines running all the time, eliminating the time necessary to spin up an on-demand node.

Minimum requirements

The minimum requirements for a node that can be assigned to JFrog Pipelines are:

  • 1.8GB RAM

  • 60GB SSD

  • JFrog CLI (when using custom runtime images)

  • Windows nodes must have containers enabled

  • For MacOS nodes, users must manually install NodeJS 16. Other static nodes use NodeJS 16.16.0.

  • For MacOS nodes, users must manually install JQ.

  • Supported architecture, OS and Docker versions:

    Architecture

    OS

    Docker Version

    x86_64

    CentOS 7

    20.10

    x86_64

    Ubuntu 20.04

    20.10

    ARM64

    Ubuntu 20.04

    20.10

    Note

    JFrog-published images are x86_64 and cannot run on ARM64 Ubuntu nodes. However, custom ARM64 runtime images can be specified. Host runtime is also supported.In a future release, JFrog-published images will be multi-platform and will run as ARM64.

    x86_64

    Ubuntu 18.04

    20.10

    x86_64

    RHEL 7

    20.10

    x86_64

    RHEL 8

    20.10

    x86_64

    Windows Server 2019

    20.10

    ARM64

    MacOS 12

    Host runtime only

    x86_64

    MacOS 13.5

    Host runtime only

Note

One build machine must be assigned per parallel build.

Note

Nodes must be on a different server than the one JFrog Pipelines is installed on. A node that is running on the same server as JFrog Pipelines will fail to initialize.

Add a Static Node

You may add as many build nodes to the node pool as are allowed by any node count limit set for that node pool.

To add a node to a static node pool:

addNode_04jul23.png
  1. View the node pool you want to add a node to.

    The View Node Poolpage lists any nodes currently allocated to the pool.

  2. Click Add Node.

    Fields that are not required may be left blank.

    Option

    Description

    Node Name

    An alphanumeric friendly name for the node.

    IP Address

    The IP address of the node.

    Add Swap Space

    Enable the use of swap space to increase the amount of virtual memory available to the node. Not available to Windows node pools.

    Select Node Initialization Type

    Select either Node Initialization mode for initialization.

    SSH Port

    The SSH port of your build host. This is usually port 22, but is configurable.

    For Auto initialization type only.

    SSH Access Script

    The command to run on your build host that will allow Pipelines to run initialization scripts on the node.

    For Auto initialization type only.

    SSH Access Script Complete

    Check the checkbox to confirm that you have run the SSH Access Script command on your node. (Required)

    For Auto initialization type only.

Node Initialization

You can choose to initialize the build host through Pipelines (Auto) or run the initialization scripts yourself (Manual). Initialization through Pipelines requires you to grant SSH access. If you do not want to grant SSH access for some reason, select Manual as the node initialization type.

Windows Nodes

All Windows nodes must be manually initialized.

When initializing a Windows node, the script should be run in PowerShell as an Administrator.

Auto Initialization
  • To initialize the node through Pipelines:

    • Enter the SSH port for your build host. This is usually port 22, but is configurable.

    • Copy the command shown and run it on your build host. This will allow us to run initialization scripts on your node.

    • Check the checkbox to confirm that you have run the command on your node and click Save Node.

    • You will be redirected to a page showing you the console log as your node is initialized.

    • When your node is ready, the status indicator for the node will turn green. Your node is now ready to pick up steps for your pipelines.

GCP CentOS VM

In a CentOS VM on Google Cloud Platform, you must enable SSH root login (which is disabled by default) to perform an auto-initialize. This requires you to:

  • Open the file /etc/ssh/sshd_config and update the PermitRootLogin property to yes

  • To enable the above changes, restart the sshd systemd service by executing systemctl restart sshd on the VM

Manual Initialization
  • To run the initialization scripts yourself:

    • Click Save and Generate initialization scripts to generate the script.

    • Click Download initialization scripts to download the script. Copy it to your build machine, make sure the file is executable, and run it.

    • Your node status will automatically show green at this point. However, there is no way of verifying that the node was in fact successfully initialized so you will need to make sure this was the case by triggering a job.

View a Node

To view a static node:

  1. View the node pool where the node is assigned. Then click on the name of the node you want to view.

  2. The View Node page will be displayed, showing you information about the node, its utilization, and the console output from its initialization.

    image2019-12-2_13-7-16.png

From this view, you can perform some actions on the node.

Re-initialize a Node

You might want to re-initialize a node for the following reasons:

  • An updated version is available for the build agent. This is indicated by a red exclamation icon in the Agent Version of the Node.

  • You made some changes to the node manually and it is no longer picking up jobs

  • The node isn't picking up jobs and seems 'frozen' for some reason

To re-initialize a node:

  • View the node as described above.

  • ClickRe-Initialize. This action will initialize/install everything from scratch.

If your nodes were not initialized automatically, you will need to re-download the initialization script and run it on your node manually.

Modify a Node

To modify a node's settings:

  • View the node as described above.

  • Click Edit. The fields that cannot be changed are in gray.

    image2019-12-2_13-4-7.png
  • When finished, click Save Node.

Remove a Node

To remove a node from the node pool:

  • View the node as described above.

  • Click on the Delete button. This action will delete the node from the pool and sever connection to the node.

This action only removes the node from control by Pipelines. You will still need to delete the virtual machine in the environment where it is running.