Skip to content
@lfreleng-actions

LF Release Engineering Actions

GitHub Actions used by LF Release Engineering

Linux Foundation Release Engineering

Documentation

GitHub Actions

The Linux Foundation Release Engineering team maintains this organisation. It provides a comprehensive collection of GitHub Actions and CI/CD tooling used across Linux Foundation hosted projects.

All actions follow Conventional Commits, use pinned dependencies, and ship with signed tags and provenance attestations.

🔧 Build & Test Actions

ActionDescription
python-build-actionBuild a Python project
python-test-actionTest a Python project and generate coverage reports
python-audit-actionAudit Python dependencies for known security vulnerabilities
python-twine-check-actionVerify Python build artefacts with Twine before publishing
python-notebook-test-actionCheck Jupyter Notebooks with pytest and nbmake
python-sbom-actionGenerate CycloneDX SBOM reports for Python projects
tox-run-actionRun tox with specified Python version and environments
gradle-build-actionSet up a specific JDK version and run a Gradle build
maven-build-actionSet up Maven and build a Java project
maven-make-build-actionSet up Maven and run make
maven-xml-settings-actionCreate Maven XML settings files for build and publish jobs
junit-test-report-actionSummarise JUnit XML test results in the workflow job summary
node-build-actionSet up Node.js and build a project with npm or yarn
node-audit-actionAudit Node.js dependencies for known security vulnerabilities
go-build-actionBuild a Go project with optional cross-compilation support
go-test-actionRun Go tests with coverage and race detection support
go-audit-actionAudit a Go project with govulncheck, gosec, and staticcheck
sbom-actionGenerate CycloneDX SBOM reports for any language ecosystem
make-actionExecute the steps described in a Makefile
rtd-build-actionBuild and publish Read the Docs documentation

📦 Publishing & Release Actions

ActionDescription
pypi-publish-actionPublish a Python project to PyPI
pypi-version-check-actionCheck PyPI for a given package and optional build/release
draft-release-promote-actionPromote a draft GitHub release to a full release
release-assets-actionUpload build artefacts and assets to a GitHub release
nexus-publish-actionPublish content to Sonatype Nexus Repository servers
nexus-docker-login-actionDocker login for all registries in Nexus3 and DockerHub
helm-chart-publish-actionPublish Helm Charts to an OCI container repository
chartmuseum-actionStart and run a ChartMuseum Helm Chart repository
central-publish-actionPublish Maven artefacts to the Maven Central Portal
maven-stage-prep-actionPrepare a Maven project for a staging release
nexus-staging-actionManage the Sonatype Nexus staging repository lifecycle
node-create-npmrc-actionCreate an NPM configuration file containing credentials
node-publish-actionStamp a version and publish a Node.js package to a registry

☁️ Cloud & Infrastructure Actions

ActionDescription
packer-build-actionRun Packer validate or build via a bastion host
tailscale-openstack-bastion-actionManage an OpenStack bastion host with Tailscale VPN
openstack-cron-actionClean up orphaned OpenStack cloud resources

🐍 Python Project Metadata Actions

ActionDescription
python-project-metadata-actionExtract Python project metadata from a repository
python-project-name-actionExtract a Python project name and derive the package name
python-project-version-actionReturn the version of a Python project
python-project-version-patch-actionReplace/update the Python project version string
python-dynamic-version-actionCheck dynamic versioning setup in pyproject.toml
python-supported-versions-actionExtract supported Python versions for build/matrix jobs
python-dependencies-update-actionUpdate the dependencies of a Python project

🏷️ Tag & Version Validation Actions

ActionDescription
tag-validate-actionUnified tag validation for SemVer/CalVer and cryptographic signatures
tag-validate-semantic-actionCheck a string/tag for Semantic Versioning conformity
tag-validate-calver-actionCheck a string/tag for Calendar Versioning conformity
tag-push-verify-actionVerify a workflow trigger was a tag push of a given type
python-project-tag-push-verify-actionCheck a pushed tag matches the declared Python project version
version-extract-actionExtract version strings from supported software project types
semantic-tag-incrementGenerate an incremented tag from a tag and increment level

🔄 Gerrit Integration Actions

