NormalizeCI¶
Introduction¶
NormalizeCI is a go library and specification to normalize the provided environment information from ci platforms, to provide a foundation for a platform-agnostic CI-CD workflows and actions.
NormalizeCI also provides a binary release to set the normlaized envirnoment locally.
Merits
- normalization - check the env vars and the local repository to provide a common set of env vars for scripts that work with any ci platform.
 - compatibility - convert from the common 
NCI_spec into a specific format (ie. GitHub Actions) as a compatiblity layer to run GitHub Actions on other platforms - testability - the local git module can provide all required information to test / use your ci workflows locally
 
How does it work?¶
- NormalizeCI defines a global standard for CI/CD variables (COMMIT_HASH, ...), as such only 
NCI_variables should be used in actions to ensure cross-platform support - Even if your platform is not yet officialy supported, the default local module can extract information from your local repository (also when running / testing your ci process locally)
 
Usage¶
Supported Platforms¶
| NAME | SLUG | Supported | Normalize | Denormalize | Features | 
|---|---|---|---|---|---|
| Generic - Git | local | 
yes | |||
| Azure DevOps Pipeline | azure-devops | 
yes | no | ||
| GitLab CI/CD | gitlab-ci | 
yes | no | inputs | |
| GitHub Actions | github-actions | 
yes | no | inputs | 
Some Normalizer's can also query the API of the build system for additional information, the following features might be available:
inputs- information about custom user variables set for a specific ci run
Not Supported?
- NormalizeCI will fallback to the 
local repositoryto extract most information from the local repository on unsupported ci platforms! 
Planned Platforms¶
| NAME | SLUG | 
|---|---|
| AppVeyor | appveyor | 
| AWS CodeBuild | aws-codebuild | 
| Bamboo | bamboo | 
| Bitbucket | bitbucket | 
| Bitrise | bitrise | 
| Buddy | buddy | 
| Buildkite | buildkite | 
| CircleCI | circleci | 
| Cirrus CI | cirrusci | 
| Codefresh | codefresh | 
| Codeship | codeship | 
| Drone | drone | 
| Jenkins | jenkins | 
| Sail CI | sailci | 
| Semaphore | semaphore | 
| Shippable | shippable | 
| TeamCity | teamcity | 
| Travis CI | travis-ci | 
| Wercker | wercker | 
Contribute?
- If you want to contribute, feel free to pick one of the planned systems to work on an implementation.