GithubHelp home page GithubHelp logo

buildyy's Introduction

alt text

Buildyy: A Comprehensive Build Automation Tool

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.

Features

  • 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.

Installation

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

Configuration

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"

Usage

Basic Commands

  • 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 and Tagging (Coming Soon)

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.

Reporting and Logging

Buildyy automatically logs build processes and errors. Logs and reports can be found in the logs directory within your project after running build commands.

Contributing

Contributions are welcome! Please fork the repository and submit pull requests with your proposed changes.

License

Distributed under the MIT License. See LICENSE for more information.


For more information or to report issues, visit the project repository.


buildyy's People

Contributors

amrrx avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.