ActionDescription
github2gerrit-actionCreate Gerrit changes from GitHub pull requests
gerrit-clone-actionBulk clone repositories from Gerrit with multi-threading and retry logic
checkout-gerrit-change-actionCheckout a mirrored Gerrit change
gerrit-review-actionSet review votes on a Gerrit system
gerrit-change-infoRetrieve Gerrit change request information
gerrit-actionStart Gerrit server containers with pull-replication for CI testing

🔐 Security & Credentials Actions

ActionDescription
1password-secrets-actionSecurely retrieve secrets from 1Password vaults
credential-load-actionRetrieve project/repository specific credentials from a 1Password vault
grype-scan-actionScan SBOMs, images, or directories for vulnerabilities with Grype
harden-runner-block-actionLoad an egress allow-list for step-security/harden-runner block mode
sigul-sign-dockerSign build packages, artefacts, and git tags using Sigul
sonarqube-cloud-scan-actionPerform a SonarQube Cloud scan and upload the results
sonatype-lifecycle-scan-actionRun a Sonatype Lifecycle (Nexus IQ) scan
zizmor-scan-actionAudit GitHub Actions workflows for security defects with zizmor

🔍 Repository & Code Quality Actions

ActionDescription
repository-metadata-actionGather repository metadata
repository-content-actionScan a repository for different content types
repository-tags-actionFetch tags, count them, identify the latest tag, and determine type
build-metadata-actionCapture and verify comprehensive build metadata across languages
openssf-scorecard-summary-actionGenerate OpenSSF Scorecard summary output with report URL
pinned-versions-actionVerify action/workflow calls use pinned SHA commit values
standalone-linting-actionRun linting tools that do not run under pre-commit.ci
gha-workflow-linterLint and verify GitHub workflow/action calls
change-isolation-actionVerify a change isolates edits to gitignore-style path patterns
aislop-scan-actionScan a repository with the aislop AI-slop/code-quality scanner
rtd-config-audit-actionAudit and verify Read the Docs configuration files

🛠️ Utility Actions

ActionDescription
git-configure-actionConfigure Git settings from inside a GitHub Action
git-commit-message-actionRetrieve a Git commit message and check for Change-Id and DCO
inject-issue-id-actionAdd issue tracker reference to a commit message body
path-check-actionCheck if a given path exists in the repository and report its type
file-grep-regex-actionExtract a string from a file using grep and a regular expression
file-sed-regex-actionPerform string substitutions in a file using sed
json-key-value-lookup-actionLook up a value in a JSON key/value table
url-download-actionDownload content from a URL using wget
url-validity-actionCheck a URL for a valid server response
verify-release-schema-actionVerify release file contents against an approved schema
github-list-releases-actionReturn a list of releases for a GitHub repository
http-api-tool-dockerTest HTTP/HTTPS API endpoints for service availability
go-httpbin-actionCreate a local go-httpbin service with HTTPS support
docker-save-images-actionUpload Docker images as artefacts to workflow runs
hw-bom-javascriptGenerate a hardware bill of materials

📊 Reporting Tools

ToolDescription
project-reporting-toolComprehensive multi-repository analysis tool for Linux Foundation projects
project-reporting-artifactsGenerated reports and data artefacts from the Project Reporting Tool
github-network-auditBuild harden-runner egress allowlists from StepSecurity endpoint data
github-security-report-actionSecurity and quality reporting across GitHub organisations

🔁 Workflow Repositories

These repositories provide reusable GitHub workflows and example configurations that projects can call directly:

RepositoryDescription
python-workflowsReusable build, test, and release workflows for Python projects
go-workflowsReusable build, test, and release workflows for Go projects
node-workflowsReusable build, test, audit, and release workflows for Node.js projects
java-workflowsReusable build, test, and release workflows for Java projects
docker-workflowsReusable build and publish workflows for Docker container images
generic-workflowsLanguage-agnostic reusable workflows, including tag-driven release
security-workflowsSecurity and code auditing focussed reusable workflows
docs-workflowsReusable documentation verify, build, and publish workflows
github-issues-triageReusable AI triage workflow that labels open GitHub issues

🧪 Test Fixtures & Sample Projects

These repositories provide test fixtures and sample projects that verify the actions and workflows in this organisation:

