Compare commits

...
34 Commits
Author SHA1 Message Date
Marcus Young a6a57d36ab [Automated 🤖 ] Bump to version 2.296.2 2022-09-08 12:46:35 -05:00
myoung34andGitHub de41bc7f8b Merge pull request #234 from Rumbles/master
Check to see if not running as root
2022-09-06 19:41:53 -05:00
myoung34andGitHub c253d823a6 Merge pull request #238 from nmalaguti/feature/github-cli-gpg-key-problem
Change gh cli install method to github releases
2022-09-06 19:24:04 -05:00
Nick Malaguti 214b75489b Change gh cli install method to github releases
The apt repo for the gh cli is broken due to an expired GPG key:
https://github.com/cli/cli/issues/6175

They want to retire the debian packaging altogether
https://github.com/cli/cli/issues/5941 and this is the recommended "long
term" solution
https://github.com/cli/cli/issues/6175#issuecomment-1235984381.

Adapted from https://github.com/cli/cli/issues/6175#issuecomment-1236264607

Fixes #236
2022-09-06 09:59:23 -04:00
James Stocker 2cffdf6b9a Update logic at the end as requested 2022-09-02 12:26:29 +02:00
a779a7f993 Update entrypoint.sh
Co-authored-by: myoung34 <myoung34@my.apsu.edu>
2022-09-02 12:23:31 +02:00
217117d3bc Update entrypoint.sh
Co-authored-by: myoung34 <myoung34@my.apsu.edu>
2022-09-02 12:23:22 +02:00
829c6ccd91 Update entrypoint.sh
Co-authored-by: myoung34 <myoung34@my.apsu.edu>
2022-09-02 12:23:16 +02:00
d414c3a388 Update entrypoint.sh
Co-authored-by: myoung34 <myoung34@my.apsu.edu>
2022-09-02 12:22:36 +02:00
Marcus Young 28cb729624 [Automated 🤖 ] Bump to version 2.296.1 2022-08-31 12:45:45 -05:00
James Stocker 733ff44be5 Check to see if not running as root
Change logic slightly avoid edge case
2022-08-30 10:22:25 +02:00
myoung34andGitHub 0f9d476978 Merge pull request #179 from jarrett-confrey/feat/add-gh-cli
feat: add github cli (gh)
2022-08-29 13:43:48 -05:00
jarrett-confrey 6d189b3bae feat: add github cli (gh) 2022-08-29 11:04:46 -07:00
Marcus Young 36d8efe0c3 [Automated 🤖 ] Bump to version 2.296.0 2022-08-23 09:57:53 -05:00
myoung34andGitHub 9afc3108fc Merge pull request #231 from nikeee/master
Add git-lfs to base image
2022-08-17 09:27:15 -05:00
cc396abd59 Update Dockerfile.base
Co-authored-by: myoung34 <myoung34@my.apsu.edu>
2022-08-17 16:19:18 +02:00
Niklas MollenhauerandGitHub e8ff100cc0 Add git-lfs to base image
Using the checkout action with `lfs: true` currently fails with the error: 
```
Unable to locate executable file: git-lfs.
```

