Split act-runner into its own pod. (#71)
``` $ laconic-so --stack act-runner deploy init --output act-runner.yml $ laconic-so --stack act-runner deploy create --spec-file act-runner.yml --deployment-dir ~/opt/deployments/act-runner-1 $ echo "CERC_GITEA_RUNNER_REGISTRATION_TOKEN=FOO" >> ~/opt/deployments/act-runner-1/config.env $ laconic-so deployment --dir ~/opt/deployments/act-runner-1 up ``` Reviewed-on: #71 Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com> Co-committed-by: Thomas E Lackey <telackey@bozemanpass.com>
This commit was merged in pull request #71.
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
# Set system time zone to prevent the tzdata package from hanging looking for user input
|
||||
RUN ln -snf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && echo $CONTAINER_TIMEZONE > /etc/timezone
|
||||
|
||||
# Install basic tools
|
||||
RUN apt update && apt install -y gpg curl apt-transport-https ca-certificates lsb-release build-essential
|
||||
|
||||
# Add Docker repo
|
||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
ARG NODE_MAJOR=18
|
||||
|
||||
# Add NodeJS repo
|
||||
# See: https://stackoverflow.com/a/77021599/1701505
|
||||
RUN set -uex; \
|
||||
apt-get update; \
|
||||
apt-get install -y ca-certificates curl gnupg; \
|
||||
mkdir -p /etc/apt/keyrings; \
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
|
||||
| gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" \
|
||||
> /etc/apt/sources.list.d/nodesource.list; \
|
||||
apt-get update; \
|
||||
apt-get install nodejs -y;
|
||||
|
||||
# Install Docker
|
||||
RUN apt update && apt install -y docker-ce && rm -rf /var/lib/apt/lists/*
|
||||
# Install sudo because some actions projects assume it is present, and it is present in GitHub runners
|
||||
RUN apt update && apt install -y sudo
|
||||
# Install software-properties-common so we have the add-apt-repository command, used by some actions to add a package repo
|
||||
RUN apt update && apt install -y software-properties-common
|
||||
+1
-1
@@ -29,4 +29,4 @@ Details on how to setup remote debugging of the gitea server inside its containe
|
||||
#### Action Runners
|
||||
|
||||
A Dockerized action runner is deployed by default for the labels `ubuntu-latest` and `ubuntu-22.04`. Details on deploying
|
||||
additional runners can be found [here](act-runner.md).
|
||||
additional runners can be found [here](../act-runner/act-runner.md).
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
# Example configuration file, it's safe to copy this as the default config file without any modification.
|
||||
|
||||
log:
|
||||
# The level of logging, can be trace, debug, info, warn, error, fatal
|
||||
level: info
|
||||
|
||||
runner:
|
||||
# Where to store the registration result.
|
||||
file: /data/.runner
|
||||
# Execute how many tasks concurrently at the same time.
|
||||
capacity: 1
|
||||
# # Extra environment variables to run jobs.
|
||||
# envs:
|
||||
# A_TEST_ENV_NAME_1: a_test_env_value_1
|
||||
# A_TEST_ENV_NAME_2: a_test_env_value_2
|
||||
# # Extra environment variables to run jobs from a file.
|
||||
# # It will be ignored if it's empty or the file doesn't exist.
|
||||
# env_file: .env
|
||||
# # The timeout for a job to be finished.
|
||||
# # Please note that the Gitea instance also has a timeout (3h by default) for the job.
|
||||
# # So the job could be stopped by the Gitea instance if it's timeout is shorter than this.
|
||||
timeout: 3h
|
||||
# Whether skip verifying the TLS certificate of the Gitea instance.
|
||||
insecure: false
|
||||
# The timeout for fetching the job from the Gitea instance.
|
||||
fetch_timeout: 5s
|
||||
# The interval for fetching the job from the Gitea instance.
|
||||
fetch_interval: 2s
|
||||
|
||||
cache:
|
||||
# Enable cache server to use actions/cache.
|
||||
enabled: true
|
||||
# The directory to store the cache data.
|
||||
# If it's empty, the cache data will be stored in $HOME/.cache/actcache.
|
||||
dir: ""
|
||||
# The host of the cache server.
|
||||
# It's not for the address to listen, but the address to connect from job containers.
|
||||
# So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
|
||||
host: "gitea.local"
|
||||
# The port of the cache server.
|
||||
# 0 means to use a random available port.
|
||||
port: 8088
|
||||
|
||||
container:
|
||||
# Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker).
|
||||
privileged: true
|
||||
# And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway).
|
||||
options: --add-host=gitea.local:host-gateway --volume "/var/lib/docker"
|
||||
@@ -42,28 +42,6 @@ services:
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
|
||||
runner:
|
||||
image: cerc/act-runner:local
|
||||
restart: always
|
||||
environment:
|
||||
# Note: eMdEwIzSo87nBh0UFWZlbp308j6TNWr3WhWxQqIc is a static token we use for convenience in stand-alone deployments. Not secure, obviously.
|
||||
- GITEA_RUNNER_REGISTRATION_TOKEN=${CERC_GITEA_RUNNER_REGISTRATION_TOKEN:-eMdEwIzSo87nBh0UFWZlbp308j6TNWr3WhWxQqIc}
|
||||
- GITEA_INSTANCE_URL=http://gitea.local:3000
|
||||
- GITEA_RUNNER_LABELS=ubuntu-latest:docker://cerc/act-runner-task-executor:local,ubuntu-22.04:docker://cerc/act-runner-task-executor:local
|
||||
- CONFIG_FILE=/config/act-runner-config.yml
|
||||
extra_hosts:
|
||||
- "gitea.local:host-gateway"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- act-runner-data:/data
|
||||
- act-runner-config:/config:ro
|
||||
ports:
|
||||
- 8088:8088
|
||||
|
||||
|
||||
volumes:
|
||||
gitea-data:
|
||||
postgres-data:
|
||||
act-runner-data:
|
||||
act-runner-config:
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
# Copyright © 2023 Vulcanize
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
||||
|
||||
from pathlib import Path
|
||||
from shutil import copy
|
||||
|
||||
|
||||
def create(context, extra_args):
|
||||
# Our goal here is just to copy the config file for act
|
||||
deployment_config_dir = context.deployment_dir.joinpath("data",
|
||||
"act-runner-config")
|
||||
source_config_file = Path(context.command_context.cluster_context.compose_files[0]).parent.joinpath("config", "act-runner-config.yml")
|
||||
copy(source_config_file, deployment_config_dir)
|
||||
Reference in New Issue
Block a user