Make sure docs are updated / settings_md (push) Canceled after 0s
Build firmware / test (push) Canceled after 0s
Build firmware / build-SITL-Windows (push) Canceled after 0s
Build firmware / build-SITL-Mac (push) Canceled after 0s
Build firmware / build-SITL-Linux (push) Canceled after 0s
Build firmware / build-SITL-Linux-arm64 (push) Canceled after 0s
Build firmware / upload-artifacts (push) Canceled after 0s
Build firmware / build-single-target (push) Canceled after 0s
Build firmware / build (9) (push) Canceled after 0s
Build firmware / build (8) (push) Canceled after 0s
Build firmware / build (7) (push) Canceled after 0s
Build firmware / build (6) (push) Canceled after 0s
Build firmware / build (5) (push) Canceled after 0s
Build firmware / build (4) (push) Canceled after 0s
Build firmware / build (3) (push) Canceled after 0s
Build firmware / build (2) (push) Canceled after 0s
Build firmware / build (14) (push) Canceled after 0s
Build firmware / build (13) (push) Canceled after 0s
Build firmware / build (12) (push) Canceled after 0s
Build firmware / build (11) (push) Canceled after 0s
Build firmware / build (10) (push) Canceled after 0s
Build firmware / build (1) (push) Canceled after 0s
Build firmware / build (0) (push) Canceled after 0s
Build firmware / detect (push) Canceled after 0s
Build pre-release / build (push) Canceled after 0s
Build pre-release / Release (push) Canceled after 0s
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
# GitHub Actions Workflows
|
|
|
|
This directory contains automated CI/CD workflows for the INAV project.
|
|
|
|
## Active Workflows
|
|
|
|
### Build and Test
|
|
|
|
#### `ci.yml` - Build Firmware
|
|
**Triggers:** Pull requests, pushes to maintenance branches
|
|
**Purpose:** Compiles INAV firmware for all targets to verify builds succeed
|
|
**Matrix:** 15 parallel build jobs for faster CI
|
|
|
|
#### `nightly-build.yml` - Nightly Builds
|
|
**Triggers:** Scheduled nightly
|
|
**Purpose:** Creates nightly development builds for testing
|
|
|
|
### Documentation
|
|
|
|
#### `docs.yml` - Documentation Build
|
|
**Triggers:** Pull requests affecting documentation
|
|
**Purpose:** Validates documentation builds correctly
|
|
|
|
### Code Quality
|
|
|
|
#### `pg-version-check.yml` - Parameter Group Version Check
|
|
**Triggers:** Pull requests to maintenance-9.x and maintenance-10.x
|
|
**Purpose:** Detects parameter group struct modifications and verifies version increments
|
|
**Why:** Prevents settings corruption when struct layout changes without version bump
|
|
|
|
**How it works:**
|
|
1. Scans changed .c/.h files for `PG_REGISTER` entries
|
|
2. Detects if associated struct typedefs were modified
|
|
3. Checks if the PG version parameter was incremented
|
|
4. Posts helpful comment if version not incremented
|
|
|
|
**Reference:** See `docs/development/parameter_groups/` for PG system documentation
|
|
|
|
**Script:** `.github/scripts/check-pg-versions.sh`
|
|
|
|
**When to increment PG versions:**
|
|
- ✅ Adding/removing fields from struct
|
|
- ✅ Changing field types or sizes
|
|
- ✅ Reordering fields
|
|
- ✅ Adding/removing packing attributes
|
|
- ❌ Only changing `PG_RESET_TEMPLATE` default values
|
|
- ❌ Only changing comments
|
|
|
|
### Pull Request Helpers
|
|
|
|
#### `pr-branch-suggestion.yml` - Branch Targeting Suggestion
|
|
**Triggers:** PRs targeting master branch
|
|
**Purpose:** Suggests using maintenance-9.x or maintenance-10.x instead
|
|
|
|
#### `non-code-change.yaml` - Non-Code Change Detection
|
|
**Triggers:** Pull requests
|
|
**Purpose:** Detects PRs with only documentation/formatting changes
|
|
|
|
## Configuration Files
|
|
|
|
- `../.github/stale.yml` - Stale issue/PR management
|
|
- `../.github/no-response.yml` - Auto-close issues without response
|
|
- `../.github/issue_label_bot.yaml` - Automatic issue labeling
|
|
|
|
## Adding New Workflows
|
|
|
|
When adding workflows:
|
|
|
|
1. **Use descriptive names** - Make purpose clear from filename
|
|
2. **Document in this README** - Add entry above with purpose and triggers
|
|
3. **Set appropriate permissions** - Principle of least privilege
|
|
4. **Test in fork first** - Verify before submitting to main repo
|
|
5. **Handle errors gracefully** - Don't block CI unnecessarily
|
|
|
|
### Common Patterns
|
|
|
|
**Checkout with history:**
|
|
```yaml
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
```
|
|
|
|
**Post PR comments:**
|
|
```yaml
|
|
- uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
await github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body: 'Comment text'
|
|
});
|
|
```
|
|
|
|
**Run bash scripts:**
|
|
```yaml
|
|
- run: bash .github/scripts/script-name.sh
|
|
env:
|
|
GITHUB_BASE_REF: ${{ github.base_ref }}
|
|
```
|
|
|
|
## Permissions
|
|
|
|
Workflows use GitHub's fine-grained permissions:
|
|
|
|
- `contents: read` - Read repository code
|
|
- `pull-requests: write` - Post/update PR comments
|
|
- `actions: read` - Read workflow run data
|
|
|
|
## Local Testing
|
|
|
|
Scripts in `.github/scripts/` can be run locally:
|
|
|
|
```bash
|
|
cd inav
|
|
export GITHUB_BASE_REF=maintenance-9.x
|
|
export GITHUB_HEAD_REF=feature-branch
|
|
bash .github/scripts/check-pg-versions.sh
|
|
```
|
|
|
|
## References
|
|
|
|
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
|
- [Workflow Syntax](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions)
|
|
- [GitHub Script Action](https://github.com/actions/github-script)
|