A self-hosted GitHub runner is a machine (physical or virtual) that you set up and manage to run GitHub Actions workflows. A self-hosted runner differs from the default GitHub-hosted runners in that it runs on infrastructure that you control. Self-hosted runners can be physical, virtual, in a container, on-premises, or in a cloud. To learn more about GitHub runner, please click here.
Advantages of self-hosted runners:
- full control over the environment and tools
- Any size machine or configuration
- Secure access and networking
Pre-requisites:
- Project configured in GitHub
- workflow yaml already checked-in GitHub. If you don't have one, click here to create one.
- Create a virtual machine with at least 2 GB RAM. we will use EC2 instance in AWS cloud.
- Install Maven on runner EC2 instance
How to create self-hosted GitHub Actions Runner?
Go to GitHub Repo--> Actions --> Runners
Perform update
Install Maven in Runner EC2 as We will be doing Maven build for Java project
sudo apt install maven -y
Execute below commands in your virtual machine to configure runner.
Download installables
# Create a folder
mkdir actions-runner && cd actions-runner
# Download the latest runner package
curl -o actions-runner-linux-x64-2.313.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.313.0/actions-runner-linux-x64-2.313.0.tar.gz
# Extract the installer
tar xzf ./actions-runner-linux-x64-2.313.0.tar.gz
Configure the runner
./config.sh --url https://github.com/akannan1087/myJan2024WeekdayRepo --token Token
Enter the name of the runner group to add this runner to: [press Enter for Default]
press enter default for the runner group
Enter name of the runner
MyRunner1
Enter any additional labels
MyRunner1
Now run the runner
./run.sh
this confirms that runner is setup and running fine. waiting for the jobs.
you can also view in GitHub under Runners tab:
Create a workflow or modify your workflow to include GitHub runner:
name: Build a WAR file using Maven
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
distribution: 'adopt'
java-version: '11'
- name: Build with Maven
run: mvn clean install -f MyWebApp/pom.xml
No comments:
Post a Comment