Giter VIP home page Giter VIP logo

makester's Introduction

Makester

Overview

Makester is a GNU make based integrated developer platform that brings common tooling and techniques to your coding projects. Note that there is a heavy bias towards Linux, containerisation and Kubernetes to promote cloud-native capability. No, not cloud-native that locks you into cloud provider's services ...

Refer to Makester's documentation for detailed instructions.

Prerequisites

If using Kubernetes Minikube:

If using Terraform, we recommend installing tfenv.

Optionally, install kompose if you would like to convert existing Docker Compose files into Kubernetes manifests.

Extras for macOS

Dependencies

To develop Makester on macOS you will need to install these additional packages with brew:

brew install wget findutils coreutils

Upgrading GNU Make

Follow these notes to get GNU make.

Getting Started

Get the code and change into the top level git project directory:

git clone https://github.com/loum/makester.git && cd makester

Note

Run all commands from the top-level directory of the git repository.

For first-time setup, prime the Makester project:

git submodule update --init

Prepare the Makester environment:

make init

Running the Test Harness

We use bats-core. To run the tests:

make tests

top

makester's People

Contributors

loum avatar dependabot[bot] avatar

Stargazers

Hiromasa Yano avatar

Watchers

James Cloos avatar  avatar  avatar

makester's Issues

ArgoCD support

Is your feature request related to a problem? Please describe.

Add ArgoCD support declarative GitOps.

Describe the solution you would like.

GitOps capability to compliment MicroK8s.

Describe alternatives you have considered.

This is new capability in Makester.

Additional context

Add any other context or screenshots about the feature request here.

Support for a local Docker registry server

Is your feature request related to a problem? Please describe.

Multi-platform Docker builds forces you to push images directly into Docker Hub. This is annoying if you want to test your image before publishing to Docker Hub.

Describe the solution you would like.

Users that would like multi-platform docker image builds should be able to store newly built images locally in the first instance.

Describe alternatives you have considered.

  • Pushing images to Docker Hub, then downloading for testing. Not feasible when creating new capability and the images are large.
  • Use Docker Desktop's containerd for pulling and storing images. Currently a beta feature.

Additional context

Add any other context or screenshots about the feature request here.

Standalone Makester

Is your feature request related to a problem? Please describe.

Add support for a standalone Makester deployment in addition to submodule integration. See ohmyzsh as an example.

Describe the solution you would like.

Allow Makester to be installed as a standalone entity that can be used by all Git projects.

Describe alternatives you have considered.

Currently, Makester can only be integrated into existing projects as a Git submodule.

LocalStack support

Is your feature request related to a problem? Please describe.

Emulate AWS services for CI/CD with LocalStack.

Describe the solution you would like.

Embellish the Makester Terraform subsytem with local cloud emulation so avoid an expensive AWS subscription.

Describe alternatives you have considered.

Using an AWS subscription for development purposes. Sadly, AWS does not distinguish between production and development. The dollar value is identical between environments.

Additional context

The fact that AWS charges you to "develop" on their platform is the greatest grift in IT.

Python3 exe picked up from virtual environment failures when 3env directory deleted

Describe the bug.

Makester version 0.1.2

Every other python virtual environment build fails with missing python3 binary:

### Deleting existing environment <...>/3env ...
### Creating Wheel directory "~/wheelhouse"...
### Creating virtual environment <...>/keez/3env ...
### Preparing pip and setuptools ...
### Installing ...
gmake: <...>/3env/bin/python3: No such file or directory
gmake: *** [makester/makefiles/python-venv.mk:54: init-env] Error 127

Steps to reproduce the behavior.

  • Add the makester/makefiles/python-venv.mk to project Makefile
  • Execute the pip-editable target
  • Check the 3env/bin/ directory exists
  • Repeat run of the pip-editable target

Python typing support

Is your feature request related to a problem? Please describe.

Python code typing is a candidate for extending Makester capability.

Describe the solution you would like.

Integrate mypy into Makester.

Describe alternatives you have considered.

Install mypy for every project as a separate entity. Just let Makester handle it.

Additional context

This is generic a feature that is missing from Makester.

MicroK8s support

Is your feature request related to a problem? Please describe.

Add MicroK8s support for for testing, experimentation and shaking out production deployments.

Describe the solution you would like.

Add MicroK8s as an alternative option to minikube.

Describe alternatives you have considered.

Makester minikube. But MicroK8s aguably offers more features.

Additional context

Add any other context or screenshots about the feature request here.

Markdown formatter

Is your feature request related to a problem? Please describe.

Makester is missing a Markdown formatter.

Describe the solution you would like.

Consider adding support for a Markdown formatter.

Describe alternatives you have considered.

Adding tools such as mdformat to all projects.

Additional context

Common tooling should be centralised.

MAKESTER__DOCKER an optional setting

Is your feature request related to a problem? Please describe.

When makester is used in environments where Docker is not available, I need to override MAKESTER__DOCKER with a dummy value to proceed.

Describe the solution you would like.

If MAKESTER__DOCKER is not available then continue without a hard fail. Limit failure to command that use docker directly.

Describe alternatives you have considered.

Place a MAKESTER__DOCKER=docker before the make calls. This looks clunky.

Additional context

Add any other context or screenshots about the feature request here.

Support for Docker multi-platform builds

Is your feature request related to a problem? Please describe.

I'm building my images on linux/arm64 but also want these to support linux/amd64.

