-
-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Use buildDir for the bridge #36
Conversation
I'm not sure: do we need to Also if more and more Symfony developers are contributing to this repository, I'm fine switching this repository to the Symfony coding standard if it makes your life easier. It's not really related to this pull request though (it would be worth doing separately), but I thought about this seeing all the warnings pop up. |
as this directory is readonly on Lambda. | ||
You can alternatively define the function allowEmptyBuildDir() in your Kernel class | ||
and return "true" if you still want to deploy without a warm build directory. | ||
'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we return true
, the app will break right? (because the build directory is read-only, it cannot be warmed)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we return true, the exception is not thrown so it continues to line 49 return $this->getCacheDir();
which will eventually resolve to /tmp/cache
so it will not error but warm the cache and build at runtime on each new lambda.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This allows for people that don't care about performance or just want to quickly test without bothering on deploying a properly warmed cache to do it.
But as it's not the recommend approach I prefer it to be false by default and throw an explicit exception.
This would also need to be documented and is just a proposal, not a definitive opinion of mine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🤦 you're right, no exception/error here.
Personally, I'm a big fan of being able to deploy without any step (i.e. without cache generation). It's important for the DX, especially when testing out.
But because of that preference, I've slowed the effort of other contributors in the past. Now I think it's more important to get it working well for Symfony 5.2 in good condition, and maybe later iterate on that and allow deploying without cache.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No worries, I think thats good discussions to have but I agree that we can iterate and improve DX later on or support more use cases.
Closing for now as I have yet to find a proper solution for this. |
Hey @t-richard, I'm curious what was the blocker on this approach? |
@mnapoli basically Symfony is not meant to be built in a different filesystem than the runtime filesystem. It causes a lot of troubles because paths are "hardcoded" in the dumped Dependency Container. So building it locally or in CI in the default dir TBH I think the work needs to be in Symfony, not in the bridge, but I have yet to find a proper way to do it. This is tough because the Symfony HttpKernel is really hard to understand from my POV. I'll try my best to hopefully get to the bottom of it and manage to come up with a decent solution 🤞 I'll keep you and others updated in #35 🙂 |
Thanks for the update! |
Is there any way we can revive that and support 2 scenarios at once:
? |
I'm not sure we can do something in the bridge for that. Except some documentation maybe? If you have an idea, I'm all hears! |
🏗️ WIP PR to introduce usage of the buildDir feature.
The only thing done here is generating the builded part of the "cache" in a completly different folder (
var/build
) than the cache part (staying in the defaultvar/cache
).This allows for a clear separation when on Lambda so that we can copy/symlink only the cache part but keep the build part read-only which avoids unnecessary processing.
TODO :
/tmp
or error correctly