Maintainers

Maintainers

GitHub configuration

All repositories are configured with two rulesets:

  • default: Protect the default branch

  • default-yocto: Does the same as default but also protect LTS branches: wrynose,scarthgap and kirkstone

  • disable branches and merge for members: Avoid members pushing branches and merging PRs

Ansible have an additional ruleset because of the legacy branches (debian-main, debiancentos, yocto_legacy)

Ansible, build_debian_iso, yocto_bsp and meta-seapath have an additional CI ruleset for the CI

Release procedure

For a new vX.Y.Z release:

Pre-release stage (before validation test)

Cockpit images bump

Yocto images bump

  • Bump SEAPATH Yocto distribution version

    • If not already done, bump python3-setup-ovs, python3-vm-manager python3-svtrace and cockpit plugins in recipes-seapath:

      • SRCREV

      • Version in recipe file name for python3-setup-ovs and python3-vm-manager

  • Change the version in SEAPATH distro files for SEAPATH Yocto

Installer

Currently, the seapath-live-installer will not build until the seapath-installer release is made on GitHub.
We should re-think the live-installer CI in the future. For now, you can force merge.

Validation tests

Generate all SEAPATH images (Debian, Yocto) and installer using a manual trigger on https://github.com/seapath/.github/actions/workflows/build-release.yml.

This will make all images accessible on http://releases.seapath.org/builds/ after around 2h of build.

Yocto cluster

  • Clone the SEAPATH virtual cluster repository: https://github.com/seapath/virtual-cluster

  • Ensure all the prerequisites are met (see the README file)

  • Inside the virtual-cluster repository, clone the SEAPATH Ansible repository with the Git reference that will be the release

  • Fetch the SEAPATH Yocto hypervisor VM qcow2 release file from the releases.seapath.org repository

  • Ensure that your SSH public keys are configured with the published SEAPATH SSH public key

  • Configure the Terraform variable file with the path to your SEAPATH virtual hypervisor image:

cp terraform.tfvars.example terraform/terraform.tfvars sed -i 's|^base_image_path = ".*"|base_image_path = "/path-to-your-image"|' terraform/terraform.tfvars
  • Configure virtual hypervisors and start them using the following commands:

make init make apply make start make ansible-ping
  • Test that each virtual hypervisor are running:

make ansible-ping
  • Run the full SEAPATH setup:

make ansible-setup ANSIBLE_REPO=/path/to/ansible

 

TODO: change this section after virtual cluster

  • Flash and validate cluster hypvervisors and observer

    • Flash a SEAPATH cluster: 2 hypervisors and 1 observer

    • Boot the newly flashed machine, check that it is reachable from SSH

    • Run Ansible setup on the SEAPATH cluster

      • Set up the Ansible inventory for the cluster

      • Configure the cluster cqfd run ansible-playbook --limit cluster_machines playbooks/seapath_setup_main.yaml

    • Check that cukinia tests succeed on hypervisors and observer : sudo cukinia && sudo cukinia /etc/cukinia/cukinia-cluster.conf

  • Deploy and validate SEAPATH guest VM in a cluster

    • Using the SEAPATH guest VM previously built, deploy it in the cluster

      • cqfd run ansible-playbook playbooks/deploy_vms_cluster.yaml -i <path-to-inventory>

    • Open a console in the VM (vm-mgr console or via SSH)

    • Check that cukinia tests succeed: sudo cukinia

    • Test VM migration

      • sudo crm ressource move <vm-name> <destination-node>

Yocto standalone

Debian (cluster and standalone)

Note that the cluster part may be subject to changes once virtual cluster is ready

Installer empty

Installer bundled

  • Recover the bundled installer from the last http://releases.seapath.org/builds/

  • Test all images present in the bundled version of the installer

    • Flash

    • Boot

    • Verify SSH key

    • Verify DHCP and static IP for at least one image

Release stage (once validation passed)

repo-manifest

  • Recover the repo manifest from the last http://releases.seapath.org/builds/

  • Use this vX.Y.Z.xml file as default manifest

  • tag the repo-manifest repository

  • Revert the default repo-manifest

Installer

  • Tag with vX.Y.Z and release seapath-installer

    • It will automatically add the .deb to the release

  • Tag with vX.Y.Z and release seapath-live-installer

    • It will automatically add the empty installer to the release

  • Add bundled installer to cloudfare

Tag repositories

  • tag these repositories with vX.Y.Z:

    • ansible

    • build_debian_iso

    • yocto_bsp

    • meta-seapath

    • vm_manager

    • python3-setup-ovs

Create releases

  • Create release and write release notes for

    • ansible (it automatically uploads ansible galaxy release)

    • build_debian_iso

    • yocto_bsp

  • Add artifacts in releases

    • ansible (TODO tar.gz)

  • In this of none bug fixes version create the issue label tag in wanted repos.

    • Name: vX.Y.Z

    • Description: Version vX.Y.x issues.

    • Color: use the same color from all repos

    • Example of gh command: gh label create v2.0 --description "Version v2.0.x issues." --color ccda67

    • Repos:

      • yocto_bsp

      • meta-seapath

      • vm_manager

      • python3-setup-ovs

      • ansible

      • build_debian_iso

      • cockpit-cluster-dashboard

      • cockpit-cluster-vm-management

      • cockpit-update

      • virtual-cluster

  • Write a wiki page with all the release note