Thank you for your interest in contributing! This guide covers the fork-and-pull workflow for submitting changes.
- Docker (v20.10+) or Podman (v4.0+)
- Git
- A GitHub account
- GPG or SSH key configured for commit signing
All contributions use the fork-and-pull model. Never commit directly to the main repository.
Click Fork on the repository page to create your copy.
git clone https://github.com/YOUR_USERNAME/itential-dev-stack.git
cd itential-dev-stackgit remote add upstream https://github.com/itential/itential-dev-stack.git
git fetch upstreamAlways branch from an up-to-date main:
git checkout main
git pull upstream main
git checkout -b feature/your-feature-nameBranch naming conventions:
| Prefix | Use Case |
|---|---|
feature/ |
New features or enhancements |
fix/ |
Bug fixes |
docs/ |
Documentation changes |
chore/ |
Maintenance, dependencies, CI |
Edit files and test your changes:
# Fresh environment test
make clean && make setup
# Or test with a specific profile
docker compose --profile platform up -dNote: Test with relevant Docker Compose profiles (
deps,platform,gateway4,gateway5,full) to ensure your changes work correctly.
Use conventional commits:
git add .
git commit -S -m "feat: add support for this great thing"Commit format: <type>: <subject>
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no code change |
refactor |
Code restructuring |
test |
Adding or updating tests |
chore |
Maintenance tasks |
perf |
Performance improvements |
Rules:
- Subject line: 50 characters or less, imperative mood, no period
- Breaking changes: add
!after type (e.g.,feat!: remove deprecated config)
Signed commits required: All commits must be cryptographically signed. Configure Git to sign by default:
git config --global commit.gpgsign trueSee GitHub's commit signing guide for GPG/SSH key setup.
git push origin feature/your-feature-name- Go to your fork on GitHub
- Click Compare & pull request
- Target the
mainbranch of the upstream repository - Fill out the PR template
- Add a label matching your change type (see table below)
- Submit the pull request
PR labels:
| Commit Type | Label |
|---|---|
feat |
enhancement |
fix |
bug |
docs |
documentation |
refactor |
refactor |
chore |
chore |
Respond to comments and push additional commits:
git add .
git commit -m "fix: address review feedback"
git push origin feature/your-feature-nameClean up your local branches:
git checkout main
git pull upstream main
git branch -d feature/your-feature-name- Use
set -efor fail-fast behavior - Include color-coded logging with
log_info,log_warn,log_errorfunctions - Support
--help,--force, and--quietflags where appropriate - Make scripts idempotent (safe to run multiple times)
- Use
> **Note**:for important callouts - Use tables for reference material
- Include
bashlanguage specifier for code blocks
- Add new variables to
.env.examplewith comments - Use sensible defaults
- Document required vs optional variables
Before submitting:
- Code follows the project's style guidelines
- Self-review of code has been performed
- Code has been commented where necessary
- Tested with
make setupor relevant profile - Commits follow conventional format (
type: subject) - No secrets or credentials committed
- Documentation has been updated accordingly
- PR has been labeled appropriately