Thank you for your interest in contributing! This document provides guidelines and instructions for contributing to this project.
Be respectful, inclusive, and professional. We're all here to build better tools together.
Found a bug? Please open a GitHub Issue with:
- Clear title describing the problem
- macOS version (e.g., macOS 14.2)
- Ansible version (
ansible --version) - Steps to reproduce the issue
- Expected behavior vs actual behavior
- Error messages and relevant logs
- Screenshots if applicable
Have an idea? Open a GitHub Issue with:
- Clear description of the feature
- Use case: Why is this useful?
- Proposed implementation (if you have ideas)
- Alternatives considered
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Test thoroughly
- Run playbooks on clean macOS machine
- Verify idempotency (run twice, same result)
- Check for syntax errors
- Commit with clear messages
git commit -m "Add feature: description of what you did" - Push to your fork
git push origin feature/your-feature-name
- Open a Pull Request
Ansible/YAML:
- Use 2 spaces for indentation (not tabs)
- Use descriptive task names
- Add comments for complex logic
- Follow Ansible best practices
- Use
whenconditions overfailed_when: false - Make tasks idempotent
Shell Scripts:
- Use
#!/bin/bashshebang - Set error handling:
set -euo pipefail - Add comments for non-obvious code
- Use meaningful variable names
- Quote variables:
"$VAR"not$VAR
Python:
- Follow PEP 8 style guide
- Use meaningful variable names
- Add docstrings to functions
- Use type hints where appropriate
Before submitting:
- Playbooks run successfully on Apple Silicon macOS
- Playbooks are idempotent (can run multiple times)
- No hardcoded values (use variables)
- No sensitive data in code
- YAML syntax is valid (
ansible-playbook --syntax-check) - Updated documentation if needed
- No breaking changes (or clearly documented)
- Update documentation if you're changing functionality
- Keep changes focused - one feature/fix per PR
- Describe your changes:
- What problem does this solve?
- How does it work?
- Any breaking changes?
- Testing performed?
- Be responsive to review feedback
- Squash commits if requested
Use clear, descriptive commit messages:
Add feature: support for custom runner groups
- Add runner_group variable to vars/main.yml
- Update runner.sh to use configurable group
- Add documentation for runner groups
Good commit messages:
- ✅
Fix: Android SDK path detection on Intel Macs - ✅
Add: support for Xcode 15.x - ✅
Update: README with better Quick Start guide - ✅
Refactor: simplify runner creation logic
Bad commit messages:
- ❌
fix bug - ❌
update - ❌
WIP - ❌
asdf
.
├── ansible/ # Ansible playbooks and configuration
│ ├── vars/ # Configuration variables
│ ├── *.yml # Playbook files
│ └── inventory.ini # Inventory template
├── runner/ # Runner management scripts
├── tools/ # Additional utilities
├── docs/ # Documentation
└── .github/ # GitHub templates and workflows
- Create playbook in
ansible/ - Follow existing playbook structure
- Add to
site.ymlwith appropriate tags - Document in README.md
- Add configuration variables to
vars/main.yml.example - Test on fresh macOS installation
- Add variable to
ansible/vars/main.yml.example - Document in
docs/CONFIGURATION.md - Update README if it's a major option
- Provide sensible defaults
- Add validation if required
- Create markdown file in appropriate location
- Link from README.md
- Use clear headings and examples
- Keep it concise and actionable
(For maintainers)
- Update CHANGELOG.md
- Bump version number (if applicable)
- Tag release:
git tag -a v1.0.0 -m "Release 1.0.0" - Push tag:
git push origin v1.0.0 - Create GitHub Release with notes
- Open a GitHub Issue for questions
- Check existing issues and documentation first
- Be clear and provide context
Current priorities for contributions:
- Support for Intel Macs (testing and fixes)
- Additional CI/CD platform integrations (GitLab, Jenkins)
- Windows subsystem support
- Docker-based runner option
- Automated testing framework
- More platform examples (Flutter, React Native)
- Video tutorials and guides
- Translations for documentation
Contributors will be recognized in:
- GitHub contributors list
- CHANGELOG.md for significant contributions
- README.md acknowledgments section (for major features)
Thank you for contributing to GitHub Runner Mobile! Every contribution, no matter how small, is valuable.