From ef47185e2a191fcb555f0e4d11ae5d2531dec632 Mon Sep 17 00:00:00 2001 From: Paul Larson Date: Thu, 21 Nov 2024 14:14:46 -0600 Subject: [PATCH] Add testflinger-testenv container --- .../build-testflinger-testenv-container.yml | 52 +++++++++++++++++++ agent/extra/testflinger-testenv/Dockerfile | 12 +++++ agent/extra/testflinger-testenv/README | 1 + 3 files changed, 65 insertions(+) create mode 100644 .github/workflows/build-testflinger-testenv-container.yml create mode 100644 agent/extra/testflinger-testenv/Dockerfile create mode 100644 agent/extra/testflinger-testenv/README diff --git a/.github/workflows/build-testflinger-testenv-container.yml b/.github/workflows/build-testflinger-testenv-container.yml new file mode 100644 index 000000000..b8ca0d5f5 --- /dev/null +++ b/.github/workflows/build-testflinger-testenv-container.yml @@ -0,0 +1,52 @@ +name: Build testflinger-testenv container image + +on: + push: + branches: + - main + paths: + - agent/extra/testflinger-testenv/** + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/testflinger-testenv + +jobs: + build-testflinger-testenv: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + config-inline: | + [registry."docker.io"] + mirrors = ["https://github-runner-dockerhub-cache.canonical.com:5000"] + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push backend Docker image + uses: docker/build-push-action@v6 + with: + context: ./agent/extra/testflinger-testenv + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/agent/extra/testflinger-testenv/Dockerfile b/agent/extra/testflinger-testenv/Dockerfile new file mode 100644 index 000000000..5a6d84eba --- /dev/null +++ b/agent/extra/testflinger-testenv/Dockerfile @@ -0,0 +1,12 @@ +FROM ubuntu:20.04 +ENV container docker +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common expect sudo openssh-client virtualenv curl wget build-essential python3-setuptools python3-dev python3-pip python3-requests python3-psutil git +RUN pip3 install PyYaml netifaces +RUN adduser -u 1000 --disabled-password ubuntu +RUN echo "ubuntu ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/ubuntu && \ + chmod 0440 /etc/sudoers.d/ubuntu +#Avoid sudo rlimit error +RUN echo "Set disable_coredump false" >> /etc/sudo.conf +USER ubuntu +WORKDIR /home/ubuntu +CMD [ "/bin/bash" ] diff --git a/agent/extra/testflinger-testenv/README b/agent/extra/testflinger-testenv/README new file mode 100644 index 000000000..3ef680e6a --- /dev/null +++ b/agent/extra/testflinger-testenv/README @@ -0,0 +1 @@ +This Dockerfile creates a basic test environment for running the test phase of testflinger agents in a Docker container.