Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 38 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,57 @@
`drassi`
=======
The drassi `/未蟻维蟽畏/` (Greek for `action`) aim to bring [GitHub Actions](https://github.com/features/actions) to
Drassi `/未蟻维蟽畏/` (Greek for `action`) aims to bring [GitHub Actions](https://github.com/features/actions) to
everyone and everywhere.

## 1. Use-cases
> This project is created by human, and for human.
> Using GenAI tools is allowed but MUST be under human control.

### 1.1 Alternative to [`actions/runner`](https://github.com/actions/runner) for self-hosted runners
## Target users

`actions/runner` executes all jobs within the host environment, making it unsuitable for projects requiring strong
isolation and security. Additionally, `actions/runner` can only process one job at a time, which means implementing
autoscaling with self-hosted runners requires additional tools like `actions-runner-controller` (ARC).
### 1. GitHub users who want faster jobs

Drassi's `gha-runner` offers a drop-in replacement for `actions/runner`, with enhanced security and isolation. It
executes each job within a sandboxed environment, providing flexibility by supporting various sandboxing implementations
such as Docker containers, Incus, or microVMs. These isolated environments enables multiple jobs can be able to run in
parallel, optimizing both resource utilization and time efficiency.
GitHub-hosted Actions runners
are [slow](https://medium.com/@akhilesh-mishra/your-github-actions-runners-are-slow-and-you-are-paying-too-much-for-them-5406577314fe).
Self-hosted runners can be faster, but each runner is limited to **one job at a time**.

With Drassi's `gha-runner`, you gain improved job isolation, security, and parallel job execution, significantly
enhancing your CI/CD pipeline's performance and scalability.
### 2. Self-hosted runner users who need dynamic scaling

### 1.2 Run your GitHub Actions locally
To run multiple jobs in parallel, users often need solutions
like [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller).
Many jobs also need Docker access, for example:

Rather than having to commit/push every time you want to test out the changes you are making to your
`.github/workflows/` files (or for any changes to embedded GitHub actions), you can use `drassi` CLI to run the actions
locally.
* [building images in CI jobs](https://github.com/marketplace/actions/build-and-push-docker-images)
* [using Docker container actions](https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action)
* [running jobs inside containers](https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontainer)

### 1.3 Bring GitHub Actions to other git-hosting like `gitea`, `gitlab`,...
In these use cases, you usually need Docker-in-Docker (`--privileged`) or a mounted Docker socket.
Both options raise **security concerns** when a runner is shared across multiple teams or tenants.

If you鈥檙e using a self-hosted Git server, such as Gitea or GitLab, but prefer the flexibility, power, and extensive
ecosystem of GitHub Actions, Drassi provides solutions like `gitea-runner` and `gitlab-runner` to integrate seamlessly
with your Git server. Drassi is also a customizable framework, allowing you to tailor or bring your own runner to suit
your specific needs.
### 3. GitLab, Gitea, and other users who want GitHub Actions

## 2. Architecture
Many teams want the GitHub Actions model because it provides:

* composable steps
* multiple workflows
* reusable jobs
* a large actions ecosystem

However, `actions/runner` is designed to work with GitHub servers. `act`-based runners can support GitHub-like servers,
such as Gitea, but they are not fully compatible with the GitHub runner and miss features like problem matchers and
issue reporting.

### 4. Users who want to run jobs locally

Running jobs locally reduces the feedback loop before pushing to a Git server or debugging CI failures.

## Architecture

![Arch](docs/architecture.svg)

Drassi supports multiple runners, including GitHub, Gitea, and GitLab, from a shared core.
Each job runs in a sandboxed environment, with multiple sandboxers available to match different isolation, security, and
performance needs.

## 3. Usage

### 3.1 `drassi` CLI
Expand Down
Loading
Loading