/git_info_generator

Tools to use git information and automate release and deployment process.

Primary LanguagePythonMIT LicenseMIT

git_info_generator

Tools to use git information and automate release and deployment process.

Packaging

Packaging should solve following challenges:

  • granularity, change-detection. In the repo, the component can use a subset of repo's files and the changes will be detected accordingly.
  • versioning: TAG_VERSION.BUILD-COMMIT_HASH multiple components might be bound to a specific version of other components from the same project. In the same time the components can be installed on different machines and have to be independent.
    • TAG_VERSION comes from git tags (with configurable git tag prefixes (multiple prefixes)).
    • BUILD comes from the number of changes since last tag, if BUILD > 0 then -COMMIT_HASH is added.
    • when there are no tags yet TAG_VERSION=0.0.1
    • forcing version should be possible ( for example: for SW update FAKE future version )
  • dependency:
    • system:
      • required packages (apt, since it runs in locking), + prepare scripts
      • or pre-prepared system virtual-environments (docker, VM's, WLS's).
    • other package managers (pip, npm, ...) and their virtual-environments.
    • local dependency on other git_components (BE's need FE's, in order to function)
  • packaging using popular package managers: deb (apt), rpm, zip, ...
    • Create a temporary directory with following structure:
      • src
      • cfg: systemd templates, other templates
      • scripts: install.sh, uninstall.sh, update.sh
      • info.json # all necessary info and dependencies.
    • After we can package the directory into TGZ, RPM, DEB, ZIP, etc.