-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Docs: Update README with some information about the project (#9)
- Loading branch information
Showing
2 changed files
with
21 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,25 @@ | ||
# `foundry` | ||
Custom repository for Arch Linux that builds the packages on the fly from AUR. | ||
|
||
## Roadmap | ||
- [ ] Build packages on demand and serve them | ||
- [ ] Use LRU cache for packages | ||
- [ ] Allow storing packages in multiple backends (Local disk, AWS S3, GCS) | ||
- [ ] Implement authentication on certain endpoints. For example only allowing authenticated users to build a new package. | ||
- [ ] Add ABS support | ||
|
||
[![Coverage Status](https://coveralls.io/repos/github/prmsrswt/foundry/badge.svg?branch=main)](https://coveralls.io/github/prmsrswt/foundry?branch=main) | ||
|
||
## Overview | ||
|
||
Foundry is a custom package repository for Arch Linux that builds the packages on the fly from [AUR](https://aur.archlinux.org). | ||
|
||
The goals of the project are: | ||
- Make it easy to run a custom package repository for Arch Linux. | ||
- Leverage Object Storages to provide a cost efficient and scalable package storage. | ||
|
||
## Architecture | ||
|
||
![Image](./docs/images/foundry-architecture.png) | ||
|
||
Foundry is split into three components: | ||
- **Furnace** is responsible for building the packages. Upon receiving the request it will fetch the package details from AUR. It leverages the [Arch Build System](https://wiki.archlinux.org/index.php/Arch_Build_System) to build the package archive and then uploads it to the object storage bucket. It's stateless so you can run as many furnaces as you want. | ||
- **Store** is responsible to managing an inventory of all packages. It'll serve the package database and the packages built by Furnace. | ||
- **Gateway** is the entry-point for all external requests to Foundry. It also coordinates between all other components, routing requests where they need to go. | ||
|
||
The packages are stored in an Object Storage backend such as AWS S3 or GCS. Furnace uploads the packages to an object storage bucket after building, this gets picked up by the Stores and they update their package database accordingly. | ||
|
||
## Contributing | ||
Contributions are welcome! |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.