Compare commits

..
38 Commits
Author SHA1 Message Date
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
myoung34andGitHub 657f9b882c Update Dockerfile
Bump GH actions to 2.165.2
2020-02-12 13:52:25 -06:00
Marcus Young 2f3b19dbcb Update README from #7 2020-02-12 10:12:38 -06:00
myoung34andGitHub f7405e57af Merge pull request #6 from terradatum/master
Workflows target docker hub by Org/Account.
2020-02-11 14:26:44 -06:00
G. Richard Bellamy 6ccebdcc6d Make workflows target docker hub by organization/account.
IT-4071 #comment Make workflows target docker hub by organization/account.
2020-02-11 12:15:35 -08:00
G. Richard Bellamy 95be9f08b5 Make workflows target docker hub by organization/account.
IT-4071 #comment Install maven and npm - should go through the list of default utilities and tools installed into `ubuntu-latest` for parity with GitHub runners. Many actions will rely on and expect them.
IT-4071 #comment Because of https://bugs.launchpad.net/ubuntu/+source/nodejs/+bug/1794589, both libcurl4-openssl-dev and npm cannot be installed in bionic using the package. There are two options: 1) Use libcurl4-gnutls-dev rather than libcurl4-openssl-dev, 2) Install npm using the installation script from github. I choose option #2.
IT-4071 #comment Make workflows target docker hub by organization/account.
2020-02-10 13:48:32 -08:00
myoung34andGitHub 7a38b6d314 Update README.md 2020-02-06 07:13:17 -06:00
myoung34andGitHub f0a62e35dc Update README.md 2020-02-06 07:12:46 -06:00
myoung34andGitHub efdec6ab8c Merge pull request #5 from Pentusha/master
Multiarch builds fixed for #4
2020-02-05 13:42:42 -06:00
Ivan Larin 7d944a9917 Multiarch builds fixed for #4 2020-02-05 19:38:45 +03:00
myoung34andGitHub 000da19866 Bump to 2.165.1 2020-01-30 21:31:09 -06:00
Marcus Young c72e53dd91 Remove unneeded and fragile packages 2020-01-28 07:28:39 -06:00
Marcus Young 25ddc313e8 Simplify docker builds 2020-01-27 22:17:15 -06:00
myoung34andGitHub f48b16015a Merge pull request #3 from myoung34/2.165.0
Update to 2.165.0
2020-01-27 21:50:48 -06:00
myoung34andGitHub d40ef464fc Update Dockerfile.ubuntu-xenial 2020-01-27 21:49:21 -06:00
myoung34andGitHub 016a28caf7 Update Dockerfile.ubuntu-bionic 2020-01-27 21:48:38 -06:00
myoung34andGitHub add05adf31 Update Dockerfile.ubuntu 2020-01-27 21:47:32 -06:00
Marcus Young 45c25ba5de Fix Dockerfile's 2020-01-22 14:33:31 -06:00
Marcus Young 62b1fd5e32 remove arm v6 from it erroring? 2020-01-21 20:13:45 -06:00
Marcus Young 586a23ad2c update readme 2020-01-21 20:09:35 -06:00
Marcus Young f99b59b25f update readme 2020-01-21 20:07:37 -06:00
myoung34andGitHub 687df76fdd Merge pull request #2 from signcl/master
Bump to 2.164.0
2020-01-21 20:06:00 -06:00
Proton 147520a900 Bump to 2.164.0 2020-01-17 16:10:03 +08:00
Marcus Young cb15320c41 Moving to buildx 2020-01-07 09:44:19 -06:00
Marcus Young 5cb4c4ad6f Fix '--agent' -> '--name', add ability for arm64 builds 2019-12-23 11:10:05 -06:00
Marcus Young c1c82065a8 Bump to 2.163.1 2019-12-20 14:25:45 -06:00
Marcus Young b54a09f54b Add git to non-arm dockers 2019-12-12 06:25:08 -06:00
13 changed files with 267 additions and 344 deletions
+43 -49
View File
@@ -1,74 +1,68 @@
name: Publish Docker
name: GitHub Actions Runner in Docker - Latest
on:
push:
branches:
paths-ignore:
- README.md
branches:
- master
- develop
jobs:
ubuntu_latest_deploy_x86:
ubuntu_latest_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu -t myoung34/github-runner:latest .
- 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:
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: Push to hub registry
run: docker push myoung34/github-runner:latest
ubuntu_bionic_deploy_x86:
- name: Build
run: docker buildx build -f Dockerfile -t ${ORG}/github-runner:latest --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_bionic_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu-bionic -t myoung34/github-runner:ubuntu-bionic .
- 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:
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
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:ubuntu-bionic
ubuntu_xenial_deploy_x86:
- name: Build
run: docker buildx build -f Dockerfile.ubuntu-bionic -t ${ORG}/github-runner:ubuntu-bionic --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
ubuntu_xenial_deploy:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu-xenial -t myoung34/github-runner:ubuntu-xenial .
- 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:
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
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:ubuntu-xenial
ubuntu_latest_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu-arm -t myoung34/github-runner:latest-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:latest-arm
ubuntu_bionic_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu-bionic-arm -t myoung34/github-runner:ubuntu-bionic-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:ubuntu-bionic-arm
ubuntu_xenial_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: Build
run: docker build -f Dockerfile.ubuntu-xenial-arm -t myoung34/github-runner:ubuntu-xenial-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:ubuntu-xenial-arm
run: docker buildx build -f Dockerfile.ubuntu-xenial -t ${ORG}/github-runner:ubuntu-xenial --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
+45 -57
View File
@@ -1,85 +1,73 @@
name: Publish Docker
name: GitHub Actions Runner in Docker - Release
on:
push:
paths-ignore:
- README.md
tags:
- '*'
jobs:
ubuntu_tag_deploy_x86:
ubuntu_latest_tag:
runs-on: ubuntu-latest
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu -t myoung34/github-runner:${TAG} .
run: echo ::set-env name=TAG::${GITHUB_REF#refs/tags/}
- 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:
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: Push to hub registry
run: docker push myoung34/github-runner:${TAG}
ubuntu_bionic_deploy_x86:
- name: Build
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
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu-bionic -t myoung34/github-runner:${TAG}-ubuntu-bionic .
run: echo ::set-env name=TAG::${GITHUB_REF#refs/tags/}
- 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:
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
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:${TAG}-ubuntu-bionic
ubuntu_xenial_deploy_x86:
- 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
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu-xenial -t myoung34/github-runner:${TAG}-ubuntu-xenial .
run: echo ::set-env name=TAG::${GITHUB_REF#refs/tags/}
- 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:
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
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:${TAG}-ubuntu-xenial
ubuntu_tag_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu-arm -t myoung34/github-runner:${TAG}-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:${TAG}-arm
ubuntu_bionic_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu-bionic-arm -t myoung34/github-runner:${TAG}-ubuntu-bionic-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:${TAG}-ubuntu-bionic-arm
ubuntu_xenial_deploy_arm:
runs-on: self-hosted
steps:
- name: Copy Repo Files
uses: actions/checkout@master
- name: get version
run: echo "::set-env name=TAG::$(echo ${GITHUB_REF} | sed -e "s/refs\/tags\///g")"
- name: Build
run: docker build -f Dockerfile.ubuntu-xenial-arm -t myoung34/github-runner:${TAG}-ubuntu-xenial-arm .
- name: Login
run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_TOKEN }}
- name: Push to hub registry
run: docker push myoung34/github-runner:${TAG}-ubuntu-xenial-arm
run: docker buildx build -f Dockerfile.ubuntu-xenial -t ${ORG}/github-runner:${TAG}-ubuntu-xenial --output "type=image,push=true" --platform linux/amd64,linux/arm/v7,linux/arm64 .
+1
View File
@@ -0,0 +1 @@
*.bak
+15 -11
View File
@@ -1,8 +1,9 @@
FROM ubuntu:xenial
FROM ubuntu:rolling
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
ARG GIT_VERSION="2.23.0"
ARG GH_RUNNER_VERSION="2.169.0"
ARG TARGETPLATFORM
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=DL3003
@@ -18,12 +19,12 @@ RUN apt-get update && \
build-essential \
zlib1g-dev \
gettext \
liblttng-ust-ctl2 \
liblttng-ust0 \
liburcu4 \
libcurl4-openssl-dev \
inetutils-ping \
jq \
&& 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 \
@@ -35,18 +36,21 @@ RUN apt-get update && \
&& rm -rf /tmp/git.tgz /tmp/git-${GIT_VERSION}
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& [[ $(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.io --no-install-recommends \
&& apt-get install -y docker-ce docker-ce-cli containerd.io --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN 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
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& mkdir /_work
COPY install_actions.sh /actions-runner
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 entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-35
View File
@@ -1,35 +0,0 @@
FROM ubuntu:bionic
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
tar \
apt-transport-https \
ca-certificates \
sudo \
gnupg-agent \
software-properties-common \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get install -y docker-ce --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& ./bin/installdependencies.sh \
&& mkdir /_work
WORKDIR /_work
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-52
View File
@@ -1,52 +0,0 @@
FROM ubuntu:bionic
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
ARG GIT_VERSION="2.23.0"
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-ust-ctl4 \
liblttng-ust0 \
liburcu6 \
libcurl4-openssl-dev \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/* \
&& 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 - \
&& add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get install -y docker.io --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& mkdir /_work
WORKDIR /_work
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-35
View File
@@ -1,35 +0,0 @@
FROM ubuntu:bionic
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
tar \
apt-transport-https \
ca-certificates \
sudo \
gnupg-agent \
software-properties-common \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get install -y docker-ce --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& ./bin/installdependencies.sh \
&& mkdir /_work
WORKDIR /_work
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-52
View File
@@ -1,52 +0,0 @@
FROM ubuntu:bionic
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
ARG GIT_VERSION="2.23.0"
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-ust-ctl4 \
liblttng-ust0 \
liburcu6 \
libcurl4-openssl-dev \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/* \
&& 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 - \
&& add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get install -y docker.io --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-arm-${GH_RUNNER_VERSION}.tar.gz \
&& mkdir /_work
WORKDIR /_work
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
-35
View File
@@ -1,35 +0,0 @@
FROM ubuntu:xenial
LABEL maintainer="3vilpenguin@gmail.com"
ARG GH_RUNNER_VERSION="2.162.0"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
tar \
apt-transport-https \
ca-certificates \
sudo \
gnupg-agent \
software-properties-common \
inetutils-ping \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get install -y docker-ce --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /actions-runner
RUN curl -O https://githubassets.azureedge.net/runners/${GH_RUNNER_VERSION}/actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& tar -zxf actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& rm -f actions-runner-linux-x64-${GH_RUNNER_VERSION}.tar.gz \
&& ./bin/installdependencies.sh \
&& mkdir /_work
WORKDIR /_work
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
+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.
+102 -15
View File
@@ -1,36 +1,60 @@
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
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.**
## Examples ##
Manual:
### Note ###
### X86_64 ###
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 ###
```
docker run -it \
-e REPO_URL="https://github.com/myoung34/LEDSpicer" \
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-your-repo" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner-your-repo:/tmp/github-runner-your-repo \
myoung34/github-runner:latest
```
### ARMHF (raspberry pi) ###
Or shell wrapper:
```
docker run -it \
-e REPO_URL="https://github.com/myoung34/LEDSpicer" \
-e RUNNER_TOKEN="footoken" \
myoung34/github-runner:latest-arm
function github-runner {
name=github-runner-${1//\//-}
org=$(dirname $1)
repo=$(basename $1)
tag=${3:-latest}
docker rm -f $name
docker run -d --restart=always \
-e REPO_URL="https://github.com/${org}/${repo}" \
-e RUNNER_TOKEN="$2" \
-e RUNNER_NAME="linux-${repo}" \
-e RUNNER_WORKDIR="/tmp/github-runner-${repo}" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner-${repo}:/tmp/github-runner-${repo} \
--name $name ${org}/github-runner:${tag}
}
github-runner your-account/your-repo AARGHTHISISYOURGHACTIONSTOKEN
github-runner your-account/some-other-repo ARGHANOTHERGITHUBACTIONSTOKEN ubuntu-xenial
```
Nomad:
### Nomad ###
```
job "github_runner" {
@@ -41,22 +65,70 @@ job "github_runner" {
driver = "docker"
env {
REPO_URL = "https://github.com/myoung34/LEDSpicer"
RUNNER_TOKEN = "footoken"
REPO_URL = "https://github.com/your-account/your-repo"
RUNNER_TOKEN = "footoken"
RUNNER_WORKDIR = "/tmp/github-runner-your-repo"
}
config {
privileged = true
image = "myoung34/github-runner:latest"
volumes = [
"/var/run/docker.sock:/var/run/docker.sock"
"/var/run/docker.sock:/var/run/docker.sock",
"/tmp/github-runner-your-repo:/tmp/github-runner-your-repo",
]
}
}
}
```
## Usage ##
### Kubernetes ###
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: actions-runner
namespace: runners
spec:
replicas: 1
selector:
matchLabels:
app: actions-runner
template:
metadata:
labels:
app: actions-runner
spec:
volumes:
- name: dockersock
hostPath:
path: /var/run/docker.sock
- name: workdir
hostPath:
path: /tmp/github-runner-your-repo
containers:
- name: runner
image: myoung34/github-runner:latest
env:
- name: RUNNER_TOKEN
value: footoken
- name: REPO_URL
value: https://github.com/your-account/your-repo
- name: RUNNER_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: RUNNER_WORKDIR
value: /tmp/github-runner-your-repo
volumeMounts:
- name: dockersock
mountPath: /var/run/docker.sock
- name: workdir
mountPath: /tmp/github-runner-your-repo
```
## Usage From GH Actions Workflow ##
```
name: Package
@@ -73,3 +145,18 @@ 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 REPO_URL="https://github.com/myoung34/repo" \
-e RUNNER_NAME="foo-runner" \
-e RUNNER_WORKDIR="/tmp/github-runner-your-repo" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/github-runner-your-repo:/tmp/github-runner-your-repo \
myoung34/github-runner:latest
```
+25 -3
View File
@@ -1,7 +1,29 @@
#!/bin/bash
export AGENT_ALLOW_RUNASROOT=1
export RUNNER_ALLOW_RUNASROOT=1
export PATH=$PATH:/actions-runner
_RUNNER_NAME=${RUNNER_NAME:-default}
_RUNNER_WORKDIR=${RUNNER_WORKDIR:-/_work}
config.sh --url "${REPO_URL}" --token "${RUNNER_TOKEN}" --agent "${_RUNNER_NAME}" --work "${_RUNNER_WORKDIR}"
exec run.sh
if [[ -n "${ACCESS_TOKEN}" ]]; then
URI=https://api.github.com
API_VERSION=v3
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
AUTH_HEADER="Authorization: token ${ACCESS_TOKEN}"
_PROTO="$(echo "${REPO_URL}" | grep :// | sed -e's,^\(.*://\).*,\1,g')"
_URL="$(echo "${REPO_URL/${_PROTO}/}")"
_PATH="$(echo "${_URL}" | grep / | cut -d/ -f2-)"
_ACCOUNT="$(echo "${_PATH}" | cut -d/ -f1)"
_REPO="$(echo "${_PATH}" | cut -d/ -f2)"
RUNNER_TOKEN="$(curl -XPOST -fsSL \
-H "${AUTH_HEADER}" \
-H "${API_HEADER}" \
"${URI}/repos/${_ACCOUNT}/${_REPO}/actions/runners/registration-token" \
| jq -r '.token')"
fi
./config.sh --url "${REPO_URL}" --token "${RUNNER_TOKEN}" --name "${_RUNNER_NAME}" --work "${_RUNNER_WORKDIR}"
./run.sh
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash -x
GH_RUNNER_VERSION=$1
TARGETPLATFORM=$2
export TARGET_ARCH="x64"
if [[ $TARGETPLATFORM == "linux/arm/v7" ]]; then
export TARGET_ARCH="arm"
elif [[ $TARGETPLATFORM == "linux/arm64" ]]; then
export TARGET_ARCH="arm64"
fi
curl -L "https://github.com/actions/runner/releases/download/v${GH_RUNNER_VERSION}/actions-runner-linux-${TARGET_ARCH}-${GH_RUNNER_VERSION}.tar.gz" > actions.tar.gz
tar -zxf actions.tar.gz
rm -f actions.tar.gz
./bin/installdependencies.sh
mkdir /_work