これを参考に実施する https://forum.vyos.io/t/how-to-properly-build-and-smoketest-vyos/12198/2
まずこれを叩き込む
base_dir=$HOME/private/vyos
ssh_tmp_dir=$base_dir/tmp/.ssh
mkdir -p $base_dir/vyos
cat << EOF > $base_dir/vybld.sh
#!/bin/bash
# Ensure the base directory exists
if [ ! -d "$base_dir" ]; then
echo "Base directory $base_dir does not exist. Creating..."
mkdir -p "$base_dir"
fi
# Ensure the SSH temporary directory exists
if [ ! -d "$ssh_tmp_dir" ]; then
echo "Temporary SSH directory $ssh_tmp_dir does not exist. Creating..."
mkdir -p "$ssh_tmp_dir"
fi
# Check and copy .ssh/config
if [ -f "$HOME/.ssh/config" ]; then
echo "Copying SSH config to $ssh_tmp_dir/config..."
cp "$HOME/.ssh/config" "$ssh_tmp_dir/config"
chmod 600 "$ssh_tmp_dir/config"
else
echo "No SSH config file found at $HOME/.ssh/config. Skipping."
fi
# Check and copy entire .ssh directory
if [ -d "$HOME/.ssh" ]; then
echo "Copying entire .ssh directory to $ssh_tmp_dir..."
rsync -a "$HOME/.ssh/" "$ssh_tmp_dir/"
chmod -R go-rwx "$ssh_tmp_dir"
else
echo "No .ssh directory found at $HOME/.ssh. Skipping."
fi
# Run Docker
docker run --rm -it \
-v "$(pwd)":/vyos \
-v "$HOME/.gitconfig:/etc/gitconfig" \
-v "$ssh_tmp_dir:/root/.ssh" \
-w /vyos --privileged --sysctl net.ipv6.conf.lo.disable_ipv6=0 \
-e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \
-e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) \
vyos/vyos-build:current bash
EOF
chmod +x vybld.sh
cd $base_dir
git clone -b current --single-branch https://github.com/vyos/vyos-build
# your repo
# git clone -b T1234 --single-branch https://github.com/username/vyos-1x
git clone [email protected]:takehaya/vyos-1x.git
sudo ./vybld.sh
# docker exec後
sudo chown -R root:root /root/.ssh
vyox-1x debian パッケージ (.deb) をビルドして 作成した .deb ファイルを vyos-build/packages ディレクトリに移動します。
cd vyos-1x
dpkg-buildpackage -uc -us -tc -b
mv ../*.deb ../vyos-build/packages/
スモークテストをするためにリリースビルドを作る
cd ../vyos-build
sudo ./build-vyos-image \
--architecture amd64 \
--build-by "[email protected]" \
--vyos-mirror https://rolling-packages.vyos.net/current/ \
--debian-mirror http://deb.debian.org/debian/ \
--build-type release \
--custom-package vyos-1x-smoketest \
--version "T6013-2024-01" \
generic
ちなみにスモークテストをしない前提でビルドする方法はこれ
cd ../vyos-build
sudo ./build-vyos-image \
--architecture amd64 \
--build-by "[email protected]" \
--vyos-mirror https://rolling-packages.vyos.net/current/ \
--debian-mirror http://deb.debian.org/debian/ \
--build-type release \
--version "T6013-2024-01" \
generic
なお、自分がやってる時はパッケージの参照がそれだと古いらしくて mirrorを抜いて動かしてる.謎なので調べたいところ。
sudo ./build-vyos-image \
--architecture amd64 \
--build-by "[email protected]" \
--build-type release \
--custom-package vyos-1x-smoketest \
--version "T6013-2024-01" \
generic
で、やっとテストにはいる ちなみに実際のCIでのスモークテストの流れはこれがわかりやすいのでその通りにすると良さそう。 https://github.com/vyos/vyos-1x/blob/eecf5daea2c24505f1b9112580577211e383cb89/.github/workflows/package-smoketest.yml#L23
とりあえずこれがやりたそうなCIと同一のunittestっぽい。vyos-buildリポジトリにあるmakefileには以下のコマンドが叩けるようになってる。
sudo make test-no-interfaces
あまり早くならないので調べるとこういうのがある.これだけだとテストしたいやつだけやれる
sudo scripts/check-qemu-install --debug --configd --smoketest --match=service_ssh --uefi --no-interfaces build/live-image-amd64.hybrid.iso