Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Self-Hosted Runners in GitHub Actions

Introduction

Self-hosted runners in GitHub Actions allow you to run your CI/CD workflows on your own infrastructure, providing flexibility, control, and potentially lower costs for build and deployment tasks.

Key Concepts

What is a Runner?

A runner is a server that listens for jobs and runs them when they're triggered by GitHub Actions. Runners can be either GitHub-hosted or self-hosted.

Benefits of Self-Hosted Runners

  • Control over the environment
  • Custom hardware and software configurations
  • Cost savings on build minutes

Setup

Follow these steps to set up a self-hosted runner:

  1. Go to your GitHub repository.
  2. Navigate to Settings > Actions > Runners.
  3. Click on Add runner.
  4. Select the operating system and follow the instructions to download the runner application.
  5. Run the configuration command provided by GitHub to register the runner.
  6. Start the runner with the command provided in the setup.

Example Configuration Command

./config.sh --url https://github.com/OWNER/REPO --token YOUR_TOKEN

Creating a Workflow

To utilize the self-hosted runner in your workflow, specify the runner's labels in your GitHub Actions YAML file:

name: CI
on: [push]
jobs:
  build:
    runs-on: self-hosted
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Run a script
        run: ./run-my-script.sh

Best Practices

Always keep your runner software updated to avoid security vulnerabilities.

  • Use dedicated runners for sensitive tasks.
  • Monitor runner performance and logs regularly.
  • Implement security measures to restrict access.

FAQ

What is the difference between GitHub-hosted and self-hosted runners?

GitHub-hosted runners are managed by GitHub and come pre-installed with software. Self-hosted runners are managed by you, allowing for custom configurations.

Can I use self-hosted runners for private repositories?

Yes, self-hosted runners can be used for both public and private repositories.

Are there any limitations on self-hosted runners?

Self-hosted runners may have limitations based on your infrastructure and network settings, but they generally offer more flexibility compared to GitHub-hosted runners.