Describe the solution you would like.

See Leverage multi-CPU architecture support.

Describe alternatives you have considered.

Building images manually, but that's a pain.

Additional context

Add any other context or screenshots about the feature request here.

GitVersion release branch support for main-line releases

Is your feature request related to a problem? Please describe.

Add support for release builds.

Describe the solution you would like.

When used with the gitversion-release target, release* branches should simulate the main-line versioning conditions. The release branch can then be merged into the main-line branch through the normal PR process.

Describe alternatives you have considered.

Manually patching the VERSION file from a pre-release by removing the rc token.

Additional context

Add any other context or screenshots about the feature request here.

Local registry server makes MAKESTER__SERVICE_NAME unpredictable

Is your feature request related to a problem? Please describe.

The local registry server will alter MAKESTER__SERVICE_NAME based on whether the server is running or not. This make MAKESTER__SERVICE_NAME difficult to track and implement into recipes.

Describe the solution you would like.

A static alternate to MAKESTER__SERVICE_NAME.

Describe alternatives you have considered.

A clear and concise description of any alternative solutions or features you have considered.

Additional context

Add any other context or screenshots about the feature request here.

MicroK8s dashboard creds are not generated

Describe the bug.

When launching the MicroK8s dashboard, the credentials are not generated.

Steps to reproduce the behavior.

  1. Run target make microk8s-up
  2. Error message is displayed:
### Login to the MicroK8s Kubernetes dashboard with following token:
Error from server (NotFound): secrets "microk8s-dashboard-token" not found

Expected behavior.

A token is displayed that I can use to login to the k8s dashboard.

Upgrade tool clobbers project Makefile

Describe the bug.

When running the Makester primer script in upgrade mode, the project Makefile is clobbered.

Steps to reproduce the behavior.

  1. Run the upgrade tool:
makester/resources/scripts/primer.sh -u
  1. Observe the project Makefile has been clobbered.

Expected behavior.

Upgrade and Makefile initialisation should be mutually exclusive steps.

Documentation for Docker subsystem cannot find sample Makefile

Describe the bug.

When following the Docker Makefile examples, the sample Makefile cannot be found and generates an error.

Steps to reproduce the behavior.

  1. Run the sample Makefile help
make -f sample/Makefile help
  1. Observe error:
make: sample/Makefile: No such file or directory
make: *** No rule to make target 'sample/Makefile'.  Stop.

Expected behavior.

The sample Makefile help should display.

Additional context.

It appears that the sample Makefile is now located under resources/sample/Makefile but the documentation has not been updated to reflect the change.

Latest GitVersion Breaking GitVersion.yml Configuration

Describe the bug.

Latest Docker gittools/gitversion:latest breaks Makester makester/sample/GitVersion.yml.

Steps to reproduce the behavior.

  1. Run the gitversion-release target

Expected behavior.

GitVersion does not error and a valid versioning snapshot is output to .makester/versioning.

Screenshots.

Error appearing in .makester/versioning:

gmake: *** [Makefile:18: init-dev] Error 2
INFO [12/23/22 22:16:00:39] Applicable build agent found: 'LocalBuild'.
INFO [12/23/22 22:16:00:43] Working directory: /hirer-analytics-transforms
INFO [12/23/22 22:16:00:45] Project root is: /hirer-analytics-transforms/
INFO [12/23/22 22:16:00:45] DotGit directory is: /hirer-analytics-transforms/.git
INFO [12/23/22 22:16:00:45] Branch from build environment:
INFO [12/23/22 22:16:00:49] Begin: Loading version variables from disk cache
  INFO [12/23/22 22:16:00:49] Cache file /hirer-analytics-transforms/.git/gitversion_cache/FDC0DDB39045AAEC5552594514166ACA5245E198.yml not found.
  INFO [12/23/22 22:16:00:49] End: Loading version variables from disk cache (Took: 1.22ms)
  INFO [12/23/22 22:16:00:49] Using latest commit on specified branch
  ERROR [12/23/22 22:16:00:54] An unexpected error occurred:
(Line: 8, Col: 1, Idx: 310) - (Line: 8, Col: 33, Idx: 342): Property 'continuous-delivery-fallback-tag' not found on type 'GitVersion.Configuration.GitVersionConfiguration'.
  INFO [12/23/22 22:16:00:54] Attempting to show the current git graph (please include in issue):
  INFO [12/23/22 22:16:00:54] Showing max of 100 commits
  INFO [12/23/22 22:16:00:59] * ebc2710 9 days ago  (HEAD -> develop, origin/main, origin/develop, main)
* d2f1475 9 days ago
*   ec97aeb 9 days ago
|\
| * ae518d8 9 days ago
| * 60e0512 9 days ago
* | 440dc3d 9 days ago
|/
* 13e3f4c 9 days ago

Additional context.

Add any other context about the problem here.

Python code formatting

Is your feature request related to a problem? Please describe.

Python code formatting is a candidate for extending Makester capability.

Describe the solution you would like.

Integrate black into Makester.

Describe alternatives you have considered.

Install black for every project as a separate entity. Just let Makester handle it.

Additional context

This is generic a feature that is missing from Makester.

Terraform support

Is your feature request related to a problem? Please describe.

Add Terraform support for IaC.

Describe the solution you would like.

IaC capability.

Describe alternatives you have considered.

This is new capability in Makester.

Additional context

Add any other context or screenshots about the feature request here.

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.