osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ci/+/43138?usp=email )
Change subject: ansible: add octsimtest sudo scripts ......................................................................
ansible: add octsimtest sudo scripts
Add the scripts that jenkins can execute with sudo during the octsimtest jobs, so they are properly versioned in a git repository.
restart-pcscd.sh is new (OS#7022), the other scripts were previously added for SYS#8011 last month and have been in use since then.
Related: SYS#8011 Change-Id: I9bcbbba156de0cea1f7fa49bfaeb99e6f1f90647 --- A ansible/files/octsimtest/restart-pcscd.sh A ansible/files/octsimtest/start-hook.sh A ansible/files/octsimtest/stop-hook.sh A ansible/files/octsimtest/sudoers.d-jenkins M ansible/hosts A ansible/setup-octsimtest.yml M ansible/util/known_hosts 7 files changed, 116 insertions(+), 0 deletions(-)
Approvals: Jenkins Builder: Verified jolly: Looks good to me, but someone else must approve pespin: Looks good to me, but someone else must approve osmith: Looks good to me, approved
diff --git a/ansible/files/octsimtest/restart-pcscd.sh b/ansible/files/octsimtest/restart-pcscd.sh new file mode 100644 index 0000000..fdcd630 --- /dev/null +++ b/ansible/files/octsimtest/restart-pcscd.sh @@ -0,0 +1,3 @@ +#!/bin/sh -e +# SYS#8011 +systemctl restart pcscd diff --git a/ansible/files/octsimtest/start-hook.sh b/ansible/files/octsimtest/start-hook.sh new file mode 100644 index 0000000..13a67d4 --- /dev/null +++ b/ansible/files/octsimtest/start-hook.sh @@ -0,0 +1,37 @@ +#!/bin/sh -e +# SYS#8011 +TMP_DIR=/tmp/osmo-ccid-firmware-tests +CAPTURE_BUS_ID="$(lsusb | grep sysmoOCTSIM | cut -d ' ' -f 2 | tr -d 0)" + +if [ -e "$TMP_DIR"/dumpcap.pid ]; then + kill -9 $(cat "$TMP_DIR"/dumpcap.pid) || true +fi + +rm -rf "$TMP_DIR" +mkdir -p "$TMP_DIR"/logs + +cd "$TMP_DIR" + +# Store current date, so stop-hook.sh can get pcscd logs from journalctl +date "+%F %H:%M:%S" >start_date + +echo "[start-hook] restarting pcscd" +sleep 1 +systemctl restart pcscd +sleep 1 + +# usbmon capture +if [ -n "$CAPTURE_BUS_ID" ]; then + echo "[start-hook] starting usbmon capture on bus $CAPTURE_BUS_ID" + modprobe usbmon + timeout 1h \ + dumpcap \ + -i usbmon"$CAPTURE_BUS_ID" \ + -w logs/usbmon.pcapng \ + >logs/dumpcap.log 2>&1 & + echo "$!" >dumpcap.pid +else + echo "[start-hook] warning: failed to get capture bus ID, skipping capture" +fi + +echo "[start-hook] done" diff --git a/ansible/files/octsimtest/stop-hook.sh b/ansible/files/octsimtest/stop-hook.sh new file mode 100644 index 0000000..b5722b4 --- /dev/null +++ b/ansible/files/octsimtest/stop-hook.sh @@ -0,0 +1,41 @@ +#!/bin/sh -e +# SYS#8011 +OUTPUT_DIR="$PWD" +TMP_DIR=/tmp/osmo-ccid-firmware-tests +START_DATE=$(cat "$TMP_DIR"/start_date) + +if ! [ -d "$TMP_DIR" ]; then + echo "[stop-hook] nothing to do" + exit 0 +fi + +cd "$TMP_DIR" + +show_size() { + printf "[stop-hook] " + du -h "$1" +} + +# Store pcscd log +echo "[stop-hook] getting pcscd logs since $START_DATE" +journalctl \ + -u pcscd.service \ + --since="$START_DATE" \ + >logs/pcscd.log +show_size logs/pcscd.log + +echo "[stop-hook] stopping usbmon capture" +kill -9 $(cat dumpcap.pid) || true +rm dumpcap.pid +show_size logs/usbmon.pcapng + +echo "[stop-hook] compressing usbmon capture" +pigz logs/usbmon.pcapng +show_size logs/usbmon.pcapng.gz + +chown -R jenkins:jenkins logs +cd "$OUTPUT_DIR" +mv "$TMP_DIR"/logs . +rm -rf "$TMP_DIR" + +echo "[stop-hook] done" diff --git a/ansible/files/octsimtest/sudoers.d-jenkins b/ansible/files/octsimtest/sudoers.d-jenkins new file mode 100644 index 0000000..a975094 --- /dev/null +++ b/ansible/files/octsimtest/sudoers.d-jenkins @@ -0,0 +1,3 @@ +jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/start-hook.sh +jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/stop-hook.sh +jenkins ALL=(root) NOPASSWD: /etc/osmo-ccid-firmware-tests/restart-pcscd.sh diff --git a/ansible/hosts b/ansible/hosts index c65dd40..9d854ce 100644 --- a/ansible/hosts +++ b/ansible/hosts @@ -22,6 +22,9 @@ [simtester] simtest ansible_host=10.9.25.94
+[octsimtester] +octsimtest ansible_host=10.9.25.92 + [obs_workers] build4-obsworker ansible_host=2a01:4f8:121:200a::1:2 obs_worker_instances=8 obs_worker_jobs=8 build5-obsworker ansible_host=2a01:4f8:140:926a::1:2 obs_worker_instances=8 obs_worker_jobs=8 diff --git a/ansible/setup-octsimtest.yml b/ansible/setup-octsimtest.yml new file mode 100644 index 0000000..93f3229 --- /dev/null +++ b/ansible/setup-octsimtest.yml @@ -0,0 +1,28 @@ +--- +- name: setup octsimtest + hosts: octsimtest + user: root + tasks: + + - name: install /etc/sudoers.d/jenkins + copy: + src: octsimtest/sudoers.d-jenkins + dest: /etc/sudoers.d/jenkins + + - name: install /etc/osmo-ccid-firmware-tests/restart-pcscd.sh + copy: + src: octsimtest/restart-pcscd.sh + dest: /etc/osmo-ccid-firmware-tests/restart-pcscd.sh + mode: 0755 + + - name: install /etc/osmo-ccid-firmware-tests/start-hook.sh + copy: + src: octsimtest/start-hook.sh + dest: /etc/osmo-ccid-firmware-tests/start-hook.sh + mode: 0755 + + - name: install /etc/osmo-ccid-firmware-tests/stop-hook.sh + copy: + src: octsimtest/stop-hook.sh + dest: /etc/osmo-ccid-firmware-tests/stop-hook.sh + mode: 0755 diff --git a/ansible/util/known_hosts b/ansible/util/known_hosts index c397642..84d62ad 100644 --- a/ansible/util/known_hosts +++ b/ansible/util/known_hosts @@ -14,3 +14,4 @@ 10.9.25.26 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHw8f7STEM6tZj/14dMG0aPcOLzpC0uSwoOlwAMv7Z3 10.9.25.28 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINEWffWCaHxwMs1W+m55WDHJSIR4O0eiTtcteJCBjKZK 10.9.25.94 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINnBQkBViNy6CyHbwOtyLBV5bG7yFxI93DJOfwIHDd/N +10.9.25.92 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8YZYuaz32dbIL3OBe/2hy4yauMR5rEsov207MB4Tq+