This repository has been archived by the owner on Aug 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
Thoughts about the future of Unified CI #514
Comments
github-project-automation
bot
moved this to 🤔 Triage
in InterPlanetary Developer Experience
Apr 8, 2023
This was referenced Jun 23, 2023
3 tasks
This was referenced Jul 4, 2023
Thanks for writing this up @galargh . What would be your primary before/after metrics you would look at to gauge the impact of this endeavor? |
|
https://github.com/pl-strflt/uci is out! I'm going through the issues now, transferring what's relevant, and I'll archive this repo soon. |
github-project-automation
bot
moved this from 🤔 Triage
to 🥳 Done
in InterPlanetary Developer Experience
Aug 28, 2023
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Unified CI 2.0 - the vision doc
TLDR
web3-bot
becomesdependabot
for Unified CI workflow distribution and continuous updates. It is easier to enroll new repositories. It is possible to customise Unified CI workflows directly in the workflow definition YML becauseweb3-bot
understands the file structure.web3-bot
is helpful and can suggest updating not only reusable workflow versions, but also inputs or triggers.web3-bot
respects repository owners wishes and their past choices.Releases
Versioning
Unified CI repository is properly versioned using the semver scheme. Versions use
vX.Y.Z
format. The current version is stored in theCHANGELOG.md
file.Branching
There is a release branch for each version in the format of
release/vX.Y.Z
.New release branches that follow the chronological order are created from the
master
branch.The
master
branch is the default branch for the repository and this is where all the development happens.Out of order release branches are created from the previous release branch.
Tagging
Tags are created for each release branch.
Releases that follow the chronological order are tagged with
vX.Y.Z
,vX.Y
andvX
tags.Out of order releases are tagged with
vX.Y.Z
andvX.Y
tags if they break the order of minor versions, and withvX.Y.Z
,vX.Y
andvX
if they break the order of major versions.Example Timeline
Entities
Unified CI is a source of reusable workflows, actions and workflow templates.
Workflow Templates
Workflow Templates defined in the Unified CI repository are allowed to only reference Reusable Workflows. They cannot define any steps themselves.
References to Reusable Workflows should use proper version tags.
Reusable Workflows
Reusable Workflows defined in the Unified CI repository are the core of what makes Unified CI Unified CI. They define the logic we think should be executed in each PL repository.
References to Actions should use either proper version tags or commit SHAs.
Whenever possible, reusable workflows should use optional inputs.
Actions
Actions defined in the Unified CI repository help deduplicate common patterns seen across multiple Reusable Workflows. They can also serve as helper actions which could help repository owners enrich their Unified CI experience.
Whenever possible, actions should use optional inputs.
Enrollment
To enroll a repository in Unified CI all one has to do is to ensure
web3-bot
has write access to the repository.Similarly, to opt-out of Unified CI, it is enough to revoke access to
web3-bot
.Delivery
New Workflows
If a workflow is not defined in a target repository yet,
web3-bot
should suggest adding it to the reposiotry by creating it from Unified CI Workflow Template. If the suggestion is rejected by the repository owner,web3-bot
should remember it and not suggest adding such workflow again.Existing Workflows
If a workflow is already defined in the target repository,
web3-bot
should only suggest modifying the workflow. The allowed modifications are:Not all modifications will be applicable for all releases -
web3-bot
should be smart enough to know when a modification suggestion is not needed. All rejected modifications should be remembered.Retiring Workflows
If a workflow is not needed anymore,
web3-bot
should suggest removing a workflow from the target repository. It should do it at most once.Language Upgrades
web3-bot
should perform language version upgrades separately from workflow upgrades. If a workflow cannot be made version agnostic, it should accept version as input. Then, language upgrades fromweb3-bot
will also upgrade the version passed on reusable workflow input.Automerge
web3-bot
should continue automerging PRs made by itself unless specifically told not to. It should beweb3-bot
who performs the merge operation.Other
web3-bot
should respect the version precision the reusable workflows are requested withweb3-bot
could be silencableweb3-bot
could be a GitHub App for increased rate limitsweb3-bot
could support a configuration file per repositoryweb3-bot
should be inspired bydependabot
web3-bot
should spread its operations in time (rate limits, less workflow runs started at the same time)web3-bot
should use information about repository language to figure out what to propose for a repositoryWhy?
The text was updated successfully, but these errors were encountered: