Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add self-hosting documentation #419

Merged
merged 66 commits into from
Nov 16, 2023
Merged

Conversation

cloudymax
Copy link
Member

@cloudymax cloudymax commented Sep 10, 2023

Overview

This PR adds support for self-hosting GameCI runners and provides base-level resources necessary to resolve the following issues:

Features

Supported platforms:

  • x86 / AMD64

Supported CI/CD Services:

  • Github
  • Gitlab
  • Local Docker

Supported Host Operating Systems:

  • Ubuntu 22.04 LTS Server
  • Debian 12 Bookworm Server

Supported Guest Operating Systems:

  • Windows 10
  • Windows Server 2022
  • Ubuntu 22.04+
  • Debian 12+
  • MacOS 11+

Supported Virtualization Tools:

  • QEMU
  • Multipass

Additional Information

  • Kubernetes and Cloud-Runner support has been moved to a new branch and will be released at a later date.

  • This guide details the host requirements and process to enable GPU support for NVIDIA devices. This will not be fully functional with GameCI until test-runner and builder are updated.

@github-actions
Copy link

Cat Gif

@cloudymax cloudymax added documentation Improvements or additions to documentation enhancement New feature or request labels Sep 10, 2023
@cloudymax cloudymax self-assigned this Sep 10, 2023
Copy link
Member

@webbertakken webbertakken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work! 🧡

Added some comments to get the docs in a more consistent state, compared with existing docs.

docs/12-self-hosting/01-getting-started.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/01-getting-started.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/01-getting-started.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/01-getting-started.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/01-getting-started.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/02-ubuntu-setup.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/02-ubuntu-setup.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/03-github-actions.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/03-gitlab-pipelines.mdx Outdated Show resolved Hide resolved
docs/12-self-hosting/03-virtual-machines.mdx Outdated Show resolved Hide resolved
@cloudymax
Copy link
Member Author

Awesome work! 🧡

Added some comments to get the docs in a more consistent state, compared with existing docs.

Thanks a ton for the suggestions! I think you're spot-on with most of them.

I'll get these addressed and merged after work today!

@cloudymax cloudymax changed the title Begin adding self-hosting documentation Add self-hosting documentation Sep 22, 2023
@cloudymax cloudymax changed the base branch from self-hosting-docs to main November 1, 2023 09:45
@GabLeRoux GabLeRoux self-requested a review November 1, 2023 21:29
docs/12-self-hosting/01-overview.mdx Outdated Show resolved Hide resolved
[Kaniko](https://github.com/GoogleContainerTools/kaniko) or
[Kata Containers](https://katacontainers.io/).

## Constraints
Copy link
Member

@GabLeRoux GabLeRoux Nov 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before talking about constraints and requirements, I think it would be interesting to also add a disclaimer about security and Prerequisites Knowledge.

Here's a draft


Security Disclaimer

This guide strives for best security practices, yet the evolving nature of threats demands user vigilance. Conduct your own security assessments and stay updated with best practices.

Prerequisites Knowledge

Users should be familiar with basic Linux commands and have a basic grasp of CI/CD concepts. New to these? Seek beginner resources to build a foundation before continuing in this path.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added in commit 1b6d057

docs/12-self-hosting/03-host-creation/02-bare-metal.mdx Outdated Show resolved Hide resolved
-bios /usr/share/ovmf/OVMF.fd \
-usbdevice tablet \
-vnc $HOST_ADDRESS:$VNC_PORT
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we should change something here, mostly an observation: These two scripts seem very similar, the - Create new guest: example only have -cdrom $IMAGE_NAME \ as a difference.

This might be a discussion for the future, but there seem to be quite a few scripts in the self-hosted docs. I started wondering if it would be easier to have a repository with scripts that are ready to use instead of relying on users having to copy everything on their own? This can definitely be done in the future btw.

Copy link
Member Author

@cloudymax cloudymax Nov 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed they are similar, the major change is that the ISO is no longer passed into the VM when booting an existing VM to bypass any issues that may be caused if the machine tried to re-install over-top of your existing data.

I tried to approach these docs in a more "Medium Article / Substack blog" style as to absolved GameCI of having to directly miantain/host a fully-fledged piece of software. This was done based on some previous conversations in discord that trended towards gameci NOT taking ownership of new code as much as possible.

As a result, the docs are now written as a blog-style walkthrough that has pulled the important bits out of some existing software.

Heres where all the QEMU examples come from:

And heres where the Multipass examples come from:

I'm happy to donate the code to GameCI (with proper docs created of course) if that's preferable but that's something we'd need to get buy-in for from the rest of the team.

@GabLeRoux
Copy link
Member

Amazing work 🤯

@cloudymax
Copy link
Member Author

@GabLeRoux thanks so much for your feedback, I've been preoccupied with paperwork for a new job and a bit ill this week but I'll get your changes integrated as soon as I can. 🙌

@cloudymax cloudymax merged commit cd8711e into game-ci:main Nov 16, 2023
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants