-
Notifications
You must be signed in to change notification settings - Fork 385
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
Shipping the new spec #2906
Comments
I've been thinking a bit about how to organize the work into coherent PRs:
|
In the end I've gone with a different way to organize things:
|
Here's my battleplan for getting this all into CI and deployed. Initial goal: Build and validate the new spec for PRs, build on changes and publish to https://spec.matrix.org. The current state of our CI is:
The changes to this that I propose are:
Once we do a release of a Matrix version, we'll get some versions to play around with. As detailed in #2992 this is implemented via git branches. We'll probably need to modify the webhook listener to pick up on changes to specific branches and unpack the resulting buildkite builds to a version-specific directory. Will likely need some nginx rules to route things to the right place. |
Thanks for pushing on with this @anoadragon453 ! I will have some docs in the next few days (possibly the weekend if I don't get to it first). |
Bit of a shakeup in the plan as I've become more familiar with how the whole CI pipeline fits together and how it should eventually be untangled: New changes:
|
giles, not guiles. named after a certain librarian :) |
This PR attempts to update the CI of matrix-doc to build [the new spec redesign](#2906). It does so by additionally building the new spec in parallel to the old. The plan is to continue to host the old spec at https://matrix.org/docs/spec, while the new spec will be at https://spec.matrix.org. Eventually we will retire the old version of the spec, and have the old URL redirect to the new one. In detail, this PR: * Adds a new step to CircleCI to build the new spec with `hugo`. This step uses alpine, grabs some dependencies, and then builds the HTML. * We needed to hand some specific options to hugo for CircleCI in order to continue allowing CircleCI to host temporary builds of the spec after each CI run. This required changing some assumptions related to relative paths. * CircleCI's artifacts hosting is also quite limited. Specifically it will not automatically resolve `/some/path` to `/some/path/index.html`, which our hugo theme relied on. Fixes were implemented for this, but we may want to consider switching away from CircleCI artifacts as a host, and using something like [netlify](https://www.netlify.com/) instead. * Modifies the existing Buildkite pipeline step to build both the new spec in a separate step. It additionally modifies the old spec to be built with alpine. (Separate out into another PR) * We'd like to separate out the deployment of matrix.org from the new spec. Therefore a new step, with a separate artifact build (`spec.tar.gz`). We will eventually remove the old step and the matrix.org build trigger. * Modifies `pyproject.toml` to update the config of [giles](https://github.com/OpenAstronomy/baldrick/blob/master/baldrick/plugins/circleci_artifacts.py), which is what creates the "docs", "swagger" links in the CI steps for matrix-docs PRs. * A new step was added for the new spec. The old spec was renamed to "legacy".
As of now the new spec docs are available in their unstable form at https://spec.matrix.org/unstable 🎉 We now exist in a spooky world between two spec platforms, and need to eventually get back to one. I'm going to leave that to a separate issue though, as per this one, the new spec is now officially shipped. |
This PR attempts to update the CI of matrix-doc to build [the new spec redesign](#2906). It does so by additionally building the new spec in parallel to the old. The plan is to continue to host the old spec at https://matrix.org/docs/spec, while the new spec will be at https://spec.matrix.org. Eventually we will retire the old version of the spec, and have the old URL redirect to the new one. In detail, this PR: * Adds a new step to CircleCI to build the new spec with `hugo`. This step uses alpine, grabs some dependencies, and then builds the HTML. * We needed to hand some specific options to hugo for CircleCI in order to continue allowing CircleCI to host temporary builds of the spec after each CI run. This required changing some assumptions related to relative paths. * CircleCI's artifacts hosting is also quite limited. Specifically it will not automatically resolve `/some/path` to `/some/path/index.html`, which our hugo theme relied on. Fixes were implemented for this, but we may want to consider switching away from CircleCI artifacts as a host, and using something like [netlify](https://www.netlify.com/) instead. * Modifies the existing Buildkite pipeline step to build both the new spec in a separate step. It additionally modifies the old spec to be built with alpine. (Separate out into another PR) * We'd like to separate out the deployment of matrix.org from the new spec. Therefore a new step, with a separate artifact build (`spec.tar.gz`). We will eventually remove the old step and the matrix.org build trigger. * Modifies `pyproject.toml` to update the config of [giles](https://github.com/OpenAstronomy/baldrick/blob/master/baldrick/plugins/circleci_artifacts.py), which is what creates the "docs", "swagger" links in the CI steps for matrix-docs PRs. * A new step was added for the new spec. The old spec was renamed to "legacy".
This PR attempts to update the CI of matrix-doc to build [the new spec redesign](#2906). It does so by additionally building the new spec in parallel to the old. The plan is to continue to host the old spec at https://matrix.org/docs/spec, while the new spec will be at https://spec.matrix.org. Eventually we will retire the old version of the spec, and have the old URL redirect to the new one. In detail, this PR: * Adds a new step to CircleCI to build the new spec with `hugo`. This step uses alpine, grabs some dependencies, and then builds the HTML. * We needed to hand some specific options to hugo for CircleCI in order to continue allowing CircleCI to host temporary builds of the spec after each CI run. This required changing some assumptions related to relative paths. * CircleCI's artifacts hosting is also quite limited. Specifically it will not automatically resolve `/some/path` to `/some/path/index.html`, which our hugo theme relied on. Fixes were implemented for this, but we may want to consider switching away from CircleCI artifacts as a host, and using something like [netlify](https://www.netlify.com/) instead. * Modifies the existing Buildkite pipeline step to build both the new spec in a separate step. It additionally modifies the old spec to be built with alpine. (Separate out into another PR) * We'd like to separate out the deployment of matrix.org from the new spec. Therefore a new step, with a separate artifact build (`spec.tar.gz`). We will eventually remove the old step and the matrix.org build trigger. * Modifies `pyproject.toml` to update the config of [giles](https://github.com/OpenAstronomy/baldrick/blob/master/baldrick/plugins/circleci_artifacts.py), which is what creates the "docs", "swagger" links in the CI steps for matrix-docs PRs. * A new step was added for the new spec. The old spec was renamed to "legacy".
I'd like us to think about how to ship the new spec.
At the moment the "new spec" is built from https://github.com/wbamberg/matrix-hugo. I think there are a couple of barriers in getting from there to a shipped spec building from matrix-doc:
So I'd like to suggest a process like this:
we finish testing out the new spec, and decide it's what we want (or not, in which case none of the rest applies...)
we finish applying the design updates from Dean
we suspend changes to the spec (to be clear, this doesn't stop us writing and approving MSCs: just that we won't be able to update the spec itself to reflect approved MSCs).
we make a series of PRs to matrix-doc, and they get reviewed. Changes include:
a) the underlying infrastructure (mostly adding /themes/docsy as a submodule)
b) a /content directory containing the spec prose. As far as possible we can make PRs that are reviewable, but some changes, like RST->MD conversion will be pretty hard to review.
c) a /data directory, containing spec data (OpenAPI and event schemas). Again I can do this as multiple reviewer-friendly PRs.
d) a /layouts directory containing template code
eventually we're able to build the new spec from matrix-doc, and all the changes have been reviewed. Now we can publish the new spec to, say, spec.matrix.org/unstable.
we un-suspend spec changes, but make them now apply to the new spec organization.
we remove vestiges of the old spec platform
when we are ready, make version 1.1 of the new spec and publish it at spec.matrix.org
I think before this I ought to provide a summary of the changes I've made. Because it would be a shame to get to, say, 4b and realise that I've made, and relied on, some change that's fundamentally not acceptable.
I think one drawback of this process is that we have to reapply all the changes. This is OK for the big changes like Markdown conversion, but for small ad-hoc changes (like odd bits of RST that needed manual fixing up) it will be easy to miss stuff. But I think that's not a huge problem.
The text was updated successfully, but these errors were encountered: