Contributing to Container & Helm Version Updater
September 4, 2026 · View on GitHub
Thank you for your interest in contributing! This document provides guidelines and instructions for contributing.
Development Setup
Prerequisites
- Python 3.11 or higher
- pip
Local Setup
-
Clone the repository:
git clone https://github.com/drumandbytes/argocd-gitops-updater-action.git cd argocd-gitops-updater-action -
Install dependencies:
pip install aiohttp aiofiles pyyaml packaging pytest pytest-asyncio ruff -
Run tests:
pytest tests/ -v -
Run linting:
ruff check .github/scripts/ ruff format --check .github/scripts/
Project Structure
.
├── action.yml # GitHub Action definition
├── .github/
│ ├── scripts/
│ │ ├── update-versions.py # Core version update logic
│ │ └── discover-resources.py # Auto-discovery logic
│ └── workflows/
│ └── ci.yml # CI pipeline
├── tests/ # Unit tests
├── examples/ # Example configurations
└── README.md # User documentation
Making Changes
Code Style
- Follow PEP 8 guidelines
- Use type hints for function parameters and return values
- Keep functions focused and well-documented
- Use async/await for I/O operations
Testing
- Add tests for new functionality
- Ensure all existing tests pass
- Test edge cases and error conditions
Run tests with:
pytest tests/ -v
Linting
We use Ruff for linting and formatting:
# Check for issues
ruff check .github/scripts/
# Auto-fix issues
ruff check --fix .github/scripts/
# Check formatting
ruff format --check .github/scripts/
# Auto-format
ruff format .github/scripts/
Submitting Changes
Pull Request Process
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests and linting
- Commit with a clear message:
git commit -m "feat: add new feature" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request
Commits and releases
Releases are automated with release-please.
It reads the commit history on main, keeps a rolling release PR with the next
version + changelog, and cuts the release (tag, GitHub Release, CHANGELOG.md) when
that PR is merged. The floating v2 / v2.N tags are moved automatically.
For this to work, squash-merge every PR with a Conventional Commits title:
| Prefix | Effect | Example |
|---|---|---|
feat: | minor bump | feat: add support for Azure Container Registry |
fix: / perf: | patch bump | fix: handle timeout errors in the Docker Hub API |
feat!: or BREAKING CHANGE: in body | major bump | feat!: require ArgoCD 2.x |
chore: docs: ci: test: refactor: build: | no release | docs: update the README |
Dependabot is configured to prefix its PRs with fix(deps):, so dependency bumps
become patch releases on their own.
The old release:major / release:minor / release:patch labels are gone.
Don't hand-edit CHANGELOG.md, version.txt, or tags — release-please owns them.
Pull Request Guidelines
- Keep PRs focused on a single change
- Update documentation if needed
- Add tests for new functionality
- Ensure CI passes before requesting review
Reporting Issues
When reporting bugs, please include:
- Description: Clear description of the issue
- Steps to Reproduce: How to reproduce the problem
- Expected Behavior: What you expected to happen
- Actual Behavior: What actually happened
- Environment: Python version, OS, relevant configuration
- Logs: Relevant error messages or logs
Feature Requests
For feature requests:
- Check existing issues to avoid duplicates
- Describe the use case
- Explain the expected behavior
- Consider if it aligns with project goals
Questions?
If you have questions, feel free to open an issue with the "question" label.
License
By contributing, you agree that your contributions will be licensed under the MIT License.