Achievements:

  • Documented all necessary steps to setup the testing environment on Windows 11
  • Created a GitHub workflow that successfully executes the following tasks:
  • cleanup test environment from the previous run, removing files and WSL distributions from the previous run
  • checkout latest version of the target repository's main branch
  • install all project dependencies
  • run the automated e2e test suites
  • upload the test artifacts in case of failure for debugging
  • All e2e test suites - 147 tests in total - passed in the last 2 runs of the created workflow

Link to Pull Request: https://github.com/rancher-sandbox/rancher-desktop/pull/3871/files

Findings:

  • WSL and kernel must be used in their in-box version, not downloaded from Microsoft Store, as the latter is installed as an appx, and as running GitHub actions as a service is not logged in full to a graphical session, making WSL doesn't work as expected
  • Github runner must log in the service as the local user's account instead of other users from the domain "nt authority"

Project Description

Rancher Desktop is an electron-based application relying on nested virtualization to run Kubernetes and Container Management resources locally on the desktop. It is supported on the 3 major platforms: Linux, MacOS and Windows. Regarding the Quality Assurance stage of the Software Development Lifecycle, there are technical challenges when it comes to running e2e tests on Windows via CI, as these tests are executed in a Windows Subsystem for Linux - WSL - distribution, which requires the CI to spin up a virtual Linux machine. Many workarounds were attempted to make it possible to expand the Quality Matrix to all three platforms, as Linux and MacOS are already supported. The goal of this project is to expand Rancher Desktop's e2e test automation via GitHub Actions in self-hosted Windows runners.

Goals for Hack Week 2022

  • To have a workflow successfully running e2e test suites in self-hosted Windows runners via GitHub Actions - ACHIEVED
  • Logging and monitoring workflow runs - ACHIEVED

Resources

Ideal project mates: Experience in running GitHub Actions on Windows, Experience with WSL

Project Repository: https://github.com/rancher-sandbox/rancher-desktop https://rancherdesktop.io/

This project is part of:

Hack Week 22

