[libcxx-commits] [llvm] [libcxx] Add libcxx runners lite image for small github action tasks (PR #75278)
via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Dec 12 19:36:16 PST 2023
https://github.com/EricWF created https://github.com/llvm/llvm-project/pull/75278
None
>From b94effb4ad96b19346a908b219b89eca30985ee9 Mon Sep 17 00:00:00 2001
From: eric <eric at efcs.ca>
Date: Tue, 12 Dec 2023 22:35:48 -0500
Subject: [PATCH] Add libcxx runners lite image for small github action tasks
---
.github/workflows/libcxx-runners-test.yaml | 33 ++++++++++
libcxx/utils/ci/Dockerfile.runner-lite | 72 ++++++++++++++++++++++
libcxx/utils/ci/ci-requirements.in | 14 +++++
libcxx/utils/ci/docker-compose.yml | 7 +++
4 files changed, 126 insertions(+)
create mode 100644 .github/workflows/libcxx-runners-test.yaml
create mode 100644 libcxx/utils/ci/Dockerfile.runner-lite
create mode 100644 libcxx/utils/ci/ci-requirements.in
diff --git a/.github/workflows/libcxx-runners-test.yaml b/.github/workflows/libcxx-runners-test.yaml
new file mode 100644
index 00000000000000..1a96e7284c10a6
--- /dev/null
+++ b/.github/workflows/libcxx-runners-test.yaml
@@ -0,0 +1,33 @@
+
+name: Libc++ Task Runners Test
+on:
+ pull_request:
+ paths:
+ - 'libcxx/**'
+ - 'libcxxabi/**'
+ - 'libunwind/**'
+ - 'runtimes/**'
+ - 'cmake/**'
+ - '.github/workflows/libcxx-runners-test.yaml'
+
+permissions:
+ contents: read # Default everything to read-only
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
+ cancel-in-progress: true
+
+jobs:
+ stage1:
+ if: github.repository_owner == 'llvm'
+ runs-on: libcxx-runners-1-set
+ steps:
+ - name: Breathing
+ run: echo hello
+ - name: Test Python
+ run: python3 -c "import sys; print(sys.version)"
+ - name: Test Checkout
+ uses: actions/checkout at v4
+ - name: End Step
+ if: always()
+ run: echo "End Step"
diff --git a/libcxx/utils/ci/Dockerfile.runner-lite b/libcxx/utils/ci/Dockerfile.runner-lite
new file mode 100644
index 00000000000000..3a56930f9c4dfd
--- /dev/null
+++ b/libcxx/utils/ci/Dockerfile.runner-lite
@@ -0,0 +1,72 @@
+#===----------------------------------------------------------------------===##
+#
+# Part of the LLVM Project, 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
+#
+#===----------------------------------------------------------------------===##
+
+# HACK: We set the base image in the docker-compose file depending on the final target (buildkite vs github actions).
+# This means we have a much slower container build, but we can use the same Dockerfile for both targets.
+ARG BASE_IMAGE
+FROM $BASE_IMAGE AS runner-lite
+
+# Make sure apt-get doesn't try to prompt for stuff like our time zone, etc.
+ENV DEBIAN_FRONTEND=noninteractive
+
+# HACK: The github actions runner image already has sudo and requires its use. The buildkite base image does not.
+# Reconcile this.
+RUN <<EOF
+ apt-get update || true
+ apt-get install -y sudo || true
+ echo "ALL ALL = (ALL) NOPASSWD: ALL" | tee /etc/sudoers || true
+EOF
+
+RUN sudo apt-get update \
+ && sudo apt-get install -y \
+ python3 \
+ python3-distutils \
+ python3-psutil \
+ python3-venv \
+ python3-pip \
+ git \
+ gpg \
+ wget \
+ bash \
+ curl \
+ python3 \
+ python3-dev \
+ libpython3-dev \
+ uuid-dev \
+ libncurses5-dev \
+ lsb-release \
+ wget \
+ unzip \
+ software-properties-common \
+ && sudo rm -rf /var/lib/apt/lists/*
+
+
+ENV PATH="/home/runner/.local/bin:${PATH}"
+COPY ci-requirements.in /tmp/ci-requirements.in
+
+RUN python3 -m pip install --upgrade pip && python3 -m pip install pip-tools
+
+# Compile down the requirements.in file into an exact requirements.txt file. Use that to install the packages.
+RUN pip-compile /tmp/ci-requirements.in --output-file /tmp/ci-requirements.txt && \
+ python3 -m pip install -r /tmp/ci-requirements.txt
+
+# Create a default virtual environment for the runner user.
+RUN cd /home/runner && python3 -m venv ./pyenv && \
+ echo "source /home/runner/pyenv/bin/activate" >> /home/runner/.bashrc && \
+ . ./pyenv/bin/activate && \
+ python3 -m pip install -r /tmp/ci-requirements.txt \
+
+# Install 'act' for running github actions locally. This provides an alternative to the run-buildbot script
+# while still providing reproducability.
+RUN curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
+
+WORKDIR /home/runner
+USER runner
+
+
+
diff --git a/libcxx/utils/ci/ci-requirements.in b/libcxx/utils/ci/ci-requirements.in
new file mode 100644
index 00000000000000..e1d77c90f172db
--- /dev/null
+++ b/libcxx/utils/ci/ci-requirements.in
@@ -0,0 +1,14 @@
+beartype
+flask
+google-api-python-client
+matplotlib
+networkx
+pandas
+peewee
+psutil
+psycopg2-binary
+pydantic>=2.0.0
+Pygithub
+requests
+rich
+tqdm
diff --git a/libcxx/utils/ci/docker-compose.yml b/libcxx/utils/ci/docker-compose.yml
index 26b341ced41550..23d32a584832c8 100644
--- a/libcxx/utils/ci/docker-compose.yml
+++ b/libcxx/utils/ci/docker-compose.yml
@@ -23,6 +23,13 @@ services:
args:
BASE_IMAGE: ghcr.io/actions/actions-runner:2.311.0
<<: *compiler_versions
+ actions-runner-lite:
+ image: ghcr.io/libcxx/actions-runner-lite:${TAG:-latest}
+ build:
+ context: .
+ dockerfile: Dockerfile.runner-lite
+ args:
+ BASE_IMAGE: ghcr.io/actions/actions-runner:2.311.0
android-buildkite-builder:
image: ghcr.io/libcxx/android-buildkite-builder:${TAG:-latest}
build:
More information about the libcxx-commits
mailing list