Software development kit for sharing workflows across CI/CD pipelines.
Such a project aims to enforce parity and reproducability between local development and CI/CD workflows in remote containers (e.g. executable versions, command line calls, environment variables...) - developped with inv[oke]
(https://github.com/pyinvoke/invoke).
Install the package from the PyPi repository:
$ pip install noos-inv
To enable shell completion, execute the following command (e.g. zsh
),
$ noosinv --print-completion-script=zsh
And copy/paste its stdout
into your shell config.
# NOOSINV completion script
_complete_noosinv() {
collection_arg=''
if [[ "${words}" =~ "(-c|--collection) [^ ]+" ]]; then
collection_arg=$MATCH
fi
reply=( $(noosinv ${=collection_arg} --complete -- ${words}) )
}
compctl -K _complete_noosinv + -f noosinv
Finally, still in your shell config, enable automatic sub shell loading:
# ENV variable sub shell loading with command "source .env"
set -a
The noos-inv
package installs a CLI binary, for managing common CI/CD tasks.
From the terminal,
$ noosinv
Usage: noosinv [--core-opts] <subcommand> [--subcommand-opts] ...
Subcommands:
docker.build Build Docker image locally.
docker.buildx Build and push x-platform Docker image to a remote registry.
docker.configure Create and configure buildx builder for multi-platform.
docker.login Login to Docker remote registry (AWS ECR or Dockerhub).
docker.push Push Docker image to a remote registry.
git.config Setup git credentials with a Github token.
helm.install Provision local Helm client (Chart Museum Plugin).
helm.lint Check compliance of Helm charts / values.
helm.login Login to Helm remote registry (AWS ECR or Chart Museum).
helm.push Push Helm chart to a remote registry (AWS ECR or Chart Museum).
helm.test Test local deployment in Minikube.
local.dotenv Create local dotenv file.
python.clean Clean project from temp files / dirs.
python.coverage Run coverage test report.
python.format Auto-format source code.
python.lint Run python linters.
python.package Build project wheel distribution.
python.release Publish wheel distribution to PyPi.
python.test Run pytest with optional grouped tests.
terraform.run Run a plan in Terraform cloud.
terraform.update Update variable in Terraform cloud.
Source your environnement variables first for a seamless experience.
(use command local.dotenv
to create it from the provided template)
$ source .env
On Mac OSX, make sure poetry has been installed and pre-configured,
$ brew install poetry
This project is shipped with a Makefile, which is ready to do basic common tasks.
$ make
help Display this auto-generated help message
update Lock and install build dependencies
clean Clean project from temp files / dirs
format Run auto-formatting linters
install Install build dependencies from lock file
lint Run python linters
test Run pytest with all tests
package Build project wheel distribution
release Publish wheel distribution to PyPi