Compare commits

..
61 Commits
Author SHA1 Message Date
Marcus Young dbf917bdc9 Bump to version 2.267.1 2020-06-30 21:26:33 -05:00
Marcus Young 15bc90d41e Dummy commit to force latest rebuild 2020-06-29 15:27:35 -05:00
myoung34andGitHub 5f16e6caf2 Merge pull request #37 from Kreelio/feat/add-unzip
feat: add unzip to docker image
2020-06-29 13:29:23 -05:00
myoung34andGitHub c0b9c0300e Merge pull request #36 from aslafy-z/patch-1
fix(docs): quote boolean in docker-compose example
2020-06-29 13:29:00 -05:00
ZadkielandGitHub 4dc6700829 feat: add unzip to docker image 2020-06-29 20:19:31 +02:00
ZadkielandGitHub 3e492d23bd fix(docs): quote boolean in docker-compose example 2020-06-29 20:02:28 +02:00
Marcus Young d2f686e857 Bump to version 2.267.0 2020-06-23 13:42:18 -05:00
Marcus Young 18198af872 Fix docs a bit 2020-06-15 07:20:45 -05:00
myoung34andGitHub 03bd34f460 Merge pull request #31 from myoung34/develop
Optimize base
2020-06-12 09:26:06 -05:00
Marcus Young 210dcf0f84 Optimize base 2020-06-12 08:43:34 -05:00
Kevin JonesandGitHub fd49993401 Added RUNNER_WORKDIR mounting readme note
Fix for https://github.com/myoung34/docker-github-actions-runner/issues/27#issue-630231157
2020-06-03 12:22:58 -07:00
Marcus Young 1e12527d1b Fix deprecation warning for buildx-version 2020-05-31 15:17:45 -05:00
Marcus Young 7648aa4205 Add basic support for SIGTERM handling 2020-05-27 06:46:57 -05:00
Marcus Young 5c2992ba3f Fix _PROTO when repo_url not given 2020-05-27 06:13:53 -05:00
Marcus Young f0db7fd111 Actions hates me 2020-05-26 17:53:36 -05:00
Marcus Young 01aa45246c Add awscli into base 2020-05-26 17:52:36 -05:00
Marcus Young 3d44159889 Unset ACCESS_TOKEN|RUNNER_TOKEN after configure 2020-05-23 06:58:05 -05:00
Marcus Young 258480828a Add random default name with prefix 2020-05-21 16:26:51 -05:00
Marcus Young 48ee0c82d4 Bump to version 2.263.0 2020-05-21 15:43:07 -05:00
Marcus Young a3b5dc873d Add automatic release creation 2020-05-13 13:55:09 -05:00
myoung34andGitHub 632d9e59ad bump to 2.262.1 2020-05-12 15:32:17 -05:00
Marcus Young 3ef0c00503 Remove unneeded curl echo in entrypoint 2020-05-11 14:48:22 -05:00
Marcus Young 47144a0075 Bump to 2.262.0 2020-05-11 14:46:02 -05:00
Marcus Young 5080efc02c Test runsvc vs run.sh 2020-05-11 14:40:44 -05:00
myoung34andGitHub de737c2bff Merge pull request #20 from pirate/patch-2
Add docker-compose example setup
2020-04-28 06:49:34 -05:00
Nick SweetingandGitHub d3302f81d6 Add docker-compose example setup 2020-04-28 04:57:15 -04:00
myoung34andGitHub 94765718f8 Merge pull request #18 from EduMelo/master
Fixed REPO_URL setting without ACCESS_TOKEN
2020-04-27 06:18:06 -05:00
EduMelo 35e638434c Remove redundant line 2020-04-27 01:47:58 +00:00
EduMelo d0dfd51b8f Fixed REPO_URL setting without ACCESS_TOKEN 2020-04-26 23:02:35 +00:00
myoung34andGitHub 6bb8d76ea2 Merge pull request #17 from mvcaaa/patch-1
Update entrypoint.sh
2020-04-25 15:38:49 -05:00
Andrey AstashovandGitHub d18d41c831 Update entrypoint.sh
- Better formatting
- Added `--unattended` flag
2020-04-25 22:44:19 +03:00
myoung34andGitHub 449d82760a Update README.md 2020-04-25 08:02:00 -05:00
myoung34andGitHub f47c515abd Create FUNDING.yml 2020-04-25 08:00:07 -05:00
Marcus Young 5893376f9d Fix single quote in stage 2020-04-25 07:52:51 -05:00
Marcus Young a5497419bc Let ORG be inferred in base, fix escaping 2020-04-25 07:28:06 -05:00
Marcus Young a1590538ff update maintainer email in dockerfile 2020-04-25 07:23:48 -05:00
Marcus Young b6d79c9dfb Set base latest to eoan 2020-04-25 05:57:45 -05:00
myoung34andGitHub a794698340 Merge pull request #16 from pirate/patch-1
Fix inifinite loop on startup if runner was stopped and restarted
2020-04-25 05:34:16 -05:00
Marcus Young afec008f29 Fix old base to previously working non-base steps 2020-04-25 05:29:39 -05:00
Nick SweetingandGitHub c7e53fe739 fix tzdata requesting user input on build 2020-04-25 03:30:32 -04:00
Nick SweetingandGitHub 4ddf3ecf7b Fix inifinite loop on startup if runner was stopped and restarted 2020-04-25 03:15:07 -04:00
Marcus Young 499ec5be2b Fix maintainer to match github email 2020-04-24 22:10:32 -05:00
Marcus Young bf3b69b42c Fix cp in base xenial 2020-04-24 22:08:49 -05:00
Marcus Young 3d71db0489 Bump git to 2.26.2 to test pipelines 2020-04-24 22:04:39 -05:00
Marcus Young d94e9ac8ed Fix bad cp in new base 2020-04-24 21:23:43 -05:00
Marcus Young 4ad9ab74d2 Remove uneeded args from base 2020-04-24 21:21:18 -05:00
Marcus Young e1c417920c [wip] Split Docker container into 2 parts to make builds much faster 2020-04-24 21:18:52 -05:00
Marcus Young 9e91608d19 Add support for org runners with ORG_RUNNER=true,ORG_NAME=wut,LABELS=a,b env vars 2020-04-24 18:39:31 -05:00
Marcus Young 6b6ee9e9f3 Bump to 2.169.1 2020-04-15 14:21:27 -05:00
Marcus Young 209276897a Bump to 2.169.0 2020-04-08 12:11:31 -05:00
myoung34andGitHub ca85306837 Merge pull request #13 from patst/master
Update examples to match WORKDIR to volume mounts
2020-04-07 15:12:46 -05:00
patstandGitHub 040ac6cfca Fix volume mount to match WORKDIR 2020-04-07 21:35:05 +02:00
patstandGitHub 176dcf0d33 Fix RUNNER_WORKDIR path in README 2020-04-07 21:33:38 +02:00
Marcus Young a033875662 Bump to 2.168.0 2020-04-03 12:43:29 -05:00
Marcus Young 77bb89fd23 Add MIT license 2020-03-31 14:28:50 -05:00
myoung34andGitHub 97b9681fdf Merge pull request #10 from terradatum/master
Only one runner can use the same RUNNER_WORKDIR if it is shared storage.
2020-03-13 20:03:52 -05:00
G. Richard Bellamy b024ba2957 Only one runner can use the same RUNNER_WORKDIR if it is shared storage.
The "Set up job" step at the beginning of a workflow will delete the `_actions` directory. Therefore,
you cannot have more than one container running on the same Docker host sharing storage via a volume
mount (e.g. `/tmp/github-runner`) used by `RUNNER_WORKDIR`.

