This repository contains a Dockerfile that builds a Docker image suitable for running a [self-hosted GitHub runner].
You can build this image yourself, or use the Docker image from the Docker Hub.
docker build -t github-runner .
Register a runner to a repository.
docker run --name github-runner \
-e GITHUB_OWNER=username-or-organization \
-e GITHUB_REPOSITORY=my-repository \
-e GITHUB_PAT=[PAT] \
rkdixit03/github-runnerRegister a runner with github token.
docker run --name github-runner \
-e GITHUB_OWNER=username-or-organization \
-e GITHUB_REPOSITORY=my-repository \
-e GITHUB_TOKEN=[github.token] \
rkdixit03/github-runnerCreate an organization-wide runner.
docker run --name github-runner \
-e GITHUB_OWNER=username-or-organization \
-e GITHUB_PAT=[PAT] \
rkdixit03/github-runnerSet labels on the runner.
docker run --name github-runner \
-e GITHUB_OWNER=username-or-organization \
-e GITHUB_REPOSITORY=my-repository \
-e GITHUB_PAT=[PAT] \
-e RUNNER_LABELS=comma,separated,labels \
rkdixit03/github-runnerInstall additional tools on the runner.
docker run --name github-runner \
-e GITHUB_OWNER=username-or-organization \
-e GITHUB_REPOSITORY=my-repository \
-e GITHUB_PAT=[PAT] \
-e ADDITIONAL_PACKAGES=firefox-esr,chromium \
rkdixit03/github-runnersecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: github-secret
stringData:
GITHUB_PAT: ghp_XXXXXXXXXXXXkubectl apply -f ./secret.yamlKubernetes.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: github-runner
labels:
app: github-runner
spec:
replicas: 2
selector:
matchLabels:
app: github-runner
template:
metadata:
labels:
app: github-runner
spec:
containers:
- name: github-runner
image: rkdixit03/github-runner:latest
env:
- name: GITHUB_OWNER
value: rkdixit03
- name: GITHUB_PAT # stored separately in a Kubernetes secret
valueFrom:
secretKeyRef:
name: github-secret
key: GITHUB_PATDeploy changes in K8s
kubectl apply -f Kubernetes.yamlCheck deployment status
kubectl get deploymentCheck number of Pods deployed
kubectl get podsTo test out the things in local, Install Minikube + hyperkit(or Virtual VM) and apply changes there.
Start Minikube
minikube start --vm-driver=hyperkit --alsologtostderrNow, apply above mentioned changes.