Skip to content

Prepare resources in the GitHub action for test scripts #35

Prepare resources in the GitHub action for test scripts

Prepare resources in the GitHub action for test scripts #35

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events for any branch
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
test:
# The type of runner that the job will run on
runs-on: ubuntu-24.04
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
# Create a network namespace in the GitHub-hosted runner VM,
# simulating a primary bridge network on TrueNAS SCALE
- name: Set up networking resources
run: |
sudo -s <<END
sed -i -e 's/^#DNSStubListener=yes$/DNSStubListener=no/' /etc/systemd/resolved.conf
systemctl stop systemd-resolved
systemctl status systemd-resolved
rm /etc/resolv.conf
echo 'nameserver 1.1.1.1' > /etc/resolv.conf
apt-get install -qq -y \
systemd-container
cat <<NETWORKCONFIG >/etc/systemd/network/10-br1.network
[Match]
Kind=bridge
Name=br1
[Network]
# Default to using a /24 prefix, giving up to 253 addresses per virtual network.
Address=0.0.0.0/24
LinkLocalAddressing=yes
DHCPServer=yes
IPMasquerade=both
LLDP=yes
EmitLLDP=customer-bridge
IPv6AcceptRA=no
IPv6SendRA=yes
NETWORKCONFIG
systemctl restart systemd-networkd
ip link add name br1 type bridge
END
# (temporary)
- name: Examine the GitHub-hosted runner environment
run: |
uname -r
cat /etc/os-release
python3 --version
echo
for path in /etc/systemd/network* /etc/systemd/resolve* /etc/resolv.conf ; do
echo "✳️ $path"
[ -d "$path" ] && ls -la "$path" || cat "$path"
echo
done
ip addr
# NOTE: <https://github.com/marketplace/actions/tune-github-hosted-runner-network>
# TODO: create zpool with virtual disks, create jailmaker dataset and test jlmkr.py from there
# https://medium.com/@abaddonsd/zfs-usage-with-virtual-disks-62898064a29b
- name: Create a parent ZFS dataset
run: |
sudo -s <<END
apt-get install -y -qq zfsutils-linux
modinfo zfs | grep version
zfs --version
zpool --version
END
# Runs a single command using the runners shell
- name: Run the test script
env:
PYTHONUNBUFFERED: 1
run: |
sudo chown 0:0 jlmkr.py test/test.sh
sudo chmod +x jlmkr.py test/test.sh
sudo ./test/test.sh