{"id":35878500,"url":"https://github.com/shukriadams/tetrifact","last_synced_at":"2026-01-12T08:46:21.914Z","repository":{"id":51712989,"uuid":"169971346","full_name":"shukriadams/tetrifact","owner":"shukriadams","description":"A server for storing and redistributing build artifacts.","archived":false,"fork":false,"pushed_at":"2025-12-31T00:31:43.000Z","size":4373,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-04T00:31:42.975Z","etag":null,"topics":["artefact","artefact-management","build-system","build-tool","dotnetcore","game-dev","game-development","linux","windows"],"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/shukriadams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-02-10T11:34:36.000Z","updated_at":"2025-12-17T13:22:01.000Z","dependencies_parsed_at":"2023-01-31T17:16:14.778Z","dependency_job_id":"b858a2c1-564b-4763-9042-32466a1adb7e","html_url":"https://github.com/shukriadams/tetrifact","commit_stats":null,"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/shukriadams/tetrifact","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shukriadams%2Ftetrifact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shukriadams%2Ftetrifact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shukriadams%2Ftetrifact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shukriadams%2Ftetrifact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shukriadams","download_url":"https://codeload.github.com/shukriadams/tetrifact/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shukriadams%2Ftetrifact/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["artefact","artefact-management","build-system","build-tool","dotnetcore","game-dev","game-development","linux","windows"],"created_at":"2026-01-08T17:22:08.929Z","updated_at":"2026-01-12T08:46:21.909Z","avatar_url":"https://github.com/shukriadams.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tetrifact\n\nTetrifact is a server for storing build arfefacts. It is primarily written as a storage solution for continuous integration in the games industry, where frequent and large builds consume a lot of storage space and can be cumbersome to retrieve by automated process. \n\n### Features\n\n- Exposes all artefacts and functionality via an HTTP REST API for easier integration with your CI and test chain \n- reduces storage space by sharing identical files across builds (file deduplication)\n- handles millions of files, 100s of builds, 10s of gigabytes per builds - performs well on Unreal-scale projects with very large data footprints and file counts\n- supports build hashing and comparison, allowing you to get file differences between two builds\n- automatic pruning of old builds\n- supports tagging of builds\n- Written Docker- and Linux-first in C# on Dotnetcore 6.0, runs on any system that supports this framework\n\n### Hardware\n\nTetrifact will run on pretty much any x86 hardware, but because it performs a lot of compression, hashing and JSON tasks, the more CPU cores it has the better. \n\n## Demo\n\nA Tetrifact instance is running at *https://tetrifact.manafeed.com*. For internet reasons, all write operations from the web interface are disabled on this instance.\n\n## How\n\nSuppose you work for the ACME Game Corporation, and you're developing Thingernator. You've just commited your latest changes, and\nyour version control system says you're at revision 921. In your Thingernator build script, after compiling, zip Thingernator and then post it with\n\n        curl \\\n            -X POST \\ \n            -H \"Content-Type: multipart/form-data\" \\\n            -H \"Transfer-Encoding: chunked\" \\\n            -F \"Files=@path/to/thingernator-build.zip\" \\\n            http://tetriserver.example.com/v1/packages/Thingernator-921?isArchive=true \n\nYour QA team's automated test system wants builds of Thingernator. Tag your new build so it knows this build is testable.\n\n        curl -X POST http://tetriserver.example.com/v1/tag/test-me!/Thingernator-921\n\nThe QA system can query new builds with\n\n        curl http://tetriserver.example.com/v1/packages/latest/test-me! \n        -\u003e returns \"Thingernator-921\"\n        \nor \n\n        curl http://tetriserver.example.com/v1/tags/test-me!/packages \n        -\u003e returns [\"Thingernator-921\"], a JSON array of builds with \"Test-me!\" tag.\n\nA zip of the build can then be downloaded with\n        \n        curl http://tetriserver.example.com/v1/archives/Thingernator-921\n\n## Download \n\n### Binaries\n\nBinary builds require DotNetCore 6.0 or better to run. Binaries can be downloaded from the \n[official Tetrifact demo server](https://tetrifact.manafeed.com).\n\nTo start Tetrifact unzip and from the command line run\n\n    dotnet Tetrifact.web.dll\n\nAll configuration is passed in as environment variables - these can also be set from the web.config file.\n\n### Docker image\n\nA Linux version of Tetrifact is available via Docker @ https://hub.docker.com/r/shukriadams/tetrifact \n\n- Create a \"data\" directory in your intended Tetrifact deploy directory, Tetrifact will write all its files to this. \n- Tetrifact runs with user id 1000, and needs permission to control this folder, set this with\n\n        chown -R 1000 ./data\n\n- Assuming you are starting with docker-compose, use the following example config and customize as needed\n\n        version: \"2\"\n        services:\n        tetrifact:\n            image: shukriadams/tetrifact:\u003cTAG\u003e\n            container_name: tetrifact\n            restart: unless-stopped\n            environment:\n              ASPNETCORE_URLS : http://*:5000\n            volumes:\n              - ./data:/var/tetrifact/data/:rw\n            ports:\n            - \"49022:5000\"\n\nNote that Docker for Windows now supports Linux containers, so you can run this container on Windows hosts too. \n\n## What it isn't\n\nTetrifact is use-at-your-own risk open source software. It is intended for use in your in-house CI build chain, and replaces the awful practice of storing builds on SMB file servers. Tetrifact is not a version control system or bullet-proof archive. It's written to be robust and fault-tolerant in a real-life game studio with multiple large daily builds, but you should still probably not use it for absolutely irreplacable files such as release-to-manufacture builds. \n\n## Using\n\nSee the [advanced use docs](/docs/use.md) for how to use Tetrifact.\n\n## Development\n\nSee the [developer docs](/docs/development.md) for details on running Tetrifact in a development enviroment if you're interested in debugging or contributing.\n\n## Security\n\nTetrifact has zero security - it is 100% open and intended for use on internal networks where everyone is trusted. _Never_ expose your Tetrifact instance to \"the web\" unless you know what you're doing. \n\n## License\n\nMIT (see license file for more information)\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshukriadams%2Ftetrifact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshukriadams%2Ftetrifact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshukriadams%2Ftetrifact/lists"}