Skip to main content

A CI/CD tool

Project description

justforfunnoreally.dev badge

Bluish

Note to readers: This documentation is still in its early stages and may be (in fact, it is) incomplete.

Bluish automates software development and deployment tasks, similar to GitHub Actions, but for local execution or within Docker environments. This allows you to define, organize, and execute complex workflows in your own environment without relying on external services.

Features

Bluish offers the following features to streamline your development workflows:

  • Make-like Ergonomics: Bluish provides a command-line experience similar to make, thanks to its blu command. This allows you to quickly execute common tasks with commands like blu build, providing a familiar and efficient workflow for developers used to make.

  • Local Automation: Execute complex tasks without the need for cloud services. Everything happens in your local environment, ensuring greater control over the process.

  • Container Integration: Bluish can integrate with Docker, making it easy to run workflows inside containers, ensuring a controlled and replicable environment.

  • Easy to Configure: Uses YAML files to define workflows, similar to GitHub Actions. This allows you to define steps in a clear and organized manner.

  • Extensible: Thanks to its modular approach, you can easily customize and extend Bluish to suit your specific needs.

  • CI/CD Integration: Bluish can be integrated with GitHub Actions, GitLab CI/CD, and other CI/CD runners. This allows you to have unified workflows that can be executed both locally and in different CI/CD environments, without needing to adapt to the specific characteristics of each platform. The same workflow you run locally can also be executed in other CI/CD systems.

Installation

To install Bluish, you need to have Python (version 3.8 or higher) and Docker (version 20.10 or higher) installed on your machine.

pip install bluish

Usage

Please, refer to the project wiki for a more in depth documentation.

Bluish uses a YAML configuration file (bluish.yml) to define workflows. Each workflow consists of multiple steps, which are executed in sequence. Below is a basic example of a configuration file:

name: My Local Workflow

steps:
  - name: Clone repository
    uses: git/checkout
    with:
      repository: https://github.com/myuser/myproject.git

  - name: Build Docker image
    run: docker build -t myproject .

  - name: Run tests
    run: docker run --rm myproject pytest

  - name: Cleanup
    run: docker rmi myproject

Each workflow is defined by a series of steps, each with a name and a command that will be executed in your local environment or in a Docker container.

To run a workflow, simply use the command:

blu <workflow>

This command will look for the bluish.yml file in the current directory or in the .bluish/ directory and execute the defined steps. If both files exist, bluish.yml in the current directory will take precedence.

Examples

Here are some common examples of how Bluish can facilitate your daily workflow:

  • Local Continuous Integration: Automate the process of building and testing your project without relying on a cloud CI platform.
  • Reproducible Environments with Docker: Run and test your code in containers to ensure it behaves the same way regardless of where it is deployed.
  • Repetitive Scripts: Automate repetitive development tasks, such as running tests, cleaning up artifacts, or generating builds in a simple way.

Comparison with GitHub Actions

Bluish offers a similar experience to GitHub Actions, but with the advantage of being able to run locally or in your own containers. Below is a summary of the key differences:

Feature GitHub Actions Bluish
Execution Environment Cloud Local / Docker Containers
Privacy Data hosted on GitHub servers Fully local, no data exposure
Flexibility Tied to GitHub's CI/CD model Agnostic, adaptable to different CI/CD systems
Internet Requirement Yes No

This makes Bluish ideal for developers who need:

  • Privacy: Run workflows without exposing data to third-party platforms.
  • Flexibility and Control: Define and modify environments and dependencies without limitations imposed by an external service.
  • Offline Development: Use automated workflows without an internet connection.
  • Unified CI/CD Workflows: Execute the same workflows both locally and in CI/CD environments like GitHub Actions, GitLab CI/CD, and others, making it easier to maintain consistency across different stages of development and deployment.

Comparison with nektos/act

While the superb nektos/act allows you to run GitHub Actions locally, it is tied to the GitHub Actions specification, which can limit flexibility. For example, nektos/act strictly adheres to the GitHub Actions syntax and conventions, which means that workflows must follow GitHub's specific rules and may require adaptation if used elsewhere.

Bluish, on the other hand, is more agnostic and allows you to define and execute workflows without being restricted to the GitHub Actions structure. This makes Bluish a more versatile choice if you are looking to create workflows that can be used across multiple CI/CD systems or if you prefer not to be bound by a specific CI/CD provider's conventions.

Contributing

Contributions are welcome! If you want to improve Bluish, feel free to open an issue or send a pull request. Check the contribution guidelines in the repository for more details.

License

This project is licensed under the MIT License. See the LICENSE file for more information.

Contact

For any questions or suggestions, feel free to open an issue in the repository or contact me directly through my GitHub profile: luismedel.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bluish-0.7.2.tar.gz (29.6 kB view details)

Uploaded Source

Built Distribution

bluish-0.7.2-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file bluish-0.7.2.tar.gz.

File metadata

  • Download URL: bluish-0.7.2.tar.gz
  • Upload date:
  • Size: 29.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for bluish-0.7.2.tar.gz
Algorithm Hash digest
SHA256 acdaf6b923038c492bb11f04abf0bbae3c9d3411aff32ae6c20664edad8bc2f9
MD5 1ec66db941d1f770d23731adb0e4384f
BLAKE2b-256 2d019cca41f58fe2efb6b06d4547618a827a17f14775b7fbf29d3c987c6e6b26

See more details on using hashes here.

File details

Details for the file bluish-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: bluish-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for bluish-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 687087b2dfc40d61973e317f29eba5bc389cf3d6c3e3feb782abf890c252dd36
MD5 32388c90c7de2e6beddce447c75cf62e
BLAKE2b-256 82c6fdeb18fcc5fc44344a69922f922fb884e09cb65d0eab23538075ce8b94b4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page