{"id":23596482,"url":"https://github.com/jeremiahsanders/cicee","last_synced_at":"2025-05-08T00:54:10.749Z","repository":{"id":38378535,"uuid":"336863585","full_name":"JeremiahSanders/cicee","owner":"JeremiahSanders","description":"Continuous Integration Containerized Execution Environment","archived":false,"fork":false,"pushed_at":"2025-05-03T22:19:58.000Z","size":576,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-05-08T00:53:57.066Z","etag":null,"topics":["continuous-integration","docker-compose","dotnet"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JeremiahSanders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-07T18:49:37.000Z","updated_at":"2025-05-03T22:20:01.000Z","dependencies_parsed_at":"2023-11-12T22:23:34.740Z","dependency_job_id":"74e9b8d1-96c6-4b30-826c-4162175d7e13","html_url":"https://github.com/JeremiahSanders/cicee","commit_stats":{"total_commits":136,"total_committers":1,"mean_commits":136.0,"dds":0.0,"last_synced_commit":"38bfa1b31afdc014692870b9b622effff212efa1"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremiahSanders%2Fcicee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremiahSanders%2Fcicee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremiahSanders%2Fcicee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JeremiahSanders%2Fcicee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JeremiahSanders","download_url":"https://codeload.github.com/JeremiahSanders/cicee/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252978738,"owners_count":21834915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continuous-integration","docker-compose","dotnet"],"created_at":"2024-12-27T10:12:19.068Z","updated_at":"2025-05-08T00:54:10.738Z","avatar_url":"https://github.com/JeremiahSanders.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Continuous Integration Containerized Execution Environment (CICEE)\n\n[![NuGet](https://badgen.net/nuget/v/cicee/)](https://www.nuget.org/packages/cicee/)\n\n## What is CICEE?\n\nCICEE is an opinionated orchestrator of continuous integration processes. CICEE [executes commands in a Docker container][cicee-exec], using the files in your project repository, and provides a convention-based structure for fulfilling dependencies.\n\nCICEE also provides a [continuous integration shell function library][cicee-lib] to support the use of shell script-based continuous integration workflows.\n\n* [How does CICEE work?][]\n\n### What does CICEE require? What are its dependencies?\n\n* `bash`: bash shell\n* `docker`: Docker command-line interface\n* `dotnet`: .NET SDK (`6.x`, `8.x`, and `9.x` supported)\n\n## Why use CICEE?\n\nCICEE users' most common use cases:\n\n* Validating project code, e.g., during a pull request review, consistently on both developer workstations and continuous integration servers.\n* Assembling distributable artifacts, e.g., Docker images or NPM packages.\n* Running integration tests requiring dependencies, e.g., databases.\n* Executing code cleanup, linting, reformatting, or other common development workflows, without prior tool installation.\n\n## How do you use CICEE?\n\n* [Installation or update][]\n* [What Files and Directories Does CICEE Require?][project-structure]\n* [Using `cicee`][using-cicee]\n\n\u003e ### CICEE .NET Templates\n\u003e\n\u003e .NET _solution_ templates are available in the [`Cicee.Templates`][] NuGet package. These templates provide easy templates for repository initialization which follow CICEE conventions.\n\u003e\n\u003e To install/update, execute:\n\u003e\n\u003e ```bash\n\u003e dotnet new install Cicee.Templates\n\u003e ```\n\u003e\n\u003e As of [`Cicee.Templates`][] version `0.2.0`, the following templates are provided:\n\u003e\n\u003e * `cicee-classlib-package`: A `classlib`-based Package Solution\n\u003e   * 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 the `xunit` template, and CI scripts.\n\u003e * `cicee-webapi-service`: A `webapi`-based Service Solution\n\u003e   * 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 the `xunit` template, and CI scripts.\n\n## Quickstart\n\n### Step 0: Install CICEE\n\n```bash\ndotnet tool install -g cicee\n```\n\n\u003e If you already have CICEE installed, but want to update to the latest release:\n\u003e\n\u003e ```bash\n\u003e dotnet tool update -g cicee\n\u003e ```\n\n### Step 1: Add a Continuous Integration Containerized Execution Environment\n\nOpen a Bash terminal session **in the root directory of the project**.\n\nExecute [`cicee init repository`][cicee-init-repository].\n\n```bash\ndotnet new tool-manifest \u0026\u0026 dotnet tool install --local cicee \u0026\u0026 dotnet cicee init repository\n```\n\nThis adds:\n\n* a .NET local tool installation of CICEE\n* a `Dockerfile` which will provide all the tools needed to perform the project's continuous integration tasks.\n* `docker-compose` files which define the continuous integration containerized execution environment.\n* a small, flexible continuous integration workflow template. Three initial workflows are provided:\n  * `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.\n  * `publish`: Publish the project's distributable artifacts to their repositories. For example, push docker images, publish a package to NuGet, etc.\n  * `validate`: Validate the current project for correctness, completeness, or other rules. **Supports automated checks which should be executed during pull request review.**\n\n### Step 2: _Try It Out_\n\nOpen a Bash terminal session **in the root directory of the project**.\n\nExecute [`cicee exec`][cicee-exec] and provide one of the CI workflow entry points.\n\n```bash\ndotnet cicee exec --entrypoint ci/bin/validate.sh\n```\n\n### Next Step\n\n* Update [continuous integration configuration][project-structure]. This is normally done in `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.\n  * Update the project's name and description, if needed.\n  * Update the current `Major.Minor.Patch` version.\n  * Configure required environment variables and defaults. (Use the [`cicee meta cienv var` commands][meta-cienv-var] to easily view and modify this configuration.)\n* Set up the continuous integration workflow.\n\n### Workflow Recipes\n\n#### Validate Workflow Recipes\n\n* [`create-react-app` Node.js React][validate-nodejs-create-react-app]\n* [.NET][validate-dotnet] (applies to all currently-supported .NET languages and project types)\n\n#### Compose Workflow Recipes\n\n\u003e Some projects may require only a single recipe, e.g., [.NET NuGet packages][compose-dotnet-nuget]. Other projects may require multiple, e.g., a [React SPA][compose-nodejs-create-react-app] hosted by an [ASP.NET application][compose-dotnet-executable] which is distributed as a [Docker image][compose-docker-image].\n\n* [AWS CDK cloud assembly][compose-cdk]\n* [`create-react-app` Node.js React][compose-nodejs-create-react-app]\n* [Docker image][compose-docker-image]\n* [.NET executable][compose-dotnet-executable] (e.g., ASP.NET application)\n* [.NET NuGet package][compose-dotnet-nuget]\n* [Zip archive][compose-zip] (compress other composed artifacts in preparation for distribution)\n\n#### Publish Workflow Recipes\n\n* [Copy zip archive to AWS S3][publish-aws-s3-zip]\n* [Publish .NET NuGet package][publish-dotnet-nuget]\n* [Push Docker image to AWS ECR][publish-docker-aws-ecr]\n* [Push Docker image to Docker Hub][publish-docker-docker-hub]\n\n### Project Environment Initialization Recipes\n\n* [Customize or override build version][env-project-build-version]\n* [Generate `NuGet.config` for private NuGet source][env-project-nuget-auth] (e.g., to enable _private_ package sources for `dotnet restore`)\n* [Import (`bash` `source`) custom environment scripts][env-project-custom-env]\n* [Login to AWS ECR][env-project-aws-ecr-login] (e.g., to use private images which are hosted in AWS ECR for base image in `ci/Dockerfile`)\n\n### Example Combined Recipes\n\n* [NuGet Library / .NET Tool][]\n  * Combines:\n    * Validate\n      * [.NET][validate-dotnet]\n    * Compose\n      * [.NET NuGet package][compose-dotnet-nuget]\n    * Publish\n      * [Publish .NET NuGet package][publish-dotnet-nuget]\n* [ASP.NET Docker Image / Self-contained Command Line Tool Docker Image][]\n  * Combines:\n    * Validate\n      * [.NET][validate-dotnet]\n    * Compose\n      * [.NET executable][compose-dotnet-executable] (e.g., ASP.NET application)\n      * [Docker image][compose-docker-image]\n    * Publish\n      * [Push Docker image to Docker Hub][publish-docker-docker-hub]\n* [AWS CDK application hosting `create-react-app` SPA][create-react-app-aws-cdk]\n  * Combines:\n    * Validate\n      * [`create-react-app` Node.js React][validate-nodejs-create-react-app]\n    * Compose\n      * [`create-react-app` Node.js React][compose-nodejs-create-react-app]\n      * [AWS CDK cloud assembly][compose-cdk]\n      * [Zip archive][compose-zip] (compress other composed artifacts in preparation for distribution)\n    * Publish\n      * [Copy zip archive to AWS S3][publish-aws-s3-zip]\n\n[`Cicee.Templates`]: https://www.nuget.org/packages/Cicee.Templates\n[ASP.NET Docker Image / Self-contained Command Line Tool Docker Image]: ./docs/recipes/dotnet/docker-image.md\n[cicee-exec]: docs/use/execute.md\n[cicee-init-repository]: docs/use/initialize-repository.md\n[cicee-init]: docs/use/initialize.md\n[cicee-lib]: docs/use/ci-library.md\n[cicee-template-init]: docs/use/template-init.md\n[cicee-template-lib]: docs/use/template-lib.md\n[compose-cdk]: docs/recipes/aws/cdk-compose.md\n[compose-docker-image]: docs/recipes/docker/compose-docker-image.md\n[compose-dotnet-executable]: docs/recipes/dotnet/compose-project.md\n[compose-dotnet-nuget]: docs/recipes/dotnet/compose-nuget.md\n[compose-nodejs-create-react-app]: docs/recipes/nodejs/create-react-app-compose.md\n[compose-zip]: docs/recipes/compose-zip.md\n[create-react-app-aws-cdk]: docs/recipes/nodejs/create-react-app-aws-cdk.md\n[env-project-aws-ecr-login]: docs/recipes/env/project/aws-ecr-login.md\n[env-project-build-version]: docs/recipes/env/project/build-version.md\n[env-project-custom-env]: docs/recipes/env/project/custom-env.md\n[env-project-nuget-auth]: docs/recipes/env/project/nuget-private-source.md\n[How does CICEE work?]: docs/what/how-does-cicee-work.md\n[Installation or update]: docs/use/installation-or-update.md\n[meta-cienv-var]: docs/use/meta-cienv-variables.md\n[NuGet Library / .NET Tool]: ./docs/recipes/dotnet/nuget-library.md\n[project-structure]: docs/use/project-structure.md\n[publish-aws-s3-zip]: docs/recipes/aws/publish-s3-zip.md\n[publish-docker-aws-ecr]: docs/recipes/docker/publish-image-aws-ecr.md\n[publish-docker-docker-hub]: docs/recipes/docker/publish-image-docker-hub.md\n[publish-dotnet-nuget]: docs/recipes/dotnet/publish-nuget.md\n[Set up CI workflow for .NET project]: docs/recipes/dotnet/README.md\n[using-cicee]: docs/use/using-cicee.md\n[validate-dotnet]: docs/recipes/dotnet/validate.md\n[validate-nodejs-create-react-app]: docs/recipes/nodejs/create-react-app-validate.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremiahsanders%2Fcicee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeremiahsanders%2Fcicee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremiahsanders%2Fcicee/lists"}