7 KiB
Contributing to Aurora ISO Builder
Thank you for your interest in contributing to Aurora ISO Builder! This guide will help you get started with contributing to the project.
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Testing
- Submitting Changes
- Style Guide
- Resources
Code of Conduct
This project follows the Universal Blue Code of Conduct. By participating, you are expected to uphold this code.
Getting Started
Prerequisites
Before you begin, ensure you have the following tools installed:
- Git: Version control
- Pre-commit: For running validation hooks
- Bash: For running scripts
Installation
# Install pre-commit
pip install pre-commit
# Clone the repository
git clone https://github.com/ublue-os/aurora-iso.git
cd aurora-iso
# Install pre-commit hooks
pre-commit install
Development Setup
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/aurora-iso.git cd aurora-iso - Add upstream remote:
git remote add upstream https://github.com/ublue-os/aurora-iso.git - Install pre-commit hooks:
pre-commit install
Making Changes
Branch Naming
Create a descriptive branch name:
feat/add-new-feature- For new featuresfix/bug-description- For bug fixesdocs/update-readme- For documentation changeschore/update-deps- For maintenance tasks
Commit Messages
We use Conventional Commits for all commit messages:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation changeschore: Maintenance tasksrefactor: Code refactoringtest: Adding or updating testsci: CI/CD changes
Examples:
feat: add support for custom kernel arguments
fix: correct Anaconda profile partitioning scheme
docs: update README with new ISO variants
chore: update pre-commit hooks to v5.0.0
Attribution Footer
If using AI assistance, include an attribution footer:
feat: improve ISO configuration script
Assisted-by: Claude 3.5 Sonnet via Zed AI
Testing
Local Validation
Always validate your changes before committing:
# Run all pre-commit hooks
pre-commit run --all-files
# Test ISO configuration script syntax
bash -n iso_files/configure_iso_anaconda.sh
bash -n iso_files/build.sh
ISO Build Testing
ISO builds are automatically triggered on pull requests. The workflow will:
- Build ISOs for all configured flavors
- Generate checksums
- Upload artifacts to GitHub
You can download and test the generated ISOs from the GitHub Actions artifacts.
Manual Testing
To manually test the ISO configuration script:
# Validate bash syntax
bash -n iso_files/configure_iso_anaconda-webui.sh
Submitting Changes
Before Submitting
-
Sync with upstream:
git fetch upstream git rebase upstream/main -
Run validation:
pre-commit run --all-files bash -n iso_files/configure_iso_anaconda.sh bash -n iso_files/build.sh -
Test your changes: Ensure the ISO builds successfully in GitHub Actions
Pull Request Process
-
Push your changes:
git push origin your-branch-name -
Create a Pull Request on GitHub with:
- Clear title using conventional commit format
- Detailed description of changes
- Link to related issues (if applicable)
- Screenshots or logs (if relevant)
-
Wait for CI checks to complete:
- Pre-commit hooks
- ISO build (if workflow files changed)
-
Address review feedback if requested
-
Squash commits if requested by maintainers
Pull Request Template
## Description
Brief description of what this PR does.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Maintenance/chore
## Testing
- [ ] Ran pre-commit hooks
- [ ] Tested ISO configuration script syntax
- [ ] ISO builds successfully in GitHub Actions
## Related Issues
Closes #123
## Additional Notes
Any additional context or notes for reviewers.
Style Guide
Shell Scripts
- Use
#!/usr/bin/bashor#!/usr/bin/env bashshebang - Use
set -eoux pipefailfor strict error handling - Quote variables:
"${VARIABLE}" - Use meaningful variable names in UPPER_CASE
- Add comments for complex logic
- Follow existing patterns in
iso_files/configure_iso_anaconda-webui.sh
Example:
#!/usr/bin/bash
set -eoux pipefail
readonly IMAGE_NAME="aurora"
readonly IMAGE_VERSION="stable"
if [[ -n "${IMAGE_NAME}" ]]; then
echo "Building ISO for ${IMAGE_NAME}"
fi
YAML Files
- Use 2 spaces for indentation
- Quote strings when necessary
- Use
---document separator - Keep workflows readable with descriptive names
Markdown
- Use descriptive headings
- Include code blocks with language specification
- Keep lines under 120 characters when possible
- Use relative links for internal documentation
Common Tasks
Adding New ISO Configuration
- Edit
iso_files/configure_iso_anaconda-webui.sh - Test syntax:
bash -n iso_files/configure_iso_anaconda-webui.sh - Create PR with changes
- Wait for ISO build to complete
- Test the generated ISO
Modifying Flatpak Lists
- Flatpaks are defined in Brewfiles in the get-aurora-dev/common repository
- Edit
*system-flatpaks.Brewfilein the common repository - Flatpaks are dynamically extracted during ISO build
- Format:
flatpak "app.id.here"
Updating Workflows
- Edit workflow file in
.github/workflows/ - Validate YAML syntax:
pre-commit run check-yaml - Create PR and monitor workflow execution
- Ensure all checks pass
Resources
Documentation
- Aurora Documentation
- Universal Blue Docs
- Titanoboa - ISO builder
Community
Tools
Getting Help
If you need help:
- Check the documentation
- Search existing issues
- Ask in Discourse forums
- Join our Discord
Recognition
Contributors are recognized in several ways:
- Listed in GitHub contributors
- Mentioned in release notes for significant contributions
- Acknowledged in project documentation
Thank you for contributing to Aurora ISO Builder! 🚀