When wanting to avoid openproject cli proxy
(`OPENPROJECT_CLI_PROXY=""`), assets must be precompiled and the
manifest must be built from these assets.
Then if later the assets are deleted like it's done in this script, then
the manifest should reflect that and be cleared too, or it will try to
serve the hashed version of the assets, which is not valid anymore.
This is especially meaningful when running shards with multitenancy
plugin in development mode as the assets are still served by the angular
server, but the routing occurs at a higher level (caddy server doing
reverse proxy). If the manifest exists with hashed values, rails will
return that path with the hash and the angular server cannot serve it.
It needs the unhashed path to serve it.
- Do not use string literals for job class names. Use `class.name` instead.
- Rename `ApplicationJob#good_job_scheduled_at` to `ApplicationJob#job_scheduled_at` to be backend agnostic.
- update queries in bin/check-worker-liveness to use good_jobs table
- Set good_job config options through appropriate OpenProject::Configuration
- Remove delayed_jobs table.
- Update health_check docs.
With the proposed changes the time required to run `./bin/compose setup`
is being reduced from ~18 minutes down to ~7 minutes on my machine.
In addition a workaround is applied to reduce the size of the images.
== Changes
=== Speed-Up `bundle install`
The time spent withing `bundle install` takes a significant amount time
during the `./bin/compose setup`.
We could make use of two improvements, which both allows us to
utitlize multiple CPU cures:
* Make use of the bundle `--jobs` argument
* Make use of the lesser known/used `MAKE` environment variable
A significant amount of time spent during `bundle install` is actually
compiling C-extensions, that's why the usage of the `MAKE` variable will
drastically improve performence.
=== `useradd --no-log-init`
Unfortunately there is a nasty bug when running `useradd` for a huge
`uid`, which could result in excessive image sizes. See attached links
for more information.
=== BuildKit
BuildKit is the default builder toolkit for Docker on Windows and
DockerDesktop on Macs. Using BuildKit will greatly improve performance
when building docker images.
== Links
=== Speed-Up `bundle install`
* [One Weird Trick That Will Speed Up Your Bundle Install](https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/)
=== BuildKit
* [Build images with BuildKit](https://docs.docker.com/develop/develop-images/build_enhancements/)
* [Faster builds in Docker Compose 1.25.1 thanks to BuildKit Support](https://www.docker.com/blog/faster-builds-in-compose-thanks-to-buildkit-support/)
=== `useradd --no-log-init`
* Best practices for writing Dockerfiles: [User](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user)
* golang/co: [archive/tar: add support for writing tar containing sparse files](https://github.com/golang/go/issues/13548)
* docker dev and test setup fixes
* added missing >
* include test instructions in quickstart
* fixed typo
Co-authored-by: Philipp Tessenow <tessi@bitcrowd.net>
* removed obsolete comment
Co-authored-by: Philipp Tessenow <tessi@bitcrowd.net>
* amendments
Co-authored-by: Benjamin Bädorf <b.baedorf@openproject.com>
Co-authored-by: Philipp Tessenow <tessi@bitcrowd.net>
* replace very last cuke with spec
* remove cuke support files
* remove cucumber gems
* remove traces of cucumber
* remove no longer required route
* forcefully clear parallel_test features task
* attempt removal of binstub
* attempt to stabilize spec