Skip to content

Notes for project maintainers

Daniel Martí edited this page Oct 6, 2023 · 31 revisions

Below is a random collection of notes for project maintainers.

Releases

A release is created by creating a semver tag in the GerritHub repository as a member of the CUE Super Admins group, such as Chief Cueckoo. This is most simply done via the Gerrit tag UI. This tag will then replicate to GitHub, at which point the release workflow will be triggered. This workflow is responsible for creating the release assets, Docker images etc. Release notes should then be manually added to the corresponding GitHub release, using cueckoo releaselog.

Making GerritHub config changes

Whilst some config changes can be made via the Gerrit UI, the majority cannot. Changes to Gerrit config files should be submitted for review in the usual way, but pushed for review against the meta/config branch.

Note that Gerrit exposes this branch as refs/meta/config on the remote, so git fetch will not fetch it alongside all other branches under refs/heads/* by default. The simplest solution to that is to configure your local git repository:

# Fetch all meta branches from the Gerrit "origin" remote as well.
git config --add remote.origin.fetch '+refs/meta/*:refs/remotes/origin/refs/meta/*'
# Fetch refs/meta/config for the first time.
git fetch origin

Then, send a CL like you usually would - just making sure that you start from meta/config rather than master or main.

# You can also use a similar command to create a local tracking branch, like with master or main.
git switch -c my_config_change origin/refs/meta/config

# Make config changes

git codereview change -s -a -m 'Important configuration changes'
git codereview mail

When you git codereview mail, GerritHub validates the configuration. If it is not valid for whatever reason, it will not accept the change.

Config changes can be approved by a member of the CUE Admins group but can only be submitted by a member of the CUE Super Admins group.

GitHub

The contribution guide describes the workflow for both Gerrit-based and GitHub PR-based contributions. The GerritHub repository is the source of truth for the CUE project, and as such GitHub PRs should not be merged. Rather, they must be imported via the GerritHub UI.

Pull Request workflow

Given that GerritHub is the source of truth, Pull Requests need to be imported into GerritHub to be submitted as part of the usual change workflow. It's generally easier for the contributor to participate in the Pull Request (familiar review-change process), and then have a CUE approver import and submit the Pull Request when it's ready.

To import a Pull Request, use cueckoo importpr as follows:

go install github.com/cue-sh/tools/cmd/cueckoo@latest
cueckoo importpr 123 # replacing 123 with the PR number to be imported
Clone this wiki locally