Skip to content

Instantly share code, notes, and snippets.

@takehaya
Last active December 16, 2024 02:28
Show Gist options
  • Save takehaya/fcdd9db0f0382ec1cd5df66043da2029 to your computer and use it in GitHub Desktop.
Save takehaya/fcdd9db0f0382ec1cd5df66043da2029 to your computer and use it in GitHub Desktop.

vyosにスモークテストを追加する時の流れ

これを参考に実施する https://forum.vyos.io/t/how-to-properly-build-and-smoketest-vyos/12198/2

dockerでベース環境を作る

まずこれを叩き込む

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

必要なリポジトリを置いておく。その上でdockerを立ち上げる

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

imageのビルドをしていく

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment