Skip to content

Commit

Permalink
GITBOOK-35: change request with no subject merged in GitBook
Browse files Browse the repository at this point in the history
  • Loading branch information
dgibbs64 authored and gitbook-bot committed Oct 1, 2023
1 parent a9a53bd commit 1084bf9
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 53 deletions.
5 changes: 2 additions & 3 deletions SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
# Table of contents

* [Home](README.md)
* [Programming Language](programming-language.md)

## Getting Started

* [Getting Started](getting-started/feature-development-quick-guide.md)
* [Programming Language](getting-started/programming-language.md)
* [Development Software](getting-started/development-software.md)
* [Test Environment](getting-started/test-environment.md)
* [Developer Commands](getting-started/developer-commands.md)
* [Developing LinuxGSM](getting-started/developing-linuxgsm.md)
* [Adding a new Game Server](getting-started/adding-a-new-game-server.md)

## Workflow
Expand All @@ -28,7 +27,7 @@
* [Commands](technical/commands.md)
* [Exit Codes](technical/exit-codes.md)
* [Functions](technical/functions.md)
* [Modules](technical/modules/README.md)
* [Modules](technical/modules.md)
* [Fixes](technical/modules/fixes.md)
* [Core](technical/modules/core.md)
* [Game Server Querying](technical/game-server-querying.md)
Expand Down
9 changes: 9 additions & 0 deletions getting-started/developer-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ This command also enables dev debug that outputs everything LinuxGSM is doing to
./gameserver dev
```

### Detect Details

Detects variables that are set up to be displayed in details.

```
./gameserver detect-details
./gameserver ddt
```

### Detect Dependencies

Detects dependencies the server requires by checking the contents of `serverfiles`. The output suggests the install command required.
Expand Down
19 changes: 0 additions & 19 deletions getting-started/developing-linuxgsm.md

This file was deleted.

23 changes: 15 additions & 8 deletions getting-started/feature-development-quick-guide.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
# Getting Started

<figure><img src="../.gitbook/assets/LinuxGSM_github_header.jpg" alt=""><figcaption></figcaption></figure>

## Intro

This guide will give a brief overview of how to get started developing LinuxGSM by running through some of the basics of using GitHub and the tools you need. This is not a comprehensive guide to GitHub but should help with getting started. There are plenty of resources available online such as the [GitHub help documentation](https://help.github.com/en/github) and [guides](https://guides.github.com/) that will help you learn more.

## Choosing an Issue to Develop

Whenever someone raises a new feature request or bug is done on the [GitHub Issues](https://github.com/GameServerManagers/LinuxGSM/issues) page. There is a raft of issues with different levels of complexity. Choosing an issue to work on is down to you as an individual, however, it is important you enjoy working on it. It is recommended that a simple issue is picked first and more complex issues are attempted as you get used to LinuxGSM. Popular issues to attempt are [type:Server Requests](https://github.com/GameServerManagers/LinuxGSM/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+server+request%22) as often developers want to have a game server added to the project. Be warned however some game servers can be more difficult than others to develop.
Whenever someone raises a new feature request or bug is done on the [GitHub Issues](https://github.com/GameServerManagers/LinuxGSM/issues) page. There is a raft of issues with different levels of complexity. Choosing an issue to work on is down to you as an individual, however, it is important you enjoy working on it.&#x20;

To help filter issues GitHub uses [labels](https://help.github.com/en/github/managing-your-work-on-github/about-labels) to help identify the types of issues. Common labels include `type:bug`, `type:feature`, `command:monitor`, `game: 7 Days to Die`. Labels are split into label types such as type, command, game, info etc to assist in triage.
When reviewing an issue it is a good idea to look at factors such as complexity, scope, and time to develop.&#x20;

## Starting Development
It is recommended that a simple issue is picked first as they are more likley to be merged quickly.

Popular issues to attempt are [type:Server Requests](https://github.com/GameServerManagers/LinuxGSM/issues?q=is%3Aissue+is%3Aopen+label%3A%22type%3A+server+request%22) as often developers want to have a game server added to the project. Be warned however some game servers can be more difficult than others to develop.

To begin working on LinuxGSM you need to [fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the LinuxGSM repository once forked you will need to [clone](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github) your new repository to your local machine using your chosen git client. Once cloned it is possible to edit the code on your local machine using your text editor of choice.
To help filter issues GitHub uses [labels](https://help.github.com/en/github/managing-your-work-on-github/about-labels) to help identify the types of issues. Common labels include `type:bug`, `type:feature`, `command:monitor`, `game: 7 Days to Die`. Labels are split into label types such as type, command, game, and info to aid in prioritising and managing them.

## Starting Development

It is recommended you create a [branch](/@linuxgsm/s/linuxgsm-dev/branching) to develop your code. The branch should use the Gitflow methodology and should be named `feature/[featurename]`.
To begin working on LinuxGSM you need to [fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the LinuxGSM repository once forked you will need to [clone](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository-from-github) your new repository to your local machine using your chosen git client. Once cloned it is possible to edit the code on your local machine using your text editor of choice.

Once a change has been made and saved the change will need to be committed to your local repo. When using commit it is important to leave a useful message to describe the change, this is covered in [Conventional Commits](/@linuxgsm/s/linuxgsm-dev/conventional-commits). When you are ready to send your commits to your remote fork you will need to [push ](https://help.github.com/en/github/using-git/pushing-commits-to-a-remote-repository)the updates.
It is recommended you create a [branch](../@linuxgsm/s/linuxgsm-dev/branching/) to develop your code. The branch should use the Gitflow methodology and should be named `feature/[featurename]`.

##
Once a change has been made and saved the change will need to be committed to your local repo. When using commit it is important to leave a useful message to describe the change, this is covered in [Conventional Commits](../@linuxgsm/s/linuxgsm-dev/conventional-commits/). When you are ready to send your commits to your remote fork you will need to [push ](https://help.github.com/en/github/using-git/pushing-commits-to-a-remote-repository)the updates.

##
##

##
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Programming Language

![](.gitbook/assets/68747470733a2f2f63646e2e7261776769742e636f6d2f6f64622f6f6666696369616c2d626173682d6c6f676f2f6d617374.png)
![](../.gitbook/assets/68747470733a2f2f63646e2e7261776769742e636f6d2f6f64622f6f6666696369616c2d626173682d6c6f676f2f6d617374.png)

LinuxGSM is written in [Bourne-Again Shell](https://en.wikipedia.org/wiki/Bash\_\(Unix\_shell\)) (BASH) Script sometimes just known as Shell Script.

Expand Down
46 changes: 24 additions & 22 deletions getting-started/test-environment.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,62 @@
# Test Environment

LinuxGSM runs on Linux \(obviously\) and as such requires a Linux test environment to test game servers and code. If you are running a LInux desktop then you can run LinuxGSM using your desktop. However, Most developers will be running Windows but there are multiple ways to create a Linux test environment.
LinuxGSM is designed to run on Linux, and therefore, a Linux test environment is essential for testing game servers and code changes. Whether you're already using a Linux desktop or primarily work on Windows, there are multiple ways to create a suitable Linux test environment. Additionally, if you are using Windows, you can leverage Windows Subsystem for Linux (WSL) to streamline your development process.

## Distro

LinuxGSM is primarily developed on Debian-based distros but is also tested to work on RedHat-based distros. Keep in mind that different distributions and versions may have varying versions of BASH and other dependencies. Ensure that your chosen distribution is still officially supported by the vendor and that it's compatible with the game server you intend to work with.

## Selecting a Test Environment

There are mulitple ways to setup a test enviroment.
### **Using a Linux Desktop**

### Distro
If you're already using a Linux desktop, you can run LinuxGSM directly on your desktop environment. This approach simplifies the setup process since LinuxGSM is natively compatible with Linux distributions.

LinuxGSM is primarily developed on Ubuntu but also tested to work on CentOS and Debian. Different versions of a distro will also have different versions of BASH etc. So be mindful of newer features that might not be available on older supported distros. In general, LinuxGSM will support distros that are still officially supported by the vendor but is also reliant on if the Game Server also supports the distro. See [distro](https://docs.linuxgsm.com/linux/distro) for more info.
### **Windows with WSL**

### Virtual Machine
For developers using Windows, Windows Subsystem for Linux (WSL) provides an efficient way to create a Linux test environment without dual-booting or using virtual machines. You can install a Linux distribution of your choice via WSL and then proceed to set up LinuxGSM within that distribution.

Creating a virtual machine on a desktop or laptop is a good way to create a development environment. Using Virtual Box and downloading Ubuntu Server iso a test environment can be created quickly. However, to test internet functionality there may be a requirement to open ports on a home router.
### Virtual Machine

If spare computer hardware is available, setting up an ESXi or Xen Server may be a good option for a development environment.
Creating a virtual machine on your desktop or laptop is a versatile way to create a development environment. You can use tools like VirtualBox to download an Ubuntu Server ISO and quickly set up a test environment. Note that for testing internet functionality, you may need to configure port forwarding on your home router.

* [Virtual Box](https://www.virtualbox.org/) \(recommended\)
* [Virtual Box](https://www.virtualbox.org/)
* [VMware Player](https://www.vmware.com/uk/products/workstation-player.html)
* [ESXI Server](https://www.vmware.com/uk/products/esxi-and-esx.html)
* [Xen](https://xenproject.org/)
* [Proxmox](https://www.proxmox.com/)

### Internet Server

VPS and dedicated servers can be rented relatively cheaply and is a good way to test LinuxGSM in the environment it is mostly used \(online\). There are several providers like Linode that provide servers from $5 p/m and allow the quick deployment of servers with different distros. Some game servers do have higher system requires than others so a more powerful VPS may be required.
Renting a virtual private server (VPS) or dedicated server can be an excellent choice for testing LinuxGSM in an online environment, which closely resembles how it's commonly used. Several providers offer cost-effective server options, making it accessible for testing purposes.

There are many providers to choose from but below LinuxGSM developers have used previously.
Notable providers include:

* [Linode](https://linode.com/)
* [Digital Ocean](https://www.digitalocean.com/)
* [OVHCloud](https://ovhcloud.com)
* [Oneprovider](https://oneprovider.com/)
* [Kimsufi](https://www.kimsufi.com/)

## **Testing Your Code**


At some point, you will need to test the code you have worked on. This can be done by downloading LinuxGSM and updating the repo and branch details to match your fork.

Login to your development environment and begin installing LinuxGSM
At some point, you will need to test the code you have worked on. This can be done by downloading LinuxGSM and updating the repo and branch details to match your fork.

#### Setup Testing Environment

Login to your develop environment and begin installing LinuxGSM.
Login to your development environment and begin installing LinuxGSM.

1. Create a user and log in.
1. Create a user and log in.

```text
```
adduser linuxgsm
```

```text
```
passwd linuxgsm
```

```text
```
su - linuxgsm
```

Expand Down Expand Up @@ -90,7 +93,7 @@ githubbranch="master"

Every time you push to remote it is possible to pull the changes to the test environment. This is done by using the development command `clear-functions`.

To use clear-functions activate development mode.
To use clear-modules activate development mode.

```bash
./gameserver development
Expand All @@ -99,6 +102,5 @@ To use clear-functions activate development mode.
Run the command.

```bash
./gameserver clear-functions
./gameserver clear-modules
```

File renamed without changes.

0 comments on commit 1084bf9

Please sign in to comment.