DEV: Clean up and refactor CI workflow(s) (PR #12144)


  • DEV: Remove external plugin linting (that’s covered by CI in their repositories)
  • DEV: Move lint stages to a separate workflow (partial de-if-ication of workflows)
  • DEV: Run CI on main branch too
  • DEV: Update postgres to 13
  • DEV: Update redis to 6.x

Other changes:

  • DEV: Remove matrix.os
  • DEV: Remove env.BUILD_TYPE
  • DEV: Remove env.TARGET
  • DEV: Rename build_types config option to build_type
  • DEV: Lowercase target and build_type names
  • DEV: Rename ci to tests
  • DEV: Rename lint to linting
  • DEV: Lower the wizard qunit timeout (30 min → 10)
  • DEV: Ruby version is no longer configurable
  • DEV: Use binstubs where applicable
  • DEV: We don’t open PRs to tests-passed




Is it by design that plugin specs are run twice, once each for targets ‘core’ and ‘plugins’?

The first target runs core tests and the built-in plugin tests. The second one installs external plugins (rake plugin:install_all_official) and then runs tests on all plugins, including the core ones (which is a side effect; we could add some bash magic to skip bundled ones in that target)

Or maybe we run baked-in-core plugin specs only in the second target alongside all official plugins?

Sure, I can either way. The reasoning was that core tests catch things broken in discourse/discourse and plugin ones catch regressions in other repositories, but core/plugin (regardless of the source) division is fine too. I’ll update the PR.