RepositoryPurpose
test-python-projectSample Python project (Typer CLI)
test-go-projectSample Go project (calculator CLI)
test-node-projectSample Node.js project (Express HTTP server)
test-maven-projectSample Maven project used for testing actions
test-docker-projectSample project that builds a Docker image
test-docker-monorepoMulti-image Docker monorepo with same-repo FROM chains
test-makefile-helm-chartTemplate Makefile for building a sample Helm Chart
test-http-api-toolWorkflow tests for the HTTP API testing tool
test-release-processEnd-to-end release workflow testing
test-tags-semanticSemVer tag signature test fixtures
test-tags-calverCalVer tag signature test fixtures
github-releases-test-fixtureFrozen release fixture for github-list-releases-action

📋 Organisation Resources

RepositoryPurpose
actions-templateTemplate repository for creating new GitHub Actions
workflows-templateTemplate repository for creating reusable workflow repositories
.githubOrganisation-wide configuration (default community health files, shared release-drafter configuration)
releng-reusable-workflowsShared/common workflows leveraging these actions (hosted in the lfit org)

🔨 Tools

ToolDescription
dependamergeBulk merge/close pull requests and Gerrit changes across an org
docs-confSphinx build configuration for Release Engineering documentation
gerrit-to-platformGerrit hooks to allow using GitHub and GitLab as CI platforms
lftools-uvRelease Engineering management tooling/utilities (Python)
markdown-table-fixerFix markdown table formatting as a CLI tool or pre-commit hook
pull-request-fixerFix pull request titles, bodies, and files across a GitHub org
python-nss-ngPython bindings for Network Security Services (NSS) and NSPR

Building GitHub Workflows

The actions published here are designed for projects using both GitHub and Gerrit as the source of code/truth. They all work in native GitHub environments, and can also be used in Gerrit environments with some adaptation to the workflows.

Workflow adaptation for Gerrit is documented in the gerrit-to-platform documentation. Some example workflows are also available.

Example Workflows

WorkflowDescription
github-vanilla-verify.yamlA simple workflow that verifies PRs with no Gerrit integration
gerrit-verify.yamlA workflow with Gerrit integration that verifies pull requests
gerrit-verify-manual-dispatch.yamlA Gerrit integrated verify workflow that can also be manually invoked
gerrit-merge.yamlA GitHub workflow that handles merged changes in Gerrit

Tagging and Releasing Actions

Prerequisites

  1. Merge all open/pending pull requests
  2. Sync your fork with upstream:
git fetch upstream
git checkout main
git merge --ff-only upstream/main
git push origin main

Creating a release

Create and push a signed, annotated tag:

git tag -s -a v1.2.3 -m "v1.2.3"
git push upstream v1.2.3

The tag push triggers one of two release workflows:

WorkflowUse case
release.yamlGeneric (non-language-specific) actions
build-test-release.yamlPython actions that publish to PyPI

Note: These workflows live in each action repository, not in this .github repo.

Generic action/repository (release.yaml)

A thin caller that delegates to the release reusable in generic-workflows. The reusable checks the pushed tag against the organisation's release-gating policy, ensures a draft release exists for the tag, and then publishes it.

Repositories carried this as tag-push.yaml until the logic moved into the shared reusable; the name now describes the outcome rather than the trigger, and sits beside the release-drafter.yaml that creates the draft it publishes.

Python action/repository (build-test-release.yaml)

Runs the full Python release pipeline:

  1. Tag format and signature validation
  2. Python build with Sigstore signing and attestations
  3. Pytest test suite
  4. SBOM generation and Grype vulnerability scan
  5. pip-audit for known security issues
  6. Publish to test.pypi.org then pypi.org
  7. Attach build artefacts to the GitHub release
  8. Promote the draft release

Note: Release workflows for other language types (Go, Maven, etc.) still need authoring.

Contributing

Contributions are welcome. Please open an issue or pull request against the relevant repository. All repositories follow the Conventional Commits specification for commit messages and PR titles. The Apache-2.0 license applies to all repositories unless otherwise stated.

Pinned Loading

  1. actions-templateactions-templatePublic template

    Template for Linux Foundation Release Engineering GitHub actions

    2

  2. workflows-templateworkflows-templatePublic template

    Template for Linux Foundation Release Engineering GitHub workflows

    1

Repositories

Showing 10 of 124 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…