See: https://git-lfs.github.com
2022-08-17 13:54:58 +02:00
Marcus Young 3d2c69648f [Automated 🤖 ] Bump to version 2.295.0 2022-08-10 09:54:08 -05:00
Marcus Young bc2c03d8c9 Dont run as non-root by default 2022-08-01 16:52:32 -05:00
myoung34andGitHub 51125e863e Merge pull request #226 from marcus-bcl/patch-1
Set ownership of /opt/hostedtoolcache
2022-07-27 09:47:23 -05:00
Marcus AspinandGitHub 18afadab14 Set ownership of /opt/hostedtoolcache 2022-07-27 15:45:02 +01:00
Marcus Young ab8b9d7e6b Fix sudoers for runner user 2022-07-27 07:53:48 -05:00
Marcus Young b9622cc4e7 Last changes for run-as runner user 2022-07-26 12:07:03 -05:00
myoung34andGitHub 62a7a5f10c Merge pull request #223 from marcus-bcl/master
Run as non-root user by default
2022-07-26 11:47:59 -05:00
Marcus AspinandGitHub 36f4ed430a Merge pull request #1 from myoung34/user_fixes
Swap USER directive for gosu for runtime permissions
2022-07-26 16:31:32 +01:00
Marcus Young a257b7ad38 Guarantee base dirs for -u runner 2022-07-26 10:27:48 -05:00
Marcus Young ba8c7f86a9 Move user add to docker base 2022-07-26 09:55:51 -05:00
Marcus Young cda2ba1fb4 Swap USER directive for gosu for runtime permissions 2022-07-26 09:44:02 -05:00
Marcus Aspin 8d4afae3d2 Move entrypoint after user-creation 2022-07-26 08:20:40 +01:00
myoung34andGitHub 96aaa5c17c Merge pull request #224 from Uzlopak/remove-awscliv2.zip
remove awscliv2.zip after unzipping
2022-07-25 12:25:43 -05:00
uzlopak 5e529f979a remove awscliv2.zip after unzipping 2022-07-25 10:59:53 +02:00
Marcus Aspin f6da106489 Add runner user to group 121, and mark as system user 2022-07-25 09:23:30 +01:00
Marcus Aspin d2a3df72e6 Run as non-root user by default 2022-07-22 15:05:33 +01:00
Marcus Young 133c12574c Remove temporary workaround for liblttng-ust0/1 https://github.com/actions/runner/issues/1584 2022-06-22 11:31:46 -05:00
4 changed files with 43 additions and 13 deletions
+3 -5
View File
@@ -5,7 +5,7 @@ LABEL maintainer="myoung34@my.apsu.edu"
ENV AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
RUN mkdir -p /opt/hostedtoolcache
ARG GH_RUNNER_VERSION="2.294.0"
ARG GH_RUNNER_VERSION="2.296.2"
ARG TARGETPLATFORM
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
@@ -13,12 +13,10 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
WORKDIR /actions-runner
COPY install_actions.sh /actions-runner
# TODO: remove this terrible sed once
# https://github.com/actions/runner/pull/1585 is merged or similar
RUN chmod +x /actions-runner/install_actions.sh \
&& sed -i.bak 's/.\/bin\/installdependencies.sh/wget https:\/\/raw.githubusercontent.com\/myoung34\/runner\/main\/src\/Misc\/layoutbin\/installdependencies.sh -O .\/bin\/installdependencies.sh; bash .\/bin\/installdependencies.sh/g' /actions-runner/install_actions.sh \
&& /actions-runner/install_actions.sh ${GH_RUNNER_VERSION} ${TARGETPLATFORM} \
&& rm /actions-runner/install_actions.sh
&& rm /actions-runner/install_actions.sh \
&& chown runner /_work /actions-runner /opt/hostedtoolcache
COPY token.sh entrypoint.sh /
RUN chmod +x /token.sh /entrypoint.sh
+17 -6
View File
@@ -5,6 +5,7 @@ ARG DUMB_INIT_VERSION="1.2.2"
ARG GIT_CORE_PPA_KEY="A1715D88E1DF1F24"
ENV DOCKER_COMPOSE_VERSION="1.27.4"
ENV GIT_LFS_VERSION="3.2.0"
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
@@ -44,13 +45,17 @@ RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
dumb-init \
nodejs \
rsync \
gosu \
&& DPKG_ARCH="$(dpkg --print-architecture)" \
&& LSB_RELEASE_CODENAME="$(lsb_release --codename | cut -f2)" \
&& sed -e 's/Defaults.*env_reset/Defaults env_keep = "HTTP_PROXY HTTPS_PROXY NO_PROXY FTP_PROXY http_proxy https_proxy no_proxy ftp_proxy"/' -i /etc/sudoers \
&& echo deb http://ppa.launchpad.net/git-core/ppa/ubuntu $([[ $(grep -E '^ID=' /etc/os-release | sed 's/.*=//g') == "ubuntu" ]] && (grep VERSION_CODENAME /etc/os-release | sed 's/.*=//g') || echo bionic) main>/etc/apt/sources.list.d/git-core.list \
&& apt-get update \
&& ( apt-get install -y --no-install-recommends git || apt-get install -t stable -y --no-install-recommends git || apt-get install -y --no-install-recommends git=1:2.33.1-0ppa1~ubuntu18.04.1 git-man=1:2.33.1-0ppa1~ubuntu18.04.1 ) \
&& ( [[ $(apt-cache search -n liblttng-ust0 | awk '{print $1}') == "liblttng-ust0" ]] && apt-get install -y --no-install-recommends liblttng-ust0 || : ) \
&& ( [[ $(apt-cache search -n liblttng-ust1 | awk '{print $1}') == "liblttng-ust1" ]] && apt-get install -y --no-install-recommends liblttng-ust1 || : ) \
&& ( ( curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && unzip awscliv2.zip -d /tmp/ && /tmp/aws/install ) || pip3 install awscli ) \
&& ( ( curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && unzip awscliv2.zip -d /tmp/ && /tmp/aws/install && rm awscliv2.zip) || pip3 install awscli ) \
&& ( curl -s "https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/git-lfs-linux-${DPKG_ARCH}-v${GIT_LFS_VERSION}.tar.gz" -L -o /tmp/lfs.tar.gz && tar -xzf /tmp/lfs.tar.gz -C /tmp && /tmp/git-lfs-${GIT_LFS_VERSION}/install.sh && rm -rf /tmp/lfs.tar.gz /tmp/git-lfs-${GIT_LFS_VERSION}) \
# Determine the Distro name (Debian, Ubuntu, etc)
&& distro=$(lsb_release -is | awk '{print tolower($0)}') \
# Determine the Distro version (bullseye, xenial, etc)
@@ -58,12 +63,18 @@ RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen \
&& mkdir -p /etc/apt/keyrings \
&& ( curl -fsSL https://download.docker.com/linux/${distro}/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg ) \
&& version=$(lsb_release -cs | awk '{gsub("sid", "bullseye"); print $0}') \
&& ( echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${distro} ${version} stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null ) \
&& ( echo "deb [arch=${DPKG_ARCH} signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${distro} ${version} stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null ) \
&& apt-get update \
&& apt-get install -y docker-ce docker-ce-cli containerd.io --no-install-recommends --allow-unauthenticated \
&& ( [[ $(lscpu -J | jq -r '.lscpu[] | select(.field == "Vendor ID:") | .data') == "ARM" ]] && echo "Not installing docker-compose. See https://github.com/docker/compose/issues/6831" || ( curl -sL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose ) ) \
&& ( [[ $(lsb_release --codename | cut -f2) == "focal" ]] && ( echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /" | tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list && curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/Release.key" | apt-key add - && apt-get update) || : ) \
&& ( [[ $(lsb_release --codename | cut -f2) == "focal" || $(lsb_release --codename | cut -f2) == "jammy" || $(lsb_release --codename | cut -f2) == "sid" || $(lsb_release --codename | cut -f2) == "bullseye" ]] && apt-get install -y --no-install-recommends podman buildah skopeo || : ) \
&& ( [[ $(lsb_release --codename | cut -f2) == "jammy" ]] && echo "Ubuntu Jammy is marked as beta. Please see https://github.com/actions/virtual-environments/issues/5490" || : ) \
&& ( [[ "${LSB_RELEASE_CODENAME}" == "focal" ]] && ( echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /" | tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list && curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/Release.key" | apt-key add - && apt-get update) || : ) \
&& ( [[ "${LSB_RELEASE_CODENAME}" == "focal" || "${LSB_RELEASE_CODENAME}" == "jammy" || "${LSB_RELEASE_CODENAME}" == "sid" || "${LSB_RELEASE_CODENAME}" == "bullseye" ]] && apt-get install -y --no-install-recommends podman buildah skopeo || : ) \
&& ( [[ "${LSB_RELEASE_CODENAME}" == "jammy" ]] && echo "Ubuntu Jammy is marked as beta. Please see https://github.com/actions/virtual-environments/issues/5490" || : ) \
&& GH_CLI_INSTALL_FILE="/tmp/gh-$$.deb" && curl -sSLo "${GH_CLI_INSTALL_FILE}" "https://github.com$(curl -sSL "https://github.com/cli/cli/releases/latest" | grep -Po "(?<=href=\")/cli/cli/releases/download/[^\"]*${DPKG_ARCH}[.]deb(?=\")")" && apt -y install "${GH_CLI_INSTALL_FILE}" \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/*
&& rm -rf /tmp/* \
&& groupadd -g 121 runner \
&& useradd -mr -d /home/runner -u 1001 -g 121 runner \
&& usermod -aG sudo runner \
&& usermod -aG docker runner \
&& echo '%sudo ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
+1
View File
@@ -52,6 +52,7 @@ These containers are built via Github actions that [copy the dockerfile](https:/
| Environment Variable | Description |
| --- | --- |
| `RUN_AS_ROOT` | Boolean to run as root. If `true`: will run as root. If `True` and the user is overriden it will error. If any other value it will run as the `runner` user and allow an optional override. Default is `true` |
| `RUNNER_NAME` | The name of the runner to use. Supercedes (overrides) `RUNNER_NAME_PREFIX` |
| `RUNNER_NAME_PREFIX` | A prefix for a randomly generated name (followed by a random 13 digit string). You must not also provide `RUNNER_NAME`. Defaults to `github-runner` |
| `ACCESS_TOKEN` | A [github PAT](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) to use to generate `RUNNER_TOKEN` dynamically at container start. Not using this requires a valid `RUNNER_TOKEN` |
+22 -2
View File
@@ -25,6 +25,7 @@ _RUNNER_WORKDIR=${RUNNER_WORKDIR:-/_work}
_LABELS=${LABELS:-default}
_RUNNER_GROUP=${RUNNER_GROUP:-Default}
_GITHUB_HOST=${GITHUB_HOST:="github.com"}
_RUN_AS_ROOT=${RUN_AS_ROOT:="true"}
# ensure backwards compatibility
if [[ -z $RUNNER_SCOPE ]]; then
@@ -91,6 +92,10 @@ configure_runner() {
--replace \
${_EPHEMERAL} \
${_AUTO_UPDATE}
[[ ! -d "${_RUNNER_WORKDIR}" ]] && mkdir "${_RUNNER_WORKDIR}"
[[ $(id -u) -eq 0 ]] && /usr/bin/chown -R runner ${_RUNNER_WORKDIR} /opt/hostedtoolcache/ /actions-runner || :
}
@@ -124,5 +129,20 @@ if [[ ${_DISABLE_AUTOMATIC_DEREGISTRATION} == "false" ]]; then
trap deregister_runner SIGINT SIGQUIT SIGTERM INT TERM QUIT
fi
# Container's command (CMD) execution
"$@"
# Container's command (CMD) execution as runner user
if [[ ${_RUN_AS_ROOT} == "true" ]]; then
if [[ $(id -u) -eq 0 ]]; then
"$@"
else
echo "ERROR: RUN_AS_ROOT env var is set to true but the user has been overridden and is not running as root, but UID '$(id -u)'"
exit 1
fi
else
if [[ $(id -u) -eq 0 ]]; then
/usr/sbin/gosu runner "$@"
else
"$@"
fi
fi