Skip to content

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.