{"id":17680374,"url":"https://github.com/tbrand/famo","last_synced_at":"2025-06-27T19:36:09.787Z","repository":{"id":75518933,"uuid":"158693137","full_name":"tbrand/famo","owner":"tbrand","description":"Command line tool for caching builds on S3","archived":false,"fork":false,"pushed_at":"2018-12-05T07:43:45.000Z","size":84,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T18:48:43.047Z","etag":null,"topics":["cache","ci-cd","command-line-tool","devops","rust","s3"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tbrand.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-11-22T12:02:40.000Z","updated_at":"2019-04-30T12:27:45.000Z","dependencies_parsed_at":"2023-06-06T17:45:18.942Z","dependency_job_id":null,"html_url":"https://github.com/tbrand/famo","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/tbrand/famo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbrand%2Ffamo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbrand%2Ffamo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbrand%2Ffamo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbrand%2Ffamo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tbrand","download_url":"https://codeload.github.com/tbrand/famo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tbrand%2Ffamo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262319636,"owners_count":23293055,"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":["cache","ci-cd","command-line-tool","devops","rust","s3"],"created_at":"2024-10-24T09:06:45.306Z","updated_at":"2025-06-27T19:36:09.762Z","avatar_url":"https://github.com/tbrand.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://user-images.githubusercontent.com/3483230/48980782-e0e9f580-f110-11e8-9608-0d9ad31c97c5.png\" align=\"left\" alt=\"logo\" width=\"150px\" /\u003e\n\n[![Build Status](https://travis-ci.com/tbrand/famo.svg?branch=master)](https://travis-ci.com/tbrand/famo)\n[![Build status](https://ci.appveyor.com/api/projects/status/6yv5ehrj9t7w1prq/branch/master?svg=true)](https://ci.appveyor.com/project/tbrand/famo/branch/master)\n\n**This project is developed for my personal practice. Not recommented to be used in your productions.**\n\nFamo is a command line tool for caching builds on S3 similer to [sccache](https://github.com/mozilla/sccache).\nFamo is assumed to be used in many CI/CD platforms and for many languages.\n\n\u003ci\u003eStill under super development.\u003c/i\u003e\n\n## Main Features\n- :heavy_check_mark: Quite easy and simple to use.\n- :heavy_check_mark: Detect languages automatically.\n- :heavy_check_mark: [WIP] Single Binary (For Linux, MacOS) which could be easily installed on CI/CD platforms.\n- :heavy_check_mark: [WIP] Asyncronous uploading.\n\n## Quick Start\n\nTo use famo, you need\n- :heavy_check_mark: `famo` command\n- :heavy_check_mark: S3 or its compatibles with access key and secret access key.\n\n### Install famo command\nTBD\n\n### Setting up S3\nYou need below information about S3.\n- Access Key ID (e.g. AKIAXXXXXXXXXXXXXXXX)\n- Secret Access Key (e.g. HLn2U3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)\n- Region (e.g. ap-northeast-1)\n- Endpoint (e.g. s3-ap-northeast-1.amazonaws.com)\n- Bucket (e.g. famo-cache)\n\nYou could pass them as command line arguments.\nBut access key id and secret access key should be passed as environment variables to hide their actual values.\nUse systems called \"secrets\" or \"credentials\" on your CI/CD platforms to set them.\n```bash\nexport FAMO_ACCESS_KEY=AKIAXXXXXXXXXXXXXXXX\nexport FAMO_SECRET_ACCESS_LEY=HLn2U3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n### Use it!\n```bash\nfamo --bucket=famo-cache --region=ap-northeast-1 --endpoint=s3-ap-northeast-1.amazonaws.com\n```\n\n### Options\n`famo -h` to show other options.\n\n## How does Famo work?\n1. Watch package files (like Cargo.toml, Gemfile, package.json ...).\n1. Calculate unique hash (hex) from them.\n1. Check the existance of the cache on S3.\n1. If the cache exists, download and unpack it into current directory.\n1. Builds project. If the cache was hit, it's very fast.\n1. Upload an archive of the cache if cache didn't exist on step 4.\n\nSo basically cache is effective until package files are not changed.\nThe cache will reduce the build time especially for the big projects.\n\n## Comparing to similer works\nThere are several works which Famo was inspired. `sscache` developed by Mozilla is also caching builds onto cloud storages but supported languages (build tools) are limited.\n`sccache` is inspired by ccache which only support `gcc`.\n- [sccache](https://github.com/mozilla/sccache)\n- [ccache](https://ccache.samba.org/)\n\nCircleCI, TravisCI and other famous platforms have their caching system.\nFamo is used in platforms which doesn't have such system.\n- [CircleCI's caching system](https://circleci.com/docs/2.0/caching/)\n- [TravisCI's caching system](https://docs.travis-ci.com/user/caching/)\n\n## Supports\n\n### Supported Languages (Package Managers)\nThey are targets of auto detection. You can use Famo to other languages (not be listed below) by specifying `--watches` and `--archive` options.\n- Rust (cargo)\n- Node.js (npm, yarn)\n- Ruby (gem)\n- Crystal (shards)\n\n### Supported Platforms\nBasically, Famo can be used in every platforms.\nHere are basic steps to use famo in your platform.\n\n- Pre-download `famo` or include `famo` in build image.\n- Setting up S3 environment on your build platform.\n- Insert famo step into your build process.\n\n### Supported Backend\nCurrently only S3 and its compatibles are supported.\nPlease suggest on issues when you need others. (e.g. Redis)\n\n## Development and Contribution\nWe need your supports especially for\n- Adding another languages as a target of auto detection.\n- Adding another awesome option. (e.g. Asyncronous uploading)\n- Bug fixes\n\nWe don't need issues for each pull request. Please submit pull request directly. :smile:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbrand%2Ffamo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftbrand%2Ffamo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftbrand%2Ffamo/lists"}