Raisin master files and folders
A Raisin-managed project relies on a specific directory structure and a few key configuration files.
Directory Layout
A typical project root will look like this:
my_raisin_project/
├── generated/ # Auto-generated C++ headers from .msg/.srv/.action
├── install/ # Output directory for local development builds
├── messages/ # (Optional) Global .msg/.srv/.action files
├── precompiled/ # (Optional) Pre-compiled third-party libraries
├── release/ # Contains release builds, archives, and installed packages
│ ├── build/ # Build artifacts for each target
│ └── install/ # Directory for installed packages
├── src/ # Source code for all your C++ subprojects
│ ├── repo_a/ # This repo is a collection of raisin packages
│ │ ├── raisin_package_a/ # this folder is a raisin package
│ │ ├── raisin_package_b/
│ │ ├── raisin_package_c/
│ │ └── ...
│ └── raisin_package_d/ # this repo is a single raisin package
├── templates/ # C++ header templates for code generation and some code templates for raisin packages
├── CMakeLists.txt # Top-level CMake file, auto-generated by Raisin
├── raisin.py # The main Raisin script
├── repositories.yaml # Maps package names to Git repository URLs
├── secrets.yaml # Stores GitHub API tokens (add to .gitignore!)
└── RAISIN_IGNORE # List of packages to exclude from builds
The details of the raisin package structure can be found in the raisin package chapter.
Configuration Files
- repositories.yaml
Maps package names to their source Git repository URLs. This is essential for the
release
command (to know where to upload) and theinstall
command (to know where to download from).# repositories.yaml project_a: url: [email protected]:your-org/project_a.git project_b: url: [email protected]:your-org/project_b.git
- secrets.yaml
Stores sensitive information, primarily the GitHub Personal Access Tokens (PATs) required for uploading releases. This file should never be committed to version control.
# secrets.yaml gh_tokens: your-org: "ghp_xxxxxxxxxxxxxxxxxxxxxxxx" another-org: "ghp_yyyyyyyyyyyyyyyyyyyyyyyy"
- RAISIN_IGNORE
A simple text file listing the names of packages in
src/
that should be ignored by the build system. Each package name should be on a new line.# RAISIN_IGNORE experimental_package broken_package