hosting/gitea/act-runner.md

2.6 KiB

Deploying Action Runners

Releases

Gitea publishes binary releases of gitea/act_runner for many platform and architectures, which can be used to deploy new action runners simply.

The following example uses gitea/act_runner 0.2.6 on macOS Ventura 13.3 x64.

Registration Token

Note: Runners can be registered globally for an entire Gitea instance, for a specific organization, or for a single repo. This example assumes registering the runner globally.

Before executing the runner, first obtain a registration token by visiting http://gitea.local:3000/admin/actions/runners, clicking the 'Create new Runner' button, and copying the displayed registration token, for example, FTyMBkcK9ErmD0wm8LfBzfXOUUlQA7dBJF6BB64Z.

Runner Registration and Startup

After you have obtained a registration token, download the gitea/act_runner release matching your platform and architecture and run it as follows:

# Download latest gitea/act_runner release.
$ wget https://gitea.com/gitea/act_runner/releases/download/latest/act_runner-0.2.6-darwin-amd64 && chmod a+x act_runner-0.2.6-darwin-amd64

# Register the runner with the Gitea instance.
$ ./act_runner-0.2.6-darwin-amd64 register \
    --instance http://gitea.local:3000 \
    --labels 'darwin-latest-amd64:host,darwin-13-amd64:host' \
    --name 'darwin-amd64-001' \
    --token "FTyMBkcK9ErmD0wm8LfBzfXOUUlQA7dBJF6BB64Z" \
    --no-interactive

# Launch it in daemon mode, waiting for jobs.
$ ./act_runner-0.2.6-darwin-amd64 daemon

Labels

The most important detail in this example is the label. For the Ubuntu runner which is deployed automatically with this project, the label ubuntu-latest:docker://cerc/act-runner-task-executor:local is used, which instructs gitea/act_runner that tasks should be executed inside an instance of the cerc/act-runner-task-executor:local Docker container. In this example, the label is darwin-latest-amd64:host. This means that tasks will be executed directly on the host. Since there are additional security implications when executing tasks on the host, only trusted repositories with strict access controls should be allowed to schedule CI jobs on the runner.

Example Workflow

This very simple workflow will schedule jobs on both macOS (darwin-latest-amd64) and Linux (ubuntu-latest) runners.

name: macOS test

on:
  push:
    branches:
      - main

jobs:
  test-macos:
    name: "Run on macOS"
    runs-on: darwin-latest-amd64
    steps:
      - name: "uname"
        run: uname -a
  test-linux:
    name: "Run on Ubuntu"
    runs-on: ubuntu-latest
    steps:
      - name: "uname"
        run: uname -a