Compare commits

...

16 Commits

Author SHA1 Message Date
799e7da2af Adding kubectl to runner. 2023-11-14 04:08:49 +00:00
ec278dd91c Updating version of Docker-compose. 2023-11-12 00:38:29 +00:00
7062c0ee89 Adding Docker Compose to runner. 2023-11-12 00:01:09 +00:00
c9f25f35fc Trying to fix docker. 2023-11-11 20:37:36 +00:00
6aa34d9898 Trying to fix docker. 2023-11-11 20:24:03 +00:00
01596cd560 Trying to fix docker. 2023-11-11 19:28:08 +00:00
17c7eb28a8 Trying to fix containers running docker. 2023-11-11 18:29:22 +00:00
c5ee05f81d Fixing Dockerfile. 2023-11-11 17:55:46 +00:00
39ffd53991 Adding Docker to runners. 2023-11-11 17:47:19 +00:00
168b82ba1c Adding missing dependencies 2023-11-10 00:41:55 +00:00
fb431da060 Adding to ubuntu some required libraries that cypress need. 2023-11-10 00:18:52 +00:00
d57fcf068b Fixing Dockerfile. Updating to version 1.0.6 2023-11-09 23:54:46 +00:00
447646eb64 Fixing typo. Updating to version 1.0.5 2023-11-09 23:48:45 +00:00
ce8da1ebfc Allow passwordless sudo. Updating to version 1.0.4 2023-11-09 23:41:50 +00:00
4ce1f1f109 Adding sudo and base libraries to ubuntu. 2023-11-09 23:18:30 +00:00
c75213effb Returning to use organizations. 2023-11-09 22:47:10 +00:00
4 changed files with 178 additions and 7 deletions

View File

@ -1,11 +1,55 @@
# base
FROM ubuntu:22.04
# Update Package
RUN apt-get update
# Install apt-utils
RUN apt-get install -y --no-install-recommends apt-utils
# Install Sudo
RUN apt-get -y install sudo
# Install Curl
RUN apt-get -y install curl
# Install VIM
RUN apt-get -y install vim
# set the github runner version
ARG RUNNER_VERSION="2.311.0"
# update the base packages and add a non-sudo user
RUN apt-get update -y && apt-get upgrade -y && useradd -m docker
# update the base packages, add a non-sudo user, and install Xvfb
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb && \
useradd -m docker && \
echo 'docker ALL=(ALL) NOPASSWD:ALL' | tee -a /etc/sudoers
#Installing Docker
# Let's start with some basic stuff.
RUN sudo apt-get update -qq && sudo apt-get install -qqy \
apt-transport-https \
ca-certificates \
curl \
lxc \
iptables
# Install Docker from Docker Inc. repositories.
RUN curl -sSL https://get.docker.com/ | sh
# Define additional metadata for our image.
VOLUME /var/lib/docker
#RUN sudo usermod -aG docker docker
#Finishing Installing Docker
#Install kubectl
RUN sudo apt-get update && sudo apt-get install
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
RUN echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
RUN sudo apt-get update
RUN sudo apt-get install -y kubectl
#Finishing Instaling kubectl
#Install Docker Compose
RUN sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
RUN sudo chmod +x /usr/local/bin/docker-compose
RUN docker-compose --version
#Finishing Installing Docker Compose
# install python and the packages the your code depends on along with jq so we can parse JSON
# add additional packages as necessary
@ -30,5 +74,10 @@ RUN chmod +x start.sh
# set the user to "docker" so all subsequent commands are run as the docker user
USER docker
# Install the magic wrapper.
ADD ./wrapdocker.sh /usr/local/bin/wrapdocker.sh
RUN sudo chmod +x /usr/local/bin/wrapdocker.sh
RUN sudo sed -i "2 i\exec sudo /usr/local/bin/wrapdocker.sh &" start.sh
# set the entrypoint to the start.sh script
ENTRYPOINT ["./start.sh"]

View File

@ -1,3 +1,3 @@
# Docker Github Action Runner
## Version 1.0.1
## Version 1.0.17

View File

