Merge pull request #1466 from grvvy/hub_update
ci: usb hub ppps handling overhaul
This commit is contained in:
22
Dockerfile
22
Dockerfile
@ -1,12 +1,18 @@
|
|||||||
# Sandbox test environment for HackRF
|
# Environment for HackRF HIL testing with Jenkins CI
|
||||||
FROM ubuntu:22.04
|
FROM ubuntu:22.04
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
# Override interactive installations and install prerequisites
|
# Copy usb hub script from Jenkins' container
|
||||||
|
COPY --from=gsg-jenkins /startup/hubs.py /startup/hubs.py
|
||||||
|
COPY --from=gsg-jenkins /startup/.hubs /startup/.hubs
|
||||||
|
RUN ln -s /startup/hubs.py /usr/local/bin/hubs
|
||||||
|
|
||||||
|
# Override interactive installations and install software dependencies
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential \
|
build-essential \
|
||||||
cmake \
|
cmake \
|
||||||
|
curl \
|
||||||
dfu-util \
|
dfu-util \
|
||||||
gcc-arm-none-eabi \
|
gcc-arm-none-eabi \
|
||||||
git \
|
git \
|
||||||
@ -16,8 +22,18 @@ RUN apt-get update && apt-get install -y \
|
|||||||
python3 \
|
python3 \
|
||||||
python3-pip \
|
python3-pip \
|
||||||
python3-yaml \
|
python3-yaml \
|
||||||
|
usbutils \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN pip3 install git+https://github.com/CapableRobot/CapableRobot_USBHub_Driver --upgrade
|
|
||||||
|
# Install USB hub PPPS dependencies
|
||||||
|
RUN pip3 install python-dotenv git+https://github.com/CapableRobot/CapableRobot_USBHub_Driver --upgrade
|
||||||
|
RUN curl -L https://github.com/mvp/uhubctl/archive/refs/tags/v2.5.0.tar.gz > uhubctl-2.5.0.tar.gz \
|
||||||
|
&& mkdir uhubctl-2.5.0 \
|
||||||
|
&& tar -xvzf uhubctl-2.5.0.tar.gz -C uhubctl-2.5.0 --strip-components 1 \
|
||||||
|
&& rm uhubctl-2.5.0.tar.gz \
|
||||||
|
&& cd uhubctl-2.5.0 \
|
||||||
|
&& make \
|
||||||
|
&& make install
|
||||||
|
|
||||||
# Inform Docker that the container is listening on port 8080 at runtime
|
# Inform Docker that the container is listening on port 8080 at runtime
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
34
Jenkinsfile
vendored
34
Jenkinsfile
vendored
@ -1,23 +1,23 @@
|
|||||||
pipeline {
|
pipeline {
|
||||||
agent {
|
agent any
|
||||||
dockerfile {
|
|
||||||
args '--group-add=46 --device-cgroup-rule="c 189:* rmw" -v /dev/bus/usb:/dev/bus/usb'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stages {
|
stages {
|
||||||
stage('Build (Host)') {
|
stage('Build Docker Image') {
|
||||||
|
steps {
|
||||||
|
sh 'docker build -t hackrf https://github.com/greatscottgadgets/hackrf.git'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Test Suite') {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'hackrf'
|
||||||
|
reuseNode true
|
||||||
|
args '--group-add=20 --group-add=46 --device-cgroup-rule="c 189:* rmw" --device-cgroup-rule="c 166:* rmw" -v /dev/bus/usb:/dev/bus/usb -e TESTER=0000000000000000325866e629a25623 -e EUT=RunningFromRAM'
|
||||||
|
}
|
||||||
|
}
|
||||||
steps {
|
steps {
|
||||||
sh './ci-scripts/install-host.sh'
|
sh './ci-scripts/install-host.sh'
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build (Firmware)') {
|
|
||||||
steps {
|
|
||||||
sh './ci-scripts/install-firmware.sh'
|
sh './ci-scripts/install-firmware.sh'
|
||||||
}
|
sh 'hubs all off'
|
||||||
}
|
|
||||||
stage('Test') {
|
|
||||||
steps {
|
|
||||||
sh './ci-scripts/configure-hubs.sh --off'
|
|
||||||
retry(3) {
|
retry(3) {
|
||||||
sh './ci-scripts/test-host.sh'
|
sh './ci-scripts/test-host.sh'
|
||||||
}
|
}
|
||||||
@ -32,9 +32,9 @@ pipeline {
|
|||||||
retry(3) {
|
retry(3) {
|
||||||
sh 'python3 ci-scripts/test-transfer.py rx'
|
sh 'python3 ci-scripts/test-transfer.py rx'
|
||||||
}
|
}
|
||||||
sh './ci-scripts/configure-hubs.sh --off'
|
sh 'hubs all off'
|
||||||
sh 'python3 ci-scripts/test-sgpio-debug.py'
|
sh 'python3 ci-scripts/test-sgpio-debug.py'
|
||||||
sh './ci-scripts/configure-hubs.sh --reset'
|
sh 'hubs all reset'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
usbhub --disable-i2c --hub D9D1 power state --port 1,2,3,4 $1
|
|
||||||
usbhub --disable-i2c --hub 624C power state --port 1,2,3,4 $1
|
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
usbhub --disable-i2c --hub D9D1 power state --port 2 --reset
|
hubs hackrf_dfu reset
|
||||||
sleep 1s
|
sleep 1s
|
||||||
dfu-util --device 1fc9:000c --alt 0 --download firmware/hackrf_usb/build/hackrf_usb.dfu
|
dfu-util --device 1fc9:000c --alt 0 --download firmware/hackrf_usb/build/hackrf_usb.dfu
|
||||||
sleep 1s
|
sleep 1s
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
usbhub --disable-i2c --hub D9D1 power state --port 2 --reset
|
hubs hackrf_dfu reset
|
||||||
sleep 1s
|
sleep 1s
|
||||||
host/build/hackrf-tools/src/hackrf_info
|
host/build/hackrf-tools/src/hackrf_info
|
||||||
EXIT_CODE="$?"
|
EXIT_CODE="$?"
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
|
from os import environ
|
||||||
|
|
||||||
EUT = "RunningFromRAM"
|
EUT = environ.get('EUT')
|
||||||
TESTER = "0000000000000000325866e629a25623"
|
TESTER = environ.get('TESTER')
|
||||||
PASS, FAIL = range(2)
|
PASS, FAIL = range(2)
|
||||||
|
|
||||||
|
|
||||||
@ -87,8 +88,7 @@ def check_signal(freq, bins):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
write_bytes()
|
write_bytes()
|
||||||
tester_hub_on = subprocess.Popen(["usbhub", "--disable-i2c", "--hub", "624C",
|
tester_hub_on = subprocess.Popen(["hubs", "hackrf", "reset"])
|
||||||
"power", "state", "--port", "2", "--reset"])
|
|
||||||
tester_hub_on.wait()
|
tester_hub_on.wait()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
eut_clkout_on = subprocess.Popen(["host/build/hackrf-tools/src/hackrf_clock",
|
eut_clkout_on = subprocess.Popen(["host/build/hackrf-tools/src/hackrf_clock",
|
||||||
|
Reference in New Issue
Block a user