Activity

  • almost 2 years ago: mook_work joined this project.
  • almost 2 years ago: iguimaraes started this project.
  • almost 2 years ago: okurz liked this project.
  • almost 2 years ago: paulgonin liked this project.
  • almost 2 years ago: iguimaraes added keyword "wsl" to this project.
  • almost 2 years ago: iguimaraes added keyword "vm" to this project.
  • almost 2 years ago: iguimaraes added keyword "virtualization" to this project.
  • almost 2 years ago: iguimaraes added keyword "ci" to this project.
  • almost 2 years ago: iguimaraes added keyword "ci/cd" to this project.
  • almost 2 years ago: iguimaraes added keyword "github-ci" to this project.
  • almost 2 years ago: iguimaraes added keyword "github" to this project.
  • almost 2 years ago: iguimaraes added keyword "windows" to this project.
  • almost 2 years ago: iguimaraes added keyword "github_actions" to this project.
  • almost 2 years ago: iguimaraes added keyword "rancher_desktop" to this project.
  • almost 2 years ago: iguimaraes added keyword "self-hosted_runner" to this project.
  • almost 2 years ago: iguimaraes originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    Harvester Packer Plugin by mrohrich

    Description

    Hashicorp Packer is an automation tool that allows automatic customized VM image builds - assuming the user has a virtualization tool at their disposal. To make use of Harvester as such a virtualization tool a plugin for Packer needs to be written. With this plugin users could make use of their Harvester cluster to build customized VM images, something they likely want to do if they have a Harvester cluster.

    Goals

    Write a Packer plugin bridging the gap between Harvester and Packer. Users should be able to create customized VM images using Packer and Harvester with no need to utilize another virtualization platform.

    Resources

    Hashicorp documentation for building custom plugins for Packer https://developer.hashicorp.com/packer/docs/plugins/creation/custom-builders

    Source repository of the Harvester Packer plugin https://github.com/m-ildefons/harvester-packer-plugin


    SUSE KVM Best Practices by roseswe

    Description

    SUSE Best Practices around KVM, especially for SAP workloads. Early Google presentation already made from various customer projects and SUSE sources.

    Goals

    Complete presentation we can reuse in SUSE Consulting projects

    Resources

    KVM (virt-manager) images

    SUSE/SAP/KVM Best Practices

    • https://documentation.suse.com/en-us/sles/15-SP6/single-html/SLES-virtualization/
    • SAP Note 1522993 - "Linux: SAP on SUSE KVM - Kernel-based Virtual Machine" && 2284516 - SAP HANA virtualized on SUSE Linux Enterprise hypervisors https://me.sap.com/notes/2284516
    • SUSECon24: [TUTORIAL-1253] Virtualizing SAP workloads with SUSE KVM || https://youtu.be/PTkpRVpX2PM
    • SUSE Best Practices for SAP HANA on KVM - https://documentation.suse.com/sbp/sap-15/html/SBP-SLES4SAP-HANAonKVM-SLES15SP4/index.html


    Contribute to terraform-provider-libvirt by pinvernizzi

    Description

    The SUSE Manager (SUMA) teams' main tool for infrastructure automation, Sumaform, largely relies on terraform-provider-libvirt. That provider is also widely used by other teams, both inside and outside SUSE.

    It would be good to help the maintainers of this project and give back to the community around it, after all the amazing work that has been already done.

    If you're interested in any of infrastructure automation, Terraform, virtualization, tooling development, Go (...) it is also a good chance to learn a bit about them all by putting your hands on an interesting, real-use-case and complex project.

    Goals

    • Get more familiar with Terraform provider development and libvirt bindings in Go
    • Solve some issues and/or implement some features
    • Get in touch with the community around the project

    Resources


    Extending KubeVirtBMC's capability by adding Redfish support by zchang

    Description

    In Hack Week 23, we delivered a project called KubeBMC (renamed to KubeVirtBMC now), which brings the good old-fashioned IPMI ways to manage virtual machines running on KubeVirt-powered clusters. This opens the possibility of integrating existing bare-metal provisioning solutions like Tinkerbell with virtualized environments. We even received an inquiry about transferring the project to the KubeVirt organization. So, a proposal was filed, which was accepted by the KubeVirt community, and the project was renamed after that. We have many tasks on our to-do list. Some of them are administrative tasks; some are feature-related. One of the most requested features is Redfish support.

    Goals

    Extend the capability of KubeVirtBMC by adding Redfish support. Currently, the virtbmc component only exposes IPMI endpoints. We need to implement another simulator to expose Redfish endpoints, as we did with the IPMI module. We aim at a basic set of functionalities:

    • Power management
    • Boot device selection
    • Virtual media mount (this one is not so basic add-emoji )

    Resources


    Drag Race - comparative performance testing for pull requests by balanza

    Description

    «Sophia, a backend developer, submitted a pull request with optimizations for a critical database query. Once she pushed her code, an automated load test ran, comparing her query against the main branch. Moments later, she saw a new comment automatically added to her PR: the comparison results showed reduced execution time and improved efficiency. Smiling, Sophia messaged her team, “Performance gains confirmed!”»

    Goals

    • To have a convenient and ergonomic framework to describe test scenarios, including environment and seed;
    • to compare results from different tests
    • to have a GitHub action that executes such tests on a CI environment

    Resources

    The MVP will be built on top of Preevy and K6.


    Automate PR process by idplscalabrini

    Description

    This project is to streamline and enhance the pr review process by adding automation for identifying some issues like missing comments, identifying sensitive information in the PRs like credentials. etc. By leveraging GitHub Actions and golang hooks we can focus more on high-level reviews

    Goals

    • Automate lints and code validations on Github actions
    • Automate code validation on hook
    • Implement a bot to pre-review the PRs

    Resources

    Golang hooks and Github actions


    ddflare: (Dynamic)DNS management via Cloudflare API in Kubernetes by fgiudici

    Description

    ddflare is a project started a couple of weeks ago to provide DDNS management using v4 Cloudflare APIs: Cloudflare offers management via APIs and access tokens, so it is possible to register a domain and implement a DynDNS client without any other external service but their API.

    Since ddflare allows to set any IP to any domain name, one could manage multiple A and ALIAS domain records. Wouldn't be cool to allow full DNS control from the project and integrate it with your Kubernetes cluster?

    Goals

    Main goals are:

    1. add containerized image for ddflare
    2. extend ddflare to be able to add and remove DNS records (and not just update existing ones)
    3. add documentation, covering also a sample pod deployment for Kubernetes
    4. write a ddflare Kubernetes operator to enable domain management via Kubernetes resources (using kubebuilder)

    Available tasks and improvements tracked on ddflare github.

    Resources

    • https://github.com/fgiudici/ddflare
    • https://developers.cloudflare.com/api/
    • https://book.kubebuilder.io


    Automate PR process by idplscalabrini

    Description

    This project is to streamline and enhance the pr review process by adding automation for identifying some issues like missing comments, identifying sensitive information in the PRs like credentials. etc. By leveraging GitHub Actions and golang hooks we can focus more on high-level reviews

    Goals

    • Automate lints and code validations on Github actions
    • Automate code validation on hook
    • Implement a bot to pre-review the PRs

    Resources

    Golang hooks and Github actions