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
releasecommand (to know where to upload) and theinstallcommand (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