[openstreetmap/openstreetmap-website] WIP: devcontainer configuration (PR #6424)
Pablo Brasero
notifications at github.com
Wed Oct 1 15:50:42 UTC 2025
Fixes https://github.com/openstreetmap/openstreetmap-website/issues/5264
Based on the conversation at https://github.com/openstreetmap/openstreetmap-website/issues/2344 (re: what to do with Vagrant and Docker), I have been playing with devcontainer a bit. This is not trivial stuff and requires a lot of trial&error (or perhaps I'm a dinosaur unable to understand these newfangled doohickeys), so for now I'm going to publish this draft for others to see and gather opinions and expertise.
To the extent I have been able to, I have followed "the Rails way". Parting from `bin/rails devcontainer` and iterating from there. This sort of works now: the dev server works and most test pass (need to look into the last few). There's a few caveats though that still need to be looked into:
- I can't copy files or run user commands (rails, bundler, yarn) in the Dockerfile, so these don't get committed in the image. I have to do it in `bin/setup` instead. As a result:
- It installs Bundler dependencies every time I start the devcontainer.
- Perhaps this can be avoided by installing gems to `.vendor` within the project (and gitignore'ing it)?
- It copies config files such as `database.yml` or `settings.local.yml` both inside and outside the container. Therefore you can only configure the project to run with or without devcontainer, but not both.
- No idea what's different between the local and the remote ways to run Selenium (perhaps just a version number), but it appears that Selenium doesn't like posting forms where something has a value `"test"`. As a result I had to change all instances of `:password => "test"` to something else.
- So far I have tried only with VSCode. I need to test this with something else.
- I had to disable parallel test as they don't play well with this remote Selenium setup.
- Perhaps if I was able to run a few Selenium containers in parallel...? No idea of what is feasible.
- The DB seed script doesn't quite work: users get the annoying error about scopes after log in. I took it from mmd's at https://gist.github.com/mmd-osm/a3a0b5a8799a333e7fae578038aa7a93. I need to look a bit more into it.
Good news:
- This appears to be running well on CI (still need to look into those failing tests).
- The number of required apt packages has been reduced to 3.
I'm sure I'm leaving something out... Will update. In the meantime: thoughts?
You can view, comment on, or merge this pull request online at:
https://github.com/openstreetmap/openstreetmap-website/pull/6424
-- Commit Summary --
* $ ./bin/rails devcontainer # DB config written as config/devcontainer.database.yml
* Fix system tests config, broken by devcontainer generator
* Figuring out devcontainer config
* Selenium/WebDriver thinks that `test` signals a fake file upload
* Using Firefox for Selenium/WebDriver
* Tell WebMock to allow inter-container requests
* Parallelisation not working in the devcontainer
* Remove unnecessary dependencies
* WIP: Use Rails devcontainer image
* Consistent use of Yarn and Bundler
* We need the `file` utility
* mmd's seed code
* CI action for devcontainer. Drop Docker action
* Don't prompt about trusting mise
* Remove Dockerfile
-- File Changes --
A .devcontainer/Dockerfile (53)
A .devcontainer/compose.yaml (40)
A .devcontainer/devcontainer.json (35)
A .devcontainer/start (7)
A .github/workflows/devcontainer.yml (17)
D .github/workflows/docker.yml (42)
D Dockerfile (50)
M bin/setup (1)
A config/devcontainer.database.yml (103)
M db/seeds.rb (72)
M test/application_system_test_case.rb (24)
M test/controllers/sessions_controller_test.rb (12)
M test/factories/user.rb (2)
M test/integration/login_test.rb (64)
M test/integration/oauth2_test.rb (2)
M test/integration/page_locale_test.rb (4)
M test/integration/user_blocks_test.rb (2)
M test/integration/user_diaries_test.rb (2)
M test/integration/user_terms_seen_test.rb (4)
M test/system/user_login_test.rb (2)
M test/test_helper.rb (27)
-- Patch Links --
https://github.com/openstreetmap/openstreetmap-website/pull/6424.patch
https://github.com/openstreetmap/openstreetmap-website/pull/6424.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/6424
You are receiving this because you are subscribed to this thread.
Message ID: <openstreetmap/openstreetmap-website/pull/6424 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/rails-dev/attachments/20251001/369b1cff/attachment.htm>
More information about the rails-dev
mailing list