Skip to content
Snippets Groups Projects

feat: configurable device toolchain

Merged Imported Jordan Bonser requested to merge configurable_device_toolchain into main

A new configurable device toolchain is now available, which will allow a user to run on an ssh capable device.

The ssh details can be passed in using string_flags for the bazel command.

A new SSHStrategy has been created for SSH Access to devices along with allowing the port to be specified as a str to override the NetworkService resources port.

This portion is required to allow passing in the port via the environment variable, as part of the !template functionality of the labgrid config.yaml.

Testing

I used a very simple docker image:

FROM ubuntu:24.04

RUN apt-get update && apt-get install -y openssh-server

RUN mkdir /var/run/sshd

RUN echo "root:password" | chpasswd

RUN echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

CMD ["/usr/sbin/sshd", "-D"]
docker build -t ssh_device:latest .

Then to run:

docker run -d -p 2022:22 ssh_device:latest

Finally running a test, if you were to create a new bazel build file at e2e/configurable/BUILD.bazel, that looks like:

load("@rules_labgrid//labgrid/genrule:defs.bzl", "labgrid_genrule")


platform(
    name = "configurable-localhost",
    constraint_values = [
        "@rules_labgrid//labgrid/constraint/device:configurable",
    ],
    parents = ["@local_config_platform//:host"],
    visibility = ["//visibility:public"],
)

labgrid_genrule(
    name = "os-release",
    srcs = ["@ape//ape:cat"],
    outs = ["stdout.log"],
    cmd = "$(location @rules_labgrid//labgrid/run) $(location @ape//ape:cat) /etc/os-release > $@",
    platform = ":configurable-localhost",
    tools = ["@rules_labgrid//labgrid/run"],
)

You could then build it like so:

cd e2e
bazelisk build //configurable:os-release --@rules_labgrid//labgrid/flag/device:password=password --@rules_labgrid//labgrid/flag/device:port=2022

which should fill stdout.log with this for the docker image above:

PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

Fixes #26 (closed)

Edited by Jordan Bonser

Merge request reports

Checking pipeline status.

Approved by

Merged by Alex TerceteAlex Tercete 9 months ago (Jan 29, 2025 1:40pm UTC)

Merge details

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Matthew Clarkson
  • Matthew Clarkson
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading