Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use self hosted github runner #85

Merged
merged 33 commits into from
Dec 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
4c93a75
add first pass self hosted runner
MialLewis Dec 15, 2023
74242a2
add default user
MialLewis Dec 15, 2023
d234c2a
create docker container
MialLewis Dec 15, 2023
c53187c
add runner name
MialLewis Dec 15, 2023
9fc5b2f
correct variable typo
MialLewis Dec 15, 2023
2de7e9b
add setup script
MialLewis Dec 15, 2023
4fddc86
add cleanup and correct paths
MialLewis Dec 15, 2023
ff24f5d
correct ansible task
MialLewis Dec 15, 2023
3bc14f1
add task to build dockerfile
MialLewis Dec 15, 2023
84ebec2
correct paths for dockerfile
MialLewis Dec 15, 2023
12e713b
correct build path
MialLewis Dec 15, 2023
31c4017
add dockerfile name
MialLewis Dec 15, 2023
a52eaec
add ext to dockerfile arg
MialLewis Dec 15, 2023
44f384f
run command without sudo
MialLewis Dec 15, 2023
5afc779
add non sudo user to run script
MialLewis Dec 15, 2023
0bbac2d
add handler to remove outdated image
MialLewis Dec 15, 2023
c80e145
split runner role
MialLewis Dec 15, 2023
265e7d5
flush handlers to trigger image deletion
MialLewis Dec 15, 2023
b192cb9
force absense of image
MialLewis Dec 15, 2023
ffc24e8
run script in users home
MialLewis Dec 15, 2023
9836247
add libicu to dockerfile
MialLewis Dec 15, 2023
f82ee04
change libicu n
MialLewis Dec 15, 2023
0486fdc
add http source to apt-get
MialLewis Dec 15, 2023
ae9b9a1
try new token
MialLewis Dec 15, 2023
b9f7441
change workflow to run on self hosted
MialLewis Dec 15, 2023
8ea06fe
add debug to see pwd
MialLewis Dec 15, 2023
638cdce
add debug to show dir contents
MialLewis Dec 16, 2023
d47ad35
exclude hidden dir from flake8
MialLewis Dec 16, 2023
1205811
use new runner token
MialLewis Dec 16, 2023
c44288c
update dockerfile
MialLewis Dec 17, 2023
4bd15a6
seperate run and setup scripts
MialLewis Dec 17, 2023
97a8b64
Revert "seperate run and setup scripts"
MialLewis Dec 17, 2023
b887f08
add new token
MialLewis Dec 17, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pr_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: push

jobs:
test:
runs-on: ubuntu-latest
runs-on: self-hosted
defaults:
run:
shell: bash -l {0}
Expand Down
1 change: 1 addition & 0 deletions config.flake8
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[flake8]
ignore = E114,E115,E116,E121,E123,E126,E133,E2,E704,E722,E741,E743,W503,F403,F405,F999
exclude =
.,
.git,
build,
buildconfig,
Expand Down
2 changes: 2 additions & 0 deletions runner/ansible/ansible.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[defaults]
remote_user=ubuntu
19 changes: 19 additions & 0 deletions runner/ansible/github-runner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- name: Deploy self-hosted github runner for vesuvio repository
hosts: all
vars:
package_updates_reboot: true # dannixon.system.package_updates

roles:
- role: dannixon.system.package_updates
tags: "initial-setup"
- role: dannixon.system.interactive_users
tags: "initial-setup"
- role: geerlingguy.docker
become: yes
tags: "initial-setup"
- role: host
become: yes
tags: runner
- role: runner
become: yes
tags: runner
2 changes: 2 additions & 0 deletions runner/ansible/inventory.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[all]
172.16.110.198 runner_name=vesuvio-runner
5 changes: 5 additions & 0 deletions runner/ansible/roles/host/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- name: Remove docker image
community.docker.docker_image:
state: absent
force_absent: true
name: vesuvio-runner
15 changes: 15 additions & 0 deletions runner/ansible/roles/host/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
- name: Copy setup script to host
copy:
src: setup/setup.sh
dest: /tmp/setup.sh
mode: '0755'

- name: Copy dockerfile to host
copy:
src: ../docker/runner.Dockerfile
dest: /tmp/runner.Dockerfile
mode: '0755'
notify:
- Remove docker image

- meta: flush_handlers
27 changes: 27 additions & 0 deletions runner/ansible/roles/runner/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
- name: Build docker image
community.docker.docker_image:
build:
path: /tmp/
dockerfile: runner.Dockerfile
name: vesuvio-runner
source: build

- name: Deploy dockerized github runner
community.docker.docker_container:
name: "{{ runner_name }}"
image: vesuvio-runner
detach: yes
init: yes
network_mode: host
recreate: yes
pull: no
shm_size: 512M
volumes:
- /tmp/setup.sh:/home/setup.sh
command: /home/setup.sh
user: nonroot

- name: Remove setup script
ansible.builtin.file:
path: /tmp/setup.sh
state: absent
7 changes: 7 additions & 0 deletions runner/ansible/setup/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#! /bin/bash
set -ex
mkdir /home/nonroot/actions-runner && cd /home/nonroot/actions-runner
curl -o actions-runner-linux-x64-2.311.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.311.0/actions-runner-linux-x64-2.311.0.tar.gz
tar xzf ./actions-runner-linux-x64-2.311.0.tar.gz
./config.sh --url https://github.com/mantidproject/vesuvio --token AWZQ65WBHOW75IEIVFMRX63FP6IBQ
./run.sh
11 changes: 11 additions & 0 deletions runner/docker/runner.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM ubuntu:focal-20231128

RUN apt-get update && apt-get install -y \
curl \
tar \
apt-transport-https \
libicu66 \
libglu1-mesa \
&& rm -rf /var/lib/apt/lists/*

RUN useradd -m nonroot