Continuous Integration Containerized Execution Environment
CICEE is an opinionated orchestrator of continuous integration processes. CICEE executes commands in a Docker container, using the files in your project repository, and provides a convention-based structure for fulfilling dependencies.
CICEE also provides a continuous integration shell function library to support the use of shell script-based continuous integration workflows.
bash
: bash shelldocker
: Docker command-line interfacedotnet
: .NET SDK (6.x
, 7.x
, 8.x
, and 9.x
supported)CICEE users’ most common use cases:
CICEE .NET Templates
.NET solution templates are available in the
Cicee.Templates
NuGet package. These templates provide easy templates for repository initialization which follow CICEE conventions.To install/update, execute:
dotnet new install Cicee.Templates
As of
Cicee.Templates
version0.2.0
, the following templates are provided:
cicee-classlib-package
: Aclasslib
-based Package Solution
- This template provides a base for creating libraries, distributed as NuGet packages. It includes: a source project, based upon the
classlib
template, a unit test project, based upon thexunit
template, and CI scripts.cicee-webapi-service
: Awebapi
-based Service Solution
- This template provides a base for creating web APIs, distributed as Docker images. It includes: a source project, based upon the
webapi
template, unit test and integration test projects, based upon thexunit
template, and CI scripts.
dotnet tool install -g cicee
If you already have CICEE installed, but want to update to the latest release:
dotnet tool update -g cicee
Open a Bash terminal session in the root directory of the project.
Execute cicee init repository
.
dotnet new tool-manifest && dotnet tool install --local cicee && dotnet cicee init repository
This adds:
Dockerfile
which will provide all the tools needed to perform the project’s continuous integration tasks.docker-compose
files which define the continuous integration containerized execution environment.compose
: Create the project’s distributable artifacts. For example, render SASS to CSS, compile source code, build docker images, compress zip archives, package for NPM, etc.publish
: Publish the project’s distributable artifacts to their repositories. For example, push docker images, publish a package to NuGet, etc.validate
: Validate the current project for correctness, completeness, or other rules. Supports automated checks which should be executed during pull request review.Open a Bash terminal session in the root directory of the project.
Execute cicee exec
and provide one of the CI workflow entry points.
dotnet cicee exec --entrypoint ci/bin/validate.sh
project-metadata.json
(which was created by cicee init repository
). However, if there is no project-metadata.json
, CICEE will read NPM’s package.json
, if present.
Major.Minor.Patch
version.cicee meta cienv var
commands to easily view and modify this configuration.)create-react-app
Node.js ReactSome projects may require only a single recipe, e.g., .NET NuGet packages. Other projects may require multiple, e.g., a React SPA hosted by an ASP.NET application which is distributed as a Docker image.
create-react-app
Node.js ReactNuGet.config
for private NuGet source (e.g., to enable private package sources for dotnet restore
)bash
source
) custom environment scriptsci/Dockerfile
)create-react-app
SPA
create-react-app
Node.js React