This is how you develop software, so most of the developers should be familiar with that kind of workflow. Last weeks were crazy, and everyone worked on time pressure, but now the workflow should definitely change, and we, as a blockchain community, should promote best practices in software development.
Testing is crucial, and I believe we could set up minimal test coverage required before merging changes (should be possible with Gitlab CI/CD afair). Getting this information (coverage) might be quite tricky because different technologies and frameworks are used in various projects, but with Gitlab CI/CD it's doable for most of them. Also, it would be great to have merge requests approvals configured. End-to-end tests where possible.
Building and pushing docker images automatically on merges/releases is also a must. But that's quite common and easy to configure. The next step is a staging environment for some backend tools and condenser. It's a game-changer if you can review changes in a real environment, just a few minutes after MR was approved. I can help a lot in this field.
It would be great to see standardized config for eslint / prettier or equivalent for other languages. It should also be a part of the CI/CD workflow.
It's quite tricky to distribute git hooks, but there is an excellent tool for nodejs to achieve that: Husky. We would be able to ensure code is linted and unit tested before being pushed. This prevents many small mistakes that can give you a headache.
I'm glad we've moved to Gitlab but I'm wondering if we should use an instance managed by a private entity. Couldn't just use Gitlab SaaS?