Buildyy is a robust build automation tool designed to manage and automate the building, versioning, changelog generation, and Docker image creation for multi-repo or multi-sub-project environments. This tool is particularly useful for projects consisting of several interconnected sub-projects, each with its own lifecycle and dependencies. Written in Go, Buildyy offers a high-performance, user-friendly, and scalable solution for complex build processes.
- Centralized Configuration: Manage all sub-project settings from a single YAML configuration file (
build-config.yaml
). - Independent Versioning: Use semantic versioning for each sub-project independently.
- Changelog Generation: Automatically generate changelogs based on commit messages or specified formats.
- Build Automation: Execute specific build commands for each sub-project, handling dependencies and build order.
- Docker Support: Build and tag Docker images for sub-projects specifying a Dockerfile.
- Tagging and Git Integration: Automatically tag releases in Git and push them to the repository.
- CLI Support: Interact with the build system through a comprehensive CLI.
Ensure that you have Go installed on your system. You can download and install Go from the official site.
To install Buildyy, clone the repository and build the binary using the following commands:
git clone https://github.com/Amrrx/buildyy.git
cd Buildyy
go build -o Buildyy
Create a build-config.yaml
in your project's root directory. Here is an example of how the configuration might look:
version: 1.0
subprojects:
- name: "SubProjectA"
version: "1.0.0"
path: "./SubProjectA"
build_commands:
- "go build -o outputA"
dockerfile: "Dockerfile"
dependencies: ["SubProjectB"]
- name: "SubProjectB"
version: "0.9.0"
path: "./SubProjectB"
build_commands:
- "go build -o outputB"
- Initialize Configuration: Set up a new
build-config.yaml
template../Buildyy init
- Build Projects: Build one or all sub-projects.
./Buildyy build --all ./Buildyy build --project SubProjectA
- Version Management: Increment the version of a sub-project.
./Buildyy version --project SubProjectA --bump minor
- Generate Changelog: Update the changelog for a sub-project.
./Buildyy changelog --project SubProjectA
Docker image creation and tagging are in development. Future versions will allow you to:
- Build Docker images based on project-specific Dockerfiles.
- Tag and push images to Docker registries.
Buildyy automatically logs build processes and errors. Logs and reports can be found in the logs
directory within your project after running build commands.
Contributions are welcome! Please fork the repository and submit pull requests with your proposed changes.
Distributed under the MIT License. See LICENSE
for more information.
For more information or to report issues, visit the project repository.