https://github.community/t5/GitHub-Actions/Does-self-hosted-runner-clear-all-previous-actions-during-quot/m-p/50061
2020-03-13 14:14:36 -07:00
myoung34andGitHub f8953c67a1 Update README.md 2020-03-08 11:10:09 -05:00
myoung34andGitHub 20853b4e27 Update README.md 2020-03-08 11:09:18 -05:00
myoung34andGitHub 983dd6593c Merge pull request #8 from stevenpall/master
Get Runner Token Automatically
2020-02-26 23:02:41 -06:00
Steven Pall 46f65587e3 Get RUNNER_TOKEN Automatically
- Add the ability to specify a personal access token to use for calling the new Actions API for a runner token
- Add `jq` and `docker-compose` to the `Dockerfile`
- Update `README.md`
2020-02-26 16:39:31 -08:00
10 changed files with 336 additions and 71 deletions
+3
View File
@@ -0,0 +1,3 @@
# These are supported funding model platforms
github: myoung34
+68
View File
@@ -0,0 +1,68 @@
name: GitHub Actions Runner in Docker - Base
on:
push:
paths:
- Dockerfile.base
branches:
- master
- develop
jobs:
ubuntu_base_latest_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Get GitHub organization or user
run: echo ::set-env name=ORG::$(dirname ${GITHUB_REPOSITORY})
- name: Set up Docker Buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
run: docker buildx build -f Dockerfile.base -t ${ORG}/github-runner-base:latest --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_base_bionic_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Get GitHub organization or user
run: echo ::set-env name=ORG::$(dirname ${GITHUB_REPOSITORY})
- name: Set up Docker Buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile.base Dockerfile.base.ubuntu-bionic; sed -i.bak 's/FROM.*/FROM ubuntu:bionic/' Dockerfile.base.ubuntu-bionic
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
run: docker buildx build -f Dockerfile.base.ubuntu-bionic -t ${ORG}/github-runner-base:ubuntu-bionic --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_base_xenial_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Get GitHub organization or user
run: echo ::set-env name=ORG::$(dirname ${GITHUB_REPOSITORY})
- name: Set up Docker Buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile.base Dockerfile.base.ubuntu-xenial; sed -i.bak 's/FROM.*/FROM ubuntu:xenial/' Dockerfile.base.ubuntu-xenial
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
run: docker buildx build -f Dockerfile.base.ubuntu-xenial -t ${ORG}/github-runner-base:ubuntu-xenial --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
+6 -5
View File
@@ -2,6 +2,7 @@ name: GitHub Actions Runner in Docker - Latest
on:
push:
paths-ignore:
- Dockerfile.base
- README.md
branches:
- master
@@ -19,7 +20,7 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login
@@ -37,11 +38,11 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile Dockerfile.ubuntu-bionic; sed -i.bak 's/FROM.*/FROM ubuntu:bionic/' Dockerfile.ubuntu-bionic
run: cp Dockerfile Dockerfile.ubuntu-bionic; sed -i.bak "s/FROM.*/FROM ${ORG}\/github-runner-base:ubuntu-bionic/" Dockerfile.ubuntu-bionic
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
@@ -57,11 +58,11 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile Dockerfile.ubuntu-xenial; sed -i.bak 's/FROM.*/FROM ubuntu:xenial/' Dockerfile.ubuntu-xenial
run: cp Dockerfile Dockerfile.ubuntu-xenial; sed -i.bak "s/FROM.*/FROM ${ORG}\/github-runner-base:ubuntu-xenial/" Dockerfile.ubuntu-xenial
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
+24 -7
View File
@@ -1,14 +1,29 @@
name: GitHub Actions Runner in Docker - Release
on:
push:
paths-ignore:
- README.md
tags:
- '*'
jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
ubuntu_latest_tag:
runs-on: ubuntu-latest
needs: create-release
steps:
- name: Copy Repo Files
uses: actions/checkout@master
@@ -20,7 +35,7 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login
@@ -29,6 +44,7 @@ jobs:
run: docker buildx build -f Dockerfile -t ${ORG}/github-runner:${TAG} --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_bionic_tag:
runs-on: ubuntu-latest
needs: create-release
steps:
- name: Copy Repo Files
uses: actions/checkout@master
@@ -40,17 +56,18 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile Dockerfile.ubuntu-bionic; sed -i.bak 's/FROM.*/FROM ubuntu:bionic/' Dockerfile.ubuntu-bionic
run: cp Dockerfile Dockerfile.ubuntu-bionic; sed -i.bak "s/FROM.*/FROM ${ORG}\/github-runner-base:ubuntu-bionic/" Dockerfile.ubuntu-bionic
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
run: docker buildx build -f Dockerfile.ubuntu-bionic -t ${ORG}/github-runner:${TAG}-ubuntu-bionic --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_xenial_tag:
runs-on: ubuntu-latest
needs: create-release
steps:
- name: Copy Repo Files
uses: actions/checkout@master
@@ -62,11 +79,11 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Copy Dockerfile
run: cp Dockerfile Dockerfile.ubuntu-xenial; sed -i.bak 's/FROM.*/FROM ubuntu:xenial/' Dockerfile.ubuntu-xenial
run: cp Dockerfile Dockerfile.ubuntu-xenial; sed -i.bak "s/FROM.*/FROM ${ORG}\/github-runner-base:ubuntu-xenial/" Dockerfile.ubuntu-xenial
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Build
+7 -38
View File
@@ -1,44 +1,11 @@
FROM ubuntu:rolling
LABEL maintainer="3vilpenguin@gmail.com"
# hadolint ignore=DL3007
FROM myoung34/github-runner-base:latest
LABEL maintainer="myoung34@my.apsu.edu"
ARG GIT_VERSION="2.23.0"
ARG GH_RUNNER_VERSION="2.165.2"
ARG GH_RUNNER_VERSION="2.267.1"
ARG TARGETPLATFORM
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=DL3003
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
tar \
apt-transport-https \
ca-certificates \
sudo \
gnupg-agent \
software-properties-common \
build-essential \
zlib1g-dev \
gettext \
liblttng-ust0 \
libcurl4-openssl-dev \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/* \
&& c_rehash \
&& cd /tmp \
&& curl -sL https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz -o git.tgz \
&& tar zxf git.tgz \
&& cd git-${GIT_VERSION} \
&& ./configure --prefix=/usr \
&& make \
&& make install \
&& cd / \
&& rm -rf /tmp/git.tgz /tmp/git-${GIT_VERSION}
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& [[ $(lsb_release -cs) == "eoan" ]] && ( add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu disco stable" ) || ( add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" )\
&& apt-get update \
&& apt-get install -y docker-ce docker-ce-cli containerd.io --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
COPY install_actions.sh /actions-runner
@@ -47,7 +14,9 @@ RUN chmod +x /actions-runner/install_actions.sh \
&& /actions-runner/install_actions.sh ${GH_RUNNER_VERSION} ${TARGETPLATFORM} \
&& rm /actions-runner/install_actions.sh
WORKDIR /_work
COPY token.sh /
RUN chmod +x /token.sh
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
+43
View File
@@ -0,0 +1,43 @@
FROM ubuntu:eoan
LABEL maintainer="myoung34@my.apsu.edu"
ARG GIT_VERSION="2.26.2"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
# hadolint ignore=DL3003
RUN apt-get update && \
apt-get install -y --no-install-recommends \
awscli \
curl \
tar \
unzip \
apt-transport-https \
ca-certificates \
sudo \
gnupg-agent \
software-properties-common \
build-essential \
zlib1g-dev \
gettext \
liblttng-ust0 \
libcurl4-openssl-dev \
inetutils-ping \
jq \
&& c_rehash \
&& cd /tmp \
&& curl -sL https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz -o git.tgz \
&& tar zxf git.tgz \
&& cd git-${GIT_VERSION} \
&& ./configure --prefix=/usr \
&& make \
&& make install \
&& cd / \
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& [[ $(lsb_release -cs) == "eoan" ]] && ( add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu disco stable" ) || ( add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ) \
&& apt-get update \
&& apt-get install -y docker-ce docker-ce-cli containerd.io --no-install-recommends \
&& curl -sL "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/*
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Marcus Young
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+97 -18
View File
@@ -1,31 +1,52 @@
Docker Github Actions Runner
============================
This will run the [new self-hosted github actions runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/hosting-your-own-runners) with docker-in-docker
[![Docker Pulls](https://img.shields.io/docker/pulls/myoung34/github-runner.svg)](https://hub.docker.com/r/myoung34/github-runner)
This will run the [new self-hosted github actions runners](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/hosting-your-own-runners).
This has been tested and verified on:
* x86_64
* armhf
* armv7
* arm64
**NOTE:**
- **Only one runner can use the same RUNNER_WORKDIR if it is shared storage.**
- **RUNNER_WORKDIR must match the source path for the bind-mounted volume at RUNNER_WORKDIR, in order for container actions to access files.**
## Examples ##
Manual:
### Note ###
If you're using a RHEL based OS with SELinux, add `--security-opt=label=disable` to prevent [permission denied](https://github.com/myoung34/docker-github-actions-runner/issues/9)
### Manual ###
```
# org runner
docker run -d --restart always --name github-runner \
-e RUNNER_NAME_PREFIX="myrunner" \
-e ACCESS_TOKEN="footoken" \
-e RUNNER_WORKDIR="/tmp/github-runner-your-repo" \
-e ORG_RUNNER="true" \
-e ORG_NAME="octokode" \
-e LABELS="my-label,other-label" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner-your-repo:/tmp/github-runner-your-repo \
myoung34/github-runner:latest
# per repo
docker run -d --restart always --name github-runner \
-e REPO_URL="https://github.com/myoung34/repo" \
-e RUNNER_NAME="foo-runner" \
-e RUNNER_TOKEN="footoken" \
-e RUNNER_WORKDIR="/tmp/github-runner" \
-e RUNNER_WORKDIR="/tmp/github-runner-your-repo" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner:/tmp/github-runner \
-v /tmp/github-runner-your-repo:/tmp/github-runner-your-repo \
myoung34/github-runner:latest
```
Or as a shell function (as root):
Or shell wrapper:
```
function github-runner {
@@ -38,9 +59,10 @@ function github-runner {
-e REPO_URL="https://github.com/${org}/${repo}" \
-e RUNNER_TOKEN="$2" \
-e RUNNER_NAME="linux-${repo}" \
-e RUNNER_WORKDIR="/tmp/github-runner" \
-e RUNNER_WORKDIR="/tmp/github-runner-${repo}" \
-e LABELS="my-label,other-label" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner:/tmp/github-runner \
-v /tmp/github-runner-${repo}:/tmp/github-runner-${repo} \
--name $name ${org}/github-runner:${tag}
}
@@ -48,7 +70,33 @@ github-runner your-account/your-repo AARGHTHISISYOURGHACTIONSTOKEN
github-runner your-account/some-other-repo ARGHANOTHERGITHUBACTIONSTOKEN ubuntu-xenial
```
Nomad:
Or `docker-compose.yml`:
```yml
version: '2.3'
services:
worker:
build: .
image: myoung34/github-runner:latest
environment:
REPO_URL: https://github.com/example/repo
RUNNER_NAME: example-name
RUNNER_TOKEN: someGithubTokenHere
RUNNER_WORKDIR: /tmp/runner/work
ORG_RUNNER: 'false'
LABELS: linux,x64,gpu
security_opt:
# needed on SELinux systems to allow docker container to manage other docker containers
- label:disable
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- '/tmp/runner:/tmp/runner'
# note: a quirk of docker-in-docker is that this path
# needs to be the same path on host and inside the container,
# docker mgmt cmds run outside of docker but expect the paths from within
```
### Nomad ###
```
job "github_runner" {
@@ -59,9 +107,12 @@ job "github_runner" {
driver = "docker"
env {
REPO_URL = "https://github.com/your-account/your-repo"
RUNNER_TOKEN = "footoken"
RUNNER_WORKDIR = "/tmp/github-runner"
ACCESS_TOKEN = "footoken"
RUNNER_NAME_PREFIX = "myrunner" \
RUNNER_WORKDIR = "/tmp/github-runner-your-repo"
ORG_RUNNER = "true"
ORG_NAME = "octokode"
LABELS = "my-label,other-label"
}
config {
@@ -69,14 +120,14 @@ job "github_runner" {
image = "myoung34/github-runner:latest"
volumes = [
"/var/run/docker.sock:/var/run/docker.sock",
"/tmp/github-runner:/tmp/github-runner",
"/tmp/github-runner-your-repo:/tmp/github-runner-your-repo",
]
}
}
}
```
Kubernetes:
### Kubernetes ###
```
apiVersion: apps/v1
@@ -100,23 +151,34 @@ spec:
path: /var/run/docker.sock
- name: workdir
hostPath:
path: /tmp/github-runner
containers:
path: /tmp/github-runner-your-repo
containers:
- name: runner
image: myoung34/github-runner:latest
env:
- name: ORG_RUNNER
value: true
- name: ORG_NAME
value: octokode
- name: LABELS
value: my-label,other-label
- name: RUNNER_TOKEN
value: footoken
- name: REPO_URL
value: https://github.com/your-account/your-repo
- name: RUNNER_NAME_PREFIX
value: foo
- name: RUNNER_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: RUNNER_WORKDIR
value: /tmp/github-runner
value: /tmp/github-runner-your-repo
volumeMounts:
- name: dockersock
mountPath: /var/run/docker.sock
- name: workdir
mountPath: /tmp/github-runner
mountPath: /tmp/github-runner-your-repo
```
## Usage From GH Actions Workflow ##
@@ -136,3 +198,20 @@ jobs:
- name: build packages
run: make all
```
## Automatically Acquiring a Runner Token ##
A runner token can be automatically acquired at runtime if `ACCESS_TOKEN` (a GitHub personal access token) is a supplied. This uses the [GitHub Actions API](https://developer.github.com/v3/actions/self_hosted_runners/#create-a-registration-token). e.g.:
```
docker run -d --restart always --name github-runner \
-e ACCESS_TOKEN="footoken" \
-e RUNNER_NAME="foo-runner" \
-e RUNNER_WORKDIR="/tmp/github-runner-your-repo" \
-e ORG_RUNNER="true" \
-e ORG_NAME="octokode" \
-e LABELS="my-label,other-label" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner-your-repo:/tmp/github-runner-your-repo \
myoung34/github-runner:latest
```
+34 -3
View File
@@ -1,7 +1,38 @@
#!/bin/bash
export RUNNER_ALLOW_RUNASROOT=1
export PATH=$PATH:/actions-runner
_RUNNER_NAME=${RUNNER_NAME:-default}
deregister_runner() {
echo "Caught SIGTERM. Deregistering runner"
_TOKEN=$(bash /token.sh)
RUNNER_TOKEN=$(echo "${_TOKEN}" | jq -r .token)
./config.sh remove --token "${RUNNER_TOKEN}"
exit
}
_RUNNER_NAME=${RUNNER_NAME:-${RUNNER_NAME_PREFIX:-github-runner}-$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '')}
_RUNNER_WORKDIR=${RUNNER_WORKDIR:-/_work}
config.sh --url "${REPO_URL}" --token "${RUNNER_TOKEN}" --name "${_RUNNER_NAME}" --work "${_RUNNER_WORKDIR}"
exec run.sh
_LABELS=${LABELS:-default}
_SHORT_URL=${REPO_URL}
if [[ -n "${ACCESS_TOKEN}" ]]; then
_TOKEN=$(bash /token.sh)
RUNNER_TOKEN=$(echo "${_TOKEN}" | jq -r .token)
_SHORT_URL=$(echo "${_TOKEN}" | jq -r .short_url)
fi
echo "Configuring"
./config.sh \
--url "${_SHORT_URL}" \
--token "${RUNNER_TOKEN}" \
--name "${_RUNNER_NAME}" \
--work "${_RUNNER_WORKDIR}" \
--labels "${_LABELS}" \
--unattended \
--replace
unset RUNNER_TOKEN
trap deregister_runner SIGINT SIGQUIT SIGTERM
./bin/runsvc.sh
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
_ORG_RUNNER=${ORG_RUNNER:-false}
URI=https://api.github.com
API_VERSION=v3
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
AUTH_HEADER="Authorization: token ${ACCESS_TOKEN}"
REPO_URL=${REPO_URL:-${URI}}
_PROTO="$(echo "${REPO_URL}" | grep :// | sed -e's,^\(.*://\).*,\1,g')"
# shellcheck disable=SC2116
_URL="$(echo "${REPO_URL/${_PROTO}/}")"
_PATH="$(echo "${_URL}" | grep / | cut -d/ -f2-)"
_ACCOUNT="$(echo "${_PATH}" | cut -d/ -f1)"
_REPO="$(echo "${_PATH}" | cut -d/ -f2)"
_FULL_URL="${URI}/repos/${_ACCOUNT}/${_REPO}/actions/runners/registration-token"
if [[ ${_ORG_RUNNER} == "true" ]]; then
[[ -z ${ORG_NAME} ]] && ( echo "ORG_NAME required for org runners"; exit 1 )
_FULL_URL="${URI}/orgs/${ORG_NAME}/actions/runners/registration-token"
_SHORT_URL="${_PROTO}github.com/${ORG_NAME}"
else
_SHORT_URL=$REPO_URL
fi
RUNNER_TOKEN="$(curl -XPOST -fsSL \
-H "${AUTH_HEADER}" \
-H "${API_HEADER}" \
"${_FULL_URL}" \
| jq -r '.token')"
echo "{\"token\": \"${RUNNER_TOKEN}\", \"short_url\": \"${_SHORT_URL}\", \"full_url\": \"${_FULL_URL}\"}"