@ -1,14 +1,13 @@
#!/bin/bash
OWNER=$OWNER
REPO=$REPO
ORGANIZATION=$ORGANIZATION
ACCESS_TOKEN=$ACCESS_TOKEN
REG_TOKEN=$(curl -sX POST -H "Authorization: token ${ACCESS_TOKEN}" https://api.github.com/repos/${OWNER}/${REPO}/actions/runners/registration-token | jq .token --raw-output)
REG_TOKEN=$(curl -sX POST -H "Authorization: token ${ACCESS_TOKEN}" https://api.github.com/orgs/${ORGANIZATION}/actions/runners/registration-token | jq .token --raw-output)
cd /home/docker/actions-runner
./config.sh --url https://github.com/${OWNER}/${REPO} --token ${REG_TOKEN}
./config.sh --url https://github.com/${ORGANIZATION} --token ${REG_TOKEN}
cleanup() {
echo "Removing runner..."

123
wrapdocker.sh Normal file
View File

@ -0,0 +1,123 @@
#!/bin/bash
if [[ -z "${HOME_USER}" ]]; then
HOME_USER="docker"
fi
#Ensure that the iptables legacy binary is used instead of the iptables-nft variant
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# Ensure that all nodes in /dev/mapper correspond to mapped devices currently loaded by the device-mapper kernel driver
dmsetup mknodes
# First, make sure that cgroups are mounted correctly.
CGROUP=/sys/fs/cgroup
: {LOG:=stdio}
[ -d $CGROUP ] ||
mkdir $CGROUP
mountpoint -q $CGROUP ||
mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup $CGROUP || {
echo "Could not make a tmpfs mount. Did you use --privileged?"
exit 1
}
if [ -d /sys/kernel/security ] && ! mountpoint -q /sys/kernel/security
then
mount -t securityfs none /sys/kernel/security || {
echo "Could not mount /sys/kernel/security."
echo "AppArmor detection and --privileged mode might break."
}
fi
# Mount the cgroup hierarchies exactly as they are in the parent system.
for SUBSYS in $(cut -d: -f2 /proc/1/cgroup)
do
[ -d $CGROUP/$SUBSYS ] || mkdir $CGROUP/$SUBSYS
mountpoint -q $CGROUP/$SUBSYS ||
mount -n -t cgroup -o $SUBSYS cgroup $CGROUP/$SUBSYS
# The two following sections address a bug which manifests itself
# by a cryptic "lxc-start: no ns_cgroup option specified" when
# trying to start containers withina container.
# The bug seems to appear when the cgroup hierarchies are not
# mounted on the exact same directories in the host, and in the
# container.
# Named, control-less cgroups are mounted with "-o name=foo"
# (and appear as such under /proc/<pid>/cgroup) but are usually
# mounted on a directory named "foo" (without the "name=" prefix).
# Systemd and OpenRC (and possibly others) both create such a
# cgroup. To avoid the aforementioned bug, we symlink "foo" to
# "name=foo". This shouldn't have any adverse effect.
echo $SUBSYS | grep -q ^name= && {
NAME=$(echo $SUBSYS | sed s/^name=//)
ln -s $SUBSYS $CGROUP/$NAME
}
# Likewise, on at least one system, it has been reported that
# systemd would mount the CPU and CPU accounting controllers
# (respectively "cpu" and "cpuacct") with "-o cpuacct,cpu"
# but on a directory called "cpu,cpuacct" (note the inversion
# in the order of the groups). This tries to work around it.
[ $SUBSYS = cpuacct,cpu ] && ln -s $SUBSYS $CGROUP/cpu,cpuacct
done
# Note: as I write those lines, the LXC userland tools cannot setup
# a "sub-container" properly if the "devices" cgroup is not in its
# own hierarchy. Let's detect this and issue a warning.
grep -q :devices: /proc/1/cgroup ||
echo "WARNING: the 'devices' cgroup should be in its own hierarchy."
grep -qw devices /proc/1/cgroup ||
echo "WARNING: it looks like the 'devices' cgroup is not mounted."
# Now, close extraneous file descriptors.
pushd /proc/self/fd >/dev/null
for FD in *
do
case "$FD" in
# Keep stdin/stdout/stderr
[012])
;;
# Nuke everything else
*)
eval exec "$FD>&-"
;;
esac
done
popd >/dev/null
# If a pidfile is still around (for example after a container restart),
# delete it so that docker can start.
rm -rf /var/run/docker.pid
# If we were given a PORT environment variable, start as a simple daemon;
# otherwise, spawn a shell as well
if [ "$PORT" ]
then
exec dockerd -H 0.0.0.0:$PORT -H unix:///var/run/docker.sock \
$DOCKER_DAEMON_ARGS
else
if [ "$LOG" == "file" ]
then
dockerd $DOCKER_DAEMON_ARGS &>/var/log/docker.log &
else
dockerd $DOCKER_DAEMON_ARGS &
fi
(( timeout = 60 + SECONDS ))
until docker info >/dev/null 2>&1
do
if (( SECONDS >= timeout )); then
echo 'Timed out trying to connect to internal docker host.' >&2
break
fi
sleep 1
done
sudo chmod -R a+rwX /var/run/docker.sock
sudo su - ${HOME_USER} -c "sudo usermod -aG docker ${HOME_USER}"
[[ $1 ]] && exec "$@"
exec bash --login
fi