Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk7 min

Jenkins Guide for Linux Foundation Release Engineering: Jobs, JJB, Sandbox, Nodes, and Logs

Learn the Linux Foundation workflow for adding Jenkins jobs: define YAML in ci-management or releng/builder, reuse Global-JJB templates, select a valid build-node label, test safely in Sandbox, and manage logs and custom builder images.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a new Linux Foundation project, define its Jenkins jobs as YAML in ci-management or releng/builder, select reusable Global-JJB templates, test the generated jobs in Jenkins Sandbox, and submit the change to Gerrit. The same workflow covers build-node selection, managed files, log retrieval, and custom builder images without editing production jobs directly.

How the LF Jenkins setup is organized

Linux Foundation Release Engineering consolidates jobs that once ran on project-specific virtual machines onto a shared Jenkins service. Each Git repository receives a Jenkins view, while Jenkins Job Builder (JJB) turns YAML definitions into Jenkins job configuration.

As an Amazon Associate I earn from qualifying purchases.

Projects normally contribute configuration in one of two repositories:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • ci-management
  • releng/builder

The repository and directory used for a particular LF project depend on that project’s existing release-engineering setup. Follow the pattern already used by neighboring projects rather than creating a new layout.

Adding Jenkins jobs for a new project

  1. Create the project directory. Add a jjb/<new-project> directory in the selected repository.
  2. Add the project YAML file. Create <project>.yaml in that directory. The file declares the project and references the jobs or job groups supplied by Global-JJB.
  3. Select templates for the project’s technology. Use the recommended Global-JJB groups where they match the repository, such as CI, Python, Node, or ReadTheDocs groups.
  4. Set a build node. Choose a build-node value that exactly matches an available node-template label.
  5. Install and validate JJB locally. Use a Python virtual environment, install the repository’s requirements (or install JJB with pip), and verify the executable with jenkins-jobs --version.
  6. Render and upload in Sandbox. Run the repository’s documented jenkins-jobs workflow so the YAML is translated to XML and uploaded to Jenkins Sandbox.
  7. Exercise the jobs. Check configuration, triggers, node assignment, and the expected build behavior in Sandbox before proposing the change.
  8. Submit the change to Gerrit. Have the YAML and any related configuration reviewed through the normal ci-management or releng Gerrit process.

Sandbox testing is the safe default: do not modify production jobs directly. The exact command-line options for rendering and uploading can vary with the repository’s wrapper and credentials, so use the checked-in requirements and instructions for that repository.

Minimal Maven job set

For a Maven project, the guide identifies these five jobs as the documented minimum:

Job Purpose in the Maven set
gerrit-maven-clm Runs the project’s component/license-management check.
gerrit-maven-merge Builds the merge path after a Gerrit change is accepted.
gerrit-maven-release Provides the Maven release job.
gerrit-maven-verify Verifies a proposed Gerrit change.
gerrit-maven-sonar Runs Sonar analysis.

gerrit-maven-verify-dependencies is optional. Add it when dependency verification is relevant to the project rather than treating it as part of the minimum set.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choosing a build node

LF Jenkins creates build agents on demand and removes them after the job terminates. Node templates are administered through Jenkins’ OpenStack Cloud plugin. A job’s build-node must match a label exposed by one of those templates.

When an existing label is enough

  • Use an existing label when its operating system, tools, language runtime, and resource size satisfy the job.
  • Prefer the shared template used by comparable projects so the configuration remains reviewable and easier to maintain.

When to request a new configuration

If the project needs a runtime or toolchain not provided by an available template, submit the change to ci-management or releng. Do not silently invent a label in the project YAML: a label without a matching cloud template leaves the job unable to acquire an agent.

Operational trade-off

Capacity choice What it means Trade-off
On-demand agents Agents appear only while a job runs and are deleted afterward. Reduces idle infrastructure, but a job depends on a correctly configured template and may wait for provisioning.
Project-specific image/template A dedicated environment supplies the project’s exact tools. Improves reproducibility for unusual builds, but adds image maintenance and review overhead.

Testing in Jenkins Sandbox versus production

Sandbox resembles production but is intentionally isolated. It does not publish artifacts to Nexus or Nexus3 and does not vote in Gerrit. Sandbox may contain dummy configuration files and credentials, and it has fewer virtual-machine nodes than production.

Capability Sandbox Production
Configuration and trigger checks Use Sandbox first. Runs the live configuration.
Merge, push, CLM, Docker, and Sonar jobs Can be tested to a useful extent. Required for live integrations.
Artifact publication No Nexus/Nexus3 publication. Real artifact repositories are used.
Gerrit voting No Gerrit votes. Real Gerrit communication and voting.
Nexus IQ, Sonar, Gerrit, or Nexus communication Not a fidelity check for the live services. Use production to confirm these communications.
Available VM nodes Fewer nodes than production. Full production capacity and labels.

A safe test sequence

  1. Render the YAML with the repository’s JJB setup and inspect the generated job configuration.
  2. Upload the result to Sandbox and confirm that the job resolves the intended build-node label.
  3. Run representative merge, verify, CLM, Docker, or Sonar jobs where Sandbox supports them.
  4. Check console output for configuration and toolchain errors, remembering that dummy credentials and the absence of artifact publication are expected.
  5. Use the production environment only when the test requires real Nexus-IQ, Sonar, Gerrit, or Nexus communication.

Jenkins Job Builder and Global-JJB

What JJB does

Jenkins Job Builder translates declarative YAML into Jenkins XML configuration and manages the resulting jobs. A Python virtual environment keeps the JJB installation separate from system packages. Projects can install from the repository’s requirements.txt or with pip; jenkins-jobs --version confirms that the executable is available.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What Global-JJB provides

Global-JJB is the LF CI library of reusable Jenkins Job Builder templates. It exists so projects can select standardized jobs instead of defining the same templates locally. Its documented groups cover common CI patterns as well as technologies such as Maven, Python, Node, and ReadTheDocs.

Global-JJB compared with project-local templates

Approach Best fit Main implication
Global-JJB template or group A project follows a supported, common build pattern. Less duplicated YAML and a shared maintenance path.
Project-local template The build has requirements that the shared library does not express. More control, but the project owns additional configuration and future maintenance.

Global-JJB versus the LF Pipelines Library

The LF Pipelines Library is a library of Jenkins pipeline functions intended to replicate Global-JJB functionality while standardizing pipeline creation. It is a different implementation style, not a second name for the JJB templates.

Decision axis YAML with Global-JJB Pipeline functions with the LF Pipelines Library
Definition style Jenkins Job Builder YAML rendered to XML. Jenkins Pipeline code calling shared functions.
Reuse model Shared JJB job templates and groups. Shared pipeline functions.
Reviewability Declarative job settings are easy to compare in YAML, with generated XML as the Jenkins output. Control flow is visible in pipeline code, but reviewers must understand pipeline behavior.
Typical migration choice Good for an established JJB project or a job that maps directly to an existing template. Good when the project is standardizing around pipelines and needs function-level orchestration.
Documented functions Not applicable. lfCommon, lfDefaults, lfInfraShipLogs, lfJava, lfNode, and lfParallelCostCapture.

Choose the approach already used by the project unless there is a clear migration requirement. Mixing styles without an ownership plan increases the number of places where build behavior can diverge.

Managed configuration files

Managed Config Files are kept in the ci-management/jenkins-config/managed-config-files tree. Store shared configuration there rather than embedding a copy in every job. Treat changes to these files as centrally managed configuration: review them with the same care as job definitions because multiple jobs may consume one file.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Finding logs and understanding retention

Use the LF log server rather than relying on Jenkins console pages for long-term access. The guide says logs are compressed and stored in a Nexus repository.

Environment or policy Documented behavior
Log archive Log-server archives are stored for six months.
Production cleanup Logs older than 180 days are deleted every day at 08:00 UTC.
Sandbox cleanup Sandbox logs and jobs are deleted every Saturday at 08:00 UTC.

The six-month archive statement and the 180-day production cleanup threshold are operational policy values. Retrieve important diagnostics before the relevant cleanup window, especially for a Sandbox job whose records may disappear on the next Saturday cleanup.

Building a custom Jenkins builder image

Use the ci-management/packer directory when an existing build image cannot provide the required toolchain. A new builder image needs both of these files:

  • packer/templates/BUILDER.json
  • packer/provision/BUILDER.yaml

The documented recommendation is to provision the image with Ansible. For Sandbox testing and deployment, use the Global-JJB gerrit-packer-merge job. Keep the image definition, provisioning steps, and the consuming build-node label aligned; an image that is built successfully but never exposed through a matching node template cannot serve the project job.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Practical troubleshooting checklist

The job cannot acquire an agent

  • Compare the YAML build-node value with the exact label on an OpenStack node template.
  • Confirm that the required template exists in the environment where the job is running; Sandbox has fewer nodes than production.
  • If the label or image is new, submit the corresponding infrastructure change to ci-management or releng.

The generated job differs from the YAML

  • Verify the JJB version with jenkins-jobs --version.
  • Check that the intended Global-JJB group or template is included and that the project directory is under jjb/<new-project>.
  • Render and inspect the generated XML in Sandbox before requesting production review.

A Sandbox test appears not to publish or vote

This is expected isolation behavior: Sandbox does not publish to Nexus/Nexus3 or vote in Gerrit. Validate job logic there, then reserve live integration checks for production.

Historical logs are missing

Check the log server and its compressed Nexus archives first. Records may have passed the six-month archive policy, the 180-day production cleanup threshold, or the weekly Sandbox cleanup.

Choosing an implementation path

Situation Recommended path
New project with a conventional Maven, Python, Node, or documentation build Use the matching Global-JJB group, set an existing node label, test in Sandbox, and submit the YAML through Gerrit.
Existing project already managed with JJB Extend the current YAML and shared templates before introducing pipeline code.
Project adopting standardized Jenkins pipelines Evaluate the LF Pipelines Library functions and define ownership for the pipeline code.
Build requires tools absent from all node templates Add a reviewed Packer/Ansible builder image, expose it through an OpenStack template label, and test with gerrit-packer-merge in Sandbox.
Test requires real repository or Gerrit side effects Use Sandbox for configuration validation, then coordinate a controlled production test because Sandbox intentionally omits those communications.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.