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
x86_64
MacOS 13.5
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:
View the node pool you want to add a node to.
The View Node Poolpage lists any nodes currently allocated to the pool.
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 thePermitRootLogin
property toyes
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:
View the node pool where the node is assigned. Then click on the name of the node you want to view.
The View Node page will be displayed, showing you information about the node, its utilization, and the console output from its initialization.
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.
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.