engine-ci

command module
v0.30.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2025 License: Apache-2.0 Imports: 4 Imported by: 0

README

engine-ci

Welcome to the engine-ci project, a key component of the containifyci organization. engine-ci is a robust CI/CD pipeline engine designed to operate in a containerized environment. It supports both Docker and Podman as container runtimes and is implemented in Go.

Think of it as a single binary that knows how to build any project of you always in the same way and using the same tools (versions) and processes like running post build process like scaning images (trivy) building releases (gorelease) all encapsulated in one single binary.

Here you see an example local build of engine-ci with engine-ci itself. The engince-ci build consists of four modules:

  • protos2 package
  • client package
  • engine-ci binary (alpine)
  • engine-ci binary (debian)

Build File of the example build below. Example Build

Getting Started

To start using engine-ci, you need to install the binary. The installation can be done via the following command:

go install github.com/containifyci/engine-ci@latest

Alternatively, you can download the pre-built binary from the releases page.

Usage

Once the binary is installed, initialize your project by creating a .containifyci directory with the necessary containifyci.go file:

engine-ci init

This command generates the .containifyci directory with the containifyci.go file, which is the core configuration for your pipelines.

To execute the pipeline defined in containifyci.go, use:

engine-ci run

Example

For a practical example of how engine-ci is used, check out the containifyci.go file within this repository. It demonstrates how the engine-ci project is self-hosted using its own pipeline.

Roadmap

Completed Tasks:
  • Podman Support: Integrate with Podman through the Podman bindings.
  • Pipeline Execution: Explore alternatives to running pipelines, such as compiling the pipeline into a binary for execution with go run -C .containifyci/containifyci.go build.
  • Pipeline Abstraction: Simplify pipeline code by implementing a container pipeline abstraction layer to reduce redundancy across different languages like Go, Maven, Python, etc.
  • Golang Libraries Support: Enable builds for Go libraries that do not include a main package (high priority).
  • Golang Submodule Support: Allow Go submodules to be built as part of the main module build (high priority).
  • Container Image Push: Provide an option to opt out of pushing container images (enabled by default).
  • Goreleaser Integration: Provide an option to opt out of using Goreleaser (enabled by default).
  • Dependabot: Update DependaBot configuration also to run daily (high priority).
  • Concurrent Build Support: Implement concurrent build support (medium priority).
Ongoing and Upcoming Tasks:
  • REST API Endpoint: Develop and integrate a REST API endpoint, potentially implementing the first pipeline using Python (low priority).
  • NPM Pipeline: Add support for pipelines targeting npm-based repositories (medium priority).
  • Podman Logging: Improve progress logging functionality within Podman (high priority).
  • Multi-Architecture Docker Image: Add Docker build support for the sonar-scanner-cli multi-architecture image (low priority).
  • Github Action: Change release process to create draft a release and to publish it after all artifacts are uploaded by goreleaser.
  • Goreleaser Signed Apple Builds: Add signing for Apple builds (high priority).
  • Add Go Quality Build Steps: Add extra Go quality build steps to post test coverage and other reports to the Pull Request similar to the trivy report. go-coverage-report (low priority).

Contribution

We welcome contributions from the community! If you're interested in contributing to engine-ci, please create a fork and open a pull request with your changes.

We appreciate your contributions and look forward to your involvement in improving engine-ci!

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
client module
cmd
internal
service command
pkg
build
Package build defines the core interfaces and contracts for the engine-ci build system.
Package build defines the core interfaces and contracts for the engine-ci build system.
config
Package config provides centralized configuration management for engine-ci.
Package config provides centralized configuration management for engine-ci.
cri
kv
svc
protos2 module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL