There is a lack of "smart" ways to deal with automated semantic versioning across various coding languages as well Docker and OCI containers. Microsoft's stack has a couple of tools that are able to extract git tags during compile time, completely. Not all languages support this defaultly, or is very disjointed. SourceAssit aims to solve 2 major problems: automatic sematic versioning increments, and building/repository management aid for DevOps pipelines. Some built in features include: building, tagging and version managament of docker containers with a configuation file that watches changes to dockerfiles. Automatic version increments given a list of files, commiting changes and pushing back to a remote.
pip install source-assist
docker pull projectinitiative/source-assist:latest
# OR
docker pull ghcr.io/projectinitiative/source-assist:latest
NOTE: If docker functionality is not desired containers can be found with the
no-docker
flag for a smaller footprint
NOTE: If running the containerized version, you will need to add the
-v /var/run/docker.sock:/var/run/docker.sock
flag to communicate with the Docker daemon as well as mounting the repository you want to operate on.
SourceAssist is mapped to sa
once installed.
sa --help
will display all of the current subcommands present. Below is a brief overview of the included subcommands:
push
: Push and changes and commits back to the remote the repo was originally pulled from. Typically used by a CI/CD agent such as Jenkins or GH actions.
get
: Given a list of files, pull and print all the version numbers found. Possible use-case would be for build scripts or commit messages/tags that need to get the version numbers of one or multiple files.
bump
: Given a list of files, search through and bump all of the version numbers by 1. Use the --docker
flag to parse an json specific docker data files.
build
: Give a list of Docker JSON data files, build all containers and tag accordingly
NOTE: Future features include printing the template Docker data file, and pushing all images to the respective repositories with credentials.
- Robust credential management (cred stores, and password/ssh key/API token read in from STDIN)
- More flexible Docker builds/versioning
- Other container buildkits such as buildah and podman
- Checking previous commit messages for specifc tags/strings to indicate if a commit was a build
- Ability to provide custom version python parsing scripts
- Add docker install and mounting instructions for building docker containers from within the docker container
- Open to suggestions (Open an issue!)