add-ci-platform

Adds a new OS platform to RediSearch CI build and test matrices.

6.2k|596|Updated May 5, 2016
One-click install
npx skills add https://github.com/RediSearch/RediSearch --skill add-ci-platform
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: add-ci-platform
Source: https://github.com/RediSearch/RediSearch/tree/main/.skills/add-ci-platform
Command: npx skills add https://github.com/RediSearch/RediSearch --skill add-ci-platform

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Adding a new distro version or OS target to RediSearch's CI pipeline requires coordinated edits across install scripts, workflow YAML files, and Docker validation, which is error-prone when done manually.

Core Features & Use Cases

  • Platform Detection: Derives the install script name from /etc/os-release in the base container image and reuses or creates per-platform install scripts.
  • Staged Validation: Walks through local Docker builds (with and without LTO), binary GLIBCXX compatibility checks, and progressive CI runs across both x86_64 and aarch64 architectures.
  • CI Config Updates: Guides edits to task-get-config.yml, generate-matrix.yml, flow-test.yml, and flow-build-artifacts.yml with troubleshooting for common failures like LLVM setup and package renames.
  • Use Case: When adding alpine:3.23 support, copy the alpine:3.22 configuration as a template, validate the build locally in Docker, then trigger CI workflows for both architectures.

Quick Start

Ask the assistant to add the platform alpine:3.23 to the RediSearch CI pipeline and validate it with Docker.

Frequently Asked Questions about add-ci-platform

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new OS platform to RediSearch CI?

Find the closest existing platform in task-get-config.yml as a template, create or reuse the matching .install/<platform>.sh script, then validate locally with Docker before updating the workflow files and triggering CI runs.

How is the install script name determined for a new distro?

The name comes from /etc/os-release in the base image: lowercase NAME plus VERSION_ID with spaces and slashes replaced by underscores. For example, Alpine Linux 3.23 maps to alpine_linux_3.sh, which covers all Alpine 3.x versions.

Does RediSearch CI support both x86_64 and aarch64 platforms?

Yes, each platform is configured for both architectures in task-get-config.yml. The local host architecture is validated natively in Docker, while the other architecture is validated in CI because emulated Docker is too slow.

Why does the LTO build fail with clang or GLIBCXX errors?

Cross-language LTO requires clang, lld, and rustc to share the same LLVM major version pinned in .install/LLVM_VERSION.sh. GLIBCXX mismatches mean clang is picking up wrong GCC headers, which you can diagnose by comparing binary symbols against the platform's libstdc++.

Which workflow files must be updated when adding a CI platform?

Update task-get-config.yml with the platform container and setup config, generate-matrix.yml with platform/arch tuples, and the platform lists in flow-test.yml and flow-build-artifacts.yml. Optionally update event-merge-to-queue.yml for merge-queue builds.