aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordundargoc <33953936+dundargoc@users.noreply.github.com>2022-10-23 07:52:45 +0200
committerGitHub <noreply@github.com>2022-10-22 22:52:45 -0700
commit3f80df368e0eec05f80ebb194e128b6da2db7418 (patch)
tree58626171f9b018de9f86419b72e9aaab46f881e4
parent1887d8d7d0dd619fa90fe11182c436bc3c71c9d5 (diff)
downloadrneovim-3f80df368e0eec05f80ebb194e128b6da2db7418.tar.gz
rneovim-3f80df368e0eec05f80ebb194e128b6da2db7418.tar.bz2
rneovim-3f80df368e0eec05f80ebb194e128b6da2db7418.zip
docs(maintain): CI strategy #20778
It's only focused on GitHub Actions since that is the primary CI provider we use at the moment.
-rw-r--r--MAINTAIN.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/MAINTAIN.md b/MAINTAIN.md
index d65337f92b..a587425f57 100644
--- a/MAINTAIN.md
+++ b/MAINTAIN.md
@@ -98,6 +98,36 @@ These dependencies are "vendored" (inlined), we must update the sources manually
We may maintain forks, if we are waiting on upstream changes: https://github.com/neovim/neovim/wiki/Deps
+CI
+--------------
+
+### General
+
+As our CI is primarily dependent on GitHub Actions at the moment, then so will
+our CI strategy be. The following guidelines have worked well for us so far:
+
+* Never use a macOS runner if an Ubuntu or a Windows runner can be used
+ instead. This is because macOS runners have a [tighter restrictions on the
+ number of concurrent jobs](https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits).
+
+### Runner versions
+
+* For special-purpose jobs where the runner version doesn't really matter,
+ prefer `-latest` tags so we don't need to manually bump the versions. An
+ example of a special-purpose workflow is `labeler.yml`.
+
+* For our testing jobs, which is currently only `ci.yml`, prefer to use the
+ latest stable (i.e. non-beta) version explicitly. Avoid using the `-latest`
+ tags here as it makes it difficult to determine from an unrelated PR if a
+ failure is due to the PR itself or due to GitHub bumping the `-latest` tag
+ without our knowledge. There's also a high risk that automatic bumping the CI
+ versions will fail due to manual work being required from experience.
+
+* For our release job, which is `release.yml`, prefer to use the oldest stable
+ (i.e. non-deprecated) versions available. The reason is that we're trying to
+ produce images that work in the broadest number of environments, and
+ therefore want to use older releases.
+
See also
--------