We can't find the internet
Attempting to reconnect
When creating a rust project, my ci system has encountered a CI problem.
The Github Actions can not finisht build, the process had taken too much resources.
To Fix this, I had to use a Self-Hosted Actions Runner.
Here is How to do this.
### 1. Create VM
Create an VM at host machine with 24-cores, 64GiB memory and 200GiB disk space.
Select OS with Ubuntu 22.04.
### 2. Prepare ENV
**Prepare**
```bash
ansible-playbook playbooks/ubuntu/update-apt.yml --extra-vars=host=github-runner
```
**Install**
```bash
apt install curl
apt install build-essential
apt install git
```
**Create User**
```bash
useradd -d /opt/actions-runner -M -N actions-runner
```
### 3. Install Action Runner
Go to page `https://github.com/organizations/gsmlg-dev/settings/actions/runners` and click `New Runner` Button, select new Self-Hosted Runner.
Go in to `/opt` folder and follow the `download` steps.
Wrap the config command with `su`
```bash
su actions-runner -c './config.sh --url https://github.com/gsmlg-dev --token <TOKEN>'
```
Full config options
```
Commands:
./config.sh Configures the runner
./config.sh remove Unconfigures the runner
./run.sh Runs the runner interactively. Does not require any options.
Options:
--help Prints the help for each command
--version Prints the runner version
--commit Prints the runner commit
--check Check the runner's network connectivity with GitHub server
Config Options:
--unattended Disable interactive prompts for missing arguments. Defaults will be used for missing options
--url string Repository to add the runner to. Required if unattended
--token string Registration token. Required if unattended
--name string Name of the runner to configure (default github-runner)
--runnergroup string Name of the runner group to add this runner to (defaults to the default runner group)
--labels string Extra labels in addition to the default: 'self-hosted,Linux,X64'
--local Removes the runner config files from your local machine. Used as an option to the remove command
--work string Relative runner work directory (default _work)
--replace Replace any existing runner with the same name (default false)
--pat GitHub personal access token with repo scope. Used for checking network connectivity when executing `./run.sh --check`
--disableupdate Disable self-hosted runner automatic update to the latest released version`
--ephemeral Configure the runner to only take one job and then let the service un-configure the runner after the job finishes (default false)
Examples:
Check GitHub server network connectivity:
./run.sh --check --url <url> --pat <pat>
Configure a runner non-interactively:
./config.sh --unattended --url <url> --token <token>
Configure a runner non-interactively, replacing any existing runner with the same name:
./config.sh --unattended --url <url> --token <token> --replace [--name <name>]
Configure a runner non-interactively with three extra labels:
./config.sh --unattended --url <url> --token <token> --labels L1,L2,L3
```
Test actions-runner is configured success.
```
su actions-runner -c ./run.sh
```
### 4. Create Service
```bash
# Install
./svc.sh install actions-runner
# start
./svc.sh start
# check status
./svc.sh status
```
### 5. Use Runner in Actions
Config in yaml
```yaml
runs-on: [self-hosted, linux, x64, hpc]
```
### 6. Add Envirionment to Runner
Edit file `/etc/systemd/system/multi-user.target.wants/actions.runner.<group>.<name>.service`, Add
```systemd
Environment=http_proxy=http://proxy-server:8080
Environment=https_proxy=http://proxy-server:8080
Environment=no_proxy=localhost,localnet
```