Comments (10)
I have written my own remote cache server for turbo yesterday for Google Cloud Storage. I will see if it can be open-sourced
from turbo.
Yeah, that's a really good idea.
I am also happy to help with the implementation.
@thib92 we can also work together if you wan't to.
from turbo.
I have talked with my work and I am allowed to open-source my proof of concept server which is compatible with the remote cache of Turborepo and supports Google Cloud Storage, and Amazon S3. Azure Storage is also possible but would need someone to with a such blob storage to test it out.
from turbo.
Please find it here: https://github.com/Tapico/tapico-turborepo-remote-cache :)
from turbo.
If this support will be added to turborepo
you also need to think about companies that are for all kind of compliance reasons can not just directly connect to a cloud storage provider or might need to access via a VPN and/or IAP. For example, at work I am unable to directly access cloud storage and write to it from my computer system.
One of the reasons that I am worked on my above mentioned project to ease this problem. It's probably a good start for people that are concerned about not wanting to store build artefacts on Vercel. The project comes with binaries for amd64, windows, and arm and has docker images pre-build that can be used. I hope to find some free time to make an example how it can be ran via Cloud Run on Google Cloud.
If anyone want support for Azure Storage, please reach out to me and we can work on it together. I used a cloud abstraction library for Go that supports it already: https://github.com/graymeta/stow which supports the following:
- Microsoft Azure Blob Storage
- Openstack Swift (with auth v2)
- Oracle Storage Cloud Service
- SFTP
besides that ones already leveraged by the proxy server solution:
- Local (folders are containers, files are items)
- Amazon S3
- Google Cloud Storage
from turbo.
Note that it's not all or nothing:
Implementing a few providers does not mean that using a plugin-based or a proxy-based approach is not possible.
Turborepo could implement the most needed providers, and leave the more exotic ones to a plugin-based or proxy-based approach. This allows for most users to only depend on Turborepo, and a few to need an additional moving part.
S3 would probably be the best candidate for an in-tree provider, for two reasons:
- AWS is the most used Cloud provider
- The S3 API is a standard that has been re-used by multiple late-comers (MinIO, BackBlaze B2, CloudFlare R2, etc.)
The rest can be implemented by plugins or proxies.
This means that there will be some triaging involved here, as repeated requests for additional in-tree providers will likely come. A fixed list of supported providers with a clear statement that no additional providers will be added to the main repo could reduce this a bit.
I'd recommend a plugin-based approach for the less-used providers, as it is quite simple to install (just have a binary with the right name in your path and you're good to go).
from turbo.
I'm also happy to help with the implementation once the correct solution has been established with the core team. I don't have a lot of experience with Go but that will make for some nice practice!
from turbo.
One thing the project manager should consider:
Adding different storage providers will also increase the size of the binary.
from turbo.
It would be great if there will be an option for a Node custom storage provider. This could be file/files that expose the correct api.
from turbo.
@weyert when will you open-source it?
from turbo.
Related Issues (20)
- If remote cache server returns error than ui mode gets messed up HOT 1
- Docs: Turborepo 2.0 and playwright docker container HOT 2
- `create-turbo` not able to find tasks on Windows HOT 2
- Turbo crash on Windows Server 2016 Data Center HOT 2
- eslint-plugin-turbo HOT 1
- Differing Yarn versions with `create-turbo` HOT 5
- Turbo does not forward `LD_LIBRARY_PATH` by default
- Remote only does not work HOT 4
- Terminal UI has multiple issues and downsides HOT 1
- turbo 2.0 build --env-mode=loose HOT 8
- Docs: Changeset action node job name differs from version HOT 1
- A task that does not have `persistent: true` can not be scrolled. HOT 7
- Scrolling is not possible with a Trackpad in Webstorm HOT 2
- Colors are not preserved, code lines are not clickable HOT 3
- Docs: Just-In-Time Workspace dependency change does not invalidate cache HOT 8
- test issue
- Docs: Missing Prettier package in examples HOT 2
- @Turbo/codemod version 2.0.3 terminal cannot be copied HOT 5
- Turbo pack features/typescript documentation HOT 1
- dotenv-cli doesnt work after upgrading to 2.0.3 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from turbo.