Documentation can be found at https://build.zesk.com. (Next version)
Pipeline, build, and operations tools useful for any project written exclusively in bash and works across all major
platforms, devices, and operating systems.
- System setup, service management, permissions separations
- Tools to simplify development workflows; automatic documentation for Bash scripts and functions, completions, and interactivity
- Testing and assertion library for Bash which outputs jUnit, TAP with extensible hooks.
- Extensive, platform agnostic utilities
This code toolkit depends solely on bash and a few other
binaries (jq, sed, find, awk) and a conscientious decision has been made to not depend on any other language
libraries, as of
2026 support for Bash 3 and 4 remains stable.
This toolkit assumes:
- Sources from this project are installed at
$BUILD_HOME/bin/build/ - Bash code files end with
.sh - Release notes are located in a dedicated subdirectory (can be configured per-project), using markdown
.md( required) and namedv1.0.0.mdwhich match version names (v1.0.0) (required)
You can use Zesk Build solely as a toolkit within your project, or directly into your operating system.
To use in your project:
- copy
bin/build/install-bin-build.shinto your project (changing last line as needed) or useinstallInstallBuildto install the installation script (to be clear — installsinstall-bin-build.shinto your project with the correct path setup to your project root). - Run the installer it before you need this code (will be installed at
./bin/build) source bin/build/tools.shto load the library and use any function defined
To install globally:
- Mac OS X: Requires
portorbrew, installjq - Windows: Requires Windows Subsystem for Linux, ensure
jqis installed - Copy
bin/build/install-bin-build.shto/usr/local/bin/build/(or your preferred directory) andsudo /usr/local/bin/build/install-bin-build.sh - Source
/usr/local/bin/build/tools.shin your scripts to get access to all functions
Directly from the web:
mkdir -p bin/build && cd bin/build
curl -s "https://raw.githubusercontent.com/zesk/build/refs/tags/v0.44.9/bin/build/install-bin-build.sh" | bash
./bin/build/tools.sh- The only include required for all build tools functions, also can be used as./bin/build/tools.sh identicalCheck ...
When using Zesk Build in your project, the following directories in your project structure have significance:
./- Application root (same asbuildHome)./bin/build/- Zesk Build installation location (may not be changed)./bin/hooks/- Application hook implementation (hook-namewith.sh– or other extensions)./bin/env/- Your project's environment variables defaults (NAMEwith.shon the end if you usebuildEnvironmentLoadorbuildEnvironmentGet)./docs/release/v1.0.0.md- Release notes
You can add or override these defaults:
- loaded environment files can be extended by adding a path to
BUILD_ENVIRONMENT_DIRS - hooks can be extended by adding a path to
BUILD_HOOK_DIRS - Release notes path can be modified by setting the
BUILD_RELEASE_NOTESenvironment variable
Internally Zesk Build is organized:
bin/build/env/*.sh- All external environment variables are referenced here. Projects should override default behavior with./bin/env/*.shfiles.bin/build/hooks/*.sh- Default hooks are located — if your application does not implement them - this version is used.bin/build/tools/*.sh- Build tools function implementations
Requires:
jq- Parsing JSON files, formattingbc- Floating-point mathawksedfind- POSIX utilitiescurlorwget- Remote installation
Optional:
shellcheck-bashlinting codepcregrep- documentation generation and supportunzip- forawsInstall
As a shortcut to running functions:
#!/usr/bin/env bash
"${NOT-BASH_SOURCE[0]%/*}/../bin/build/tools.sh" decorate orange "The code is working."
To load all functions:
#!/usr/bin/env bash
# shellcheck source=/dev/null
if source "${NOT-BASH_SOURCE[0]%/*}/../bin/build/tools.sh"; then
decorate orange "The code is working."
decorate big "Hooray."
else
printf -- "%s\n" "No tools.sh" 1>&2 && false
fi
For more complex (and more robust error handling) see __install and __tools code in bin/build/identical.
Scripts support loading one or more environment files and running commands directly in a test container:
bin/build/tools.sh bitbucketContainer --env-file .STAGING.env bin/test.sh
All copyrights held by Market Acumen, Inc., a provider of infrastructure and cloud expertise.
License is Apache License. Source can be found online at GitHub.
Reviewed: 2026-06-01
(This is a copy – original at documentation/template/docs/README.md)