34 lines
2.1 KiB
Markdown
34 lines
2.1 KiB
Markdown
# Contribution
|
|
|
|
Hello, thanks for taking time and helping out with the addon!
|
|
|
|
Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Please sign the CLA before sending the PR: https://www.jetbrains.com/agreements/cla/.
|
|
|
|
#### Local setup
|
|
|
|
Open the `godot-editor-plugin/CMakeLists.txt` in Rider 2026.1+, select `rider-gdextension` target in the run configuration selector.
|
|
There are some more fixes coming in 2026.2, which will allow working on gdscript and cpp files within the same workspace.
|
|
|
|
#### Signing the binaries
|
|
|
|
Plugin binaries need to be signed to comply with modern operating system security requirements. Unsigned dynamic libraries may fail to load or trigger security warnings:
|
|
|
|
- **macOS**: Requires code signing (and often notarization) for `.dylib` files. Unsigned libraries may simply fail to load.
|
|
- **Windows**: SmartScreen may block unsigned binaries, and corporate environments often enforce signed code only.
|
|
- **Linux**: Generally allows unsigned `.so` files, but some sandboxed environments (Flatpak, Snap) impose restrictions.
|
|
|
|
**How signing is implemented:**
|
|
|
|
1. **TeamCity Configuration**: [ijplatform_master_Net_Deploy_Plugins_Public_Godot](https://buildserver.labs.intellij.net/buildConfiguration/ijplatform_master_Net_Deploy_Plugins_Public_Godot) (internal JetBrains link)
|
|
- Note: The automatic trigger on new tags is currently not working, so manual triggering is required.
|
|
|
|
2. **Release Process**:
|
|
- First, use your GitHub Action to prepare a **pre-release** with a tag
|
|
- Manually trigger the TeamCity configuration on the necessary branch/tag
|
|
- The configuration will download assets, sign them, and upload them back (removing the pre-release flag)
|
|
- The pre-release flag is required at the start; otherwise, the signing configuration will skip the release (protection against double signing)
|
|
|
|
3. **Signing existing releases**:
|
|
- You can run signing on already existing old releases/tags
|
|
- Mark them as pre-release first, then run the configuration on the necessary tag
|