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.