Jenkins shared pipeline library for the Open CI platform.

Clone this repo:

Branches

  1. 5554094 chore: set up initial project by Chris Kay · 5 weeks ago main
  2. afb7604 chore: create initial commit by Chris Kay · 5 weeks ago

Trusted Firmware Pipeline Library

Jenkins Shared Library for the Trusted Firmware Open CI.


This repository contains the Jenkins Shared Library for the Trusted Firmware Open CI project, providing reusable pipeline steps, helper functions, and common CI/CD workflows that are shared across Trusted Firmware project CIs.

Quick Start

From any Jenkins pipeline script (e.g. a Jenkinsfile), import the trusted-firmware library using:

@Library('trusted-firmware@main') _

Development

This project uses the Gradle build system (through a checked-in Gradle wrapper); if you're new to Gradle, start with Running Gradle Tasks for a high-level introduction. The wrapper downloads Gradle and the locked project dependencies, including Groovy, Jenkins Pipeline Unit, JUnit, CodeNarc, and JaCoCo.

Prerequisites:

  • JDK 21 (any distribution, but Zulu is known to work).
  • Optional: Node.js 24 or later for some additional developer tooling.

Run the complete build and validation pipeline from the repository root with:

./gradlew build

Using Devbox

The repository provides a Devbox configuration which sets up a reproducible development environment with all of the mandatory and optional development dependencies.

Run the complete build and validation pipeline via the Devbox environment with:

devbox run -- ./gradlew build

Using a Dev Container

The repository provides a Dev Container configuration which also sets up a reproducible development environment, through Devbox.

Run the complete build and validation pipeline via the Dev Container CLI with:

devcontainer up
devcontainer exec -- ./gradlew build

Commit Guidelines

This project follows Conventional Commits.

Prefer to use short, imperative subjects that describe a single change, e.g.:

  • feat: add foo widget
  • fix: handle empty bar input
  • chore: update baz dependency

Keep commits focused enough that a reviewer can understand each one on its own. If a larger change has several parts, split it into a logical sequence where each commit builds on the previous one.

In the commit body, describe the behavior change in greater detail, and mention any dependency or CI-impacting changes.

Locking dependencies

When you add or update a Gradle dependency, regenerate the lockfiles and dependency verification metadata with:

./gradlew dependencies \
    --write-locks --write-verification-metadata sha256,pgp --export-keys

See Verifying Dependencies for guidance on how to work with Gradle verification metadata.

License

This project is licensed under the terms of the MIT license; see ./LICENSE.md.