stable URL: /l/contributing-quickstart
Quickstart Guide
Get your first contribution done in 5 minutes
Welcome! This guide will help you make your first contribution to Project Hummingbird container images.
For more detailed information, see the full contributor documentation.
Prerequisites
- Container tools: Podman or Docker
- Build tools:
buildah,make,git - Python: Python 3 with
PyYAMLpackage
Install on Fedora/RHEL:
sudo dnf install podman buildah make git python3-pyyaml
Quick Start Workflow
1. Fork and Clone
- Fork the repository on GitLab
- Clone your fork:
git clone --recurse-submodules https://gitlab.com/<your-username>/containers.git
cd containers
git remote add upstream https://gitlab.com/redhat/hummingbird/containers.git
2. Make Your Changes
Edit files in the images/<image-name>/ directory:
properties.yml- Image configurationContainerfile.j2- Container build templatetests-container.yml- Integration tests
3. Generate and Build
# Update dependent files
make
# Build the image
ci/build_images.sh <image-name>
4. Test Your Changes
# Run integration tests
ci/run_tests_container.sh <image-name>
# Run linters and checks
make check
5. Submit a Merge Request
- Create a branch:
git checkout -b fix-nginx-config - Commit your changes:
git commit -am "Fix nginx configuration" - Push to your fork:
git push origin fix-nginx-config - Open a merge request from your fork to the upstream repository on GitLab
Note for external contributors: If you’re not a project member, the CI pipeline won’t run automatically. Please ping one of the project maintainers in your merge request to trigger the build and test pipeline.
Common Tasks
Adding a New Image
# Create image directory
mkdir images/myapp
# Copy templates
cp images/Containerfile.j2 images/myapp/Containerfile.j2
cp images/properties.yml images/myapp/properties.yml
# Edit the template, configuration, and tests
vim images/myapp/properties.yml # Configure packages and variants
vim images/myapp/Containerfile.j2 # Customize the build template
vim images/myapp/tests-container.yml # Add integration tests
# Update dependent files
make
# Build and test
ci/build_images.sh myapp
ci/run_tests_container.sh myapp
Testing with Docker
# Automatic Docker-in-Docker setup
ci/build_images.sh --engine docker --setup <image-name>
ci/run_tests_container.sh --engine docker --setup <image-name>
Building Specific Variants
# Build only the builder variant
ci/build_images.sh nginx/builder
# Test only the default variant
ci/run_tests_container.sh nginx/default
Next Steps
- Development Workflow - Detailed development environment and workflow
- Adding Images - Step-by-step guide for adding new container images
- Testing - How to run and write tests locally
Getting Help
- Documentation: hummingbird-project.io/l/contributing-images/
- Code: gitlab.com/redhat/hummingbird