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
├── configuration_setting.yaml # Main configuration (tokens, user_type, packages to ignore)
├── repositories.yaml # Maps package names to Git repository URLs
├── secrets.yaml # (Deprecated) Use configuration_setting.yaml instead
└── RAISIN_IGNORE # (Deprecated) Use packages_to_ignore in configuration_setting.yaml
The details of the raisin package structure can be found in the raisin package chapter.
Configuration Files
- configuration_setting.yaml (Required)
The main configuration file for Raisin. This file should never be committed to version control as it contains sensitive tokens.
# configuration_setting.yaml user_type: devel # Required: either 'user' or 'devel' gh_tokens: your-org: "ghp_xxxxxxxxxxxxxxxxxxxxxxxx" another-org: "ghp_yyyyyyyyyyyyyyyyyyyyyyyy" packages_to_ignore: - experimental_package - broken_package
Required fields:
user_type: Must be either'user'or'devel'. This determines the build behavior and access permissions.
Optional fields:
gh_tokens: GitHub Personal Access Tokens (PATs) required for uploading releases and accessing private repositories. Keys are organization/owner names, values are the tokens.packages_to_ignore: List of package names insrc/that should be excluded from builds.
- 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 (Deprecated)
Legacy configuration file for GitHub tokens. For backward compatibility, Raisin will fall back to this file if
configuration_setting.yamldoesn’t exist. New projects should useconfiguration_setting.yamlinstead.# secrets.yaml (deprecated - use configuration_setting.yaml) gh_tokens: your-org: "ghp_xxxxxxxxxxxxxxxxxxxxxxxx" user_type: devel
- RAISIN_IGNORE (Deprecated)
Legacy file for listing packages to ignore. For backward compatibility, this is still supported, but new projects should use the
packages_to_ignorefield inconfiguration_setting.yamlinstead.# RAISIN_IGNORE (deprecated - use configuration_setting.yaml) experimental_package broken_package