| #!/bin/bash |
| |
| # Copyright 2022 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| # Installs and sets up the GitHub actions runner, creating services to start and |
| # tear down the runner. |
| |
| set -xeEuo pipefail |
| |
| SCRIPT_DIR="$(dirname -- "$( readlink -f -- "$0"; )")"; |
| source "${SCRIPT_DIR}/functions.sh" |
| |
| mkdir /runner-root |
| |
| RUNNER_TYPE="$(get_attribute github-runner-type)" |
| |
| # On the CPU machines we use a ramdisk because they have 360GB of RAM, but the |
| # GPU machines only have 80GB. We don't use local SSD on the CPU machines |
| # because they require a minimum of 16 local SSD if any, which is quite wasteful |
| # (increases cost by about 20%). |
| if [[ "${RUNNER_TYPE}" == gpu ]]; then |
| echo "Formatting and mounting local SSD for working directory" |
| mkfs.ext4 -F /dev/nvme0n1 |
| # Options suggested from https://cloud.google.com/compute/docs/disks/optimizing-local-ssd-performance#disable_flush |
| mount --options discard,defaults,nobarrier /dev/nvme0n1 /runner-root |
| else |
| echo "Mounting tmpfs for working directory" |
| mount --types tmpfs --options size=100g tmpfs /runner-root |
| fi |
| |
| cp -r "${SCRIPT_DIR}" /runner-root/config |
| chown -R runner:runner /runner-root/ |
| |
| echo "Fetching the runner archive" |
| RUNNER_VERSION="$(get_attribute github-runner-version)" |
| RUNNER_ARCHIVE="actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz" |
| RUNNER_ARCHIVE_DIGEST="$(get_attribute github-runner-archive-digest)" |
| |
| cd /runner-root |
| mkdir actions-runner |
| cd actions-runner |
| nice_curl \ |
| "https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/${RUNNER_ARCHIVE}" \ |
| -o "${RUNNER_ARCHIVE}" |
| |
| echo "${RUNNER_ARCHIVE_DIGEST} *${RUNNER_ARCHIVE}" | shasum -a 256 -c |
| tar xzf "${RUNNER_ARCHIVE}" |
| ln -s ../config/runner.env .env |
| |
| echo "Registering the runner." |
| runuser --user runner /runner-root/config/register.sh |
| |
| echo "Loading systemd services" |
| cp /runner-root/config/systemd/system/* /etc/systemd/system/ |
| systemctl daemon-reload |
| |
| echo "Enabling systemd services." |
| find /runner-root/config/systemd/system/ -type f -printf "%f\n" \ |
| | xargs systemctl enable |
| |
| echo "Starting the runner services" |
| systemctl start runner-setup.target |