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 repository
to 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.