From 3291cdc4cc7cda970b8d9e47e831db0cdc936130 Mon Sep 17 00:00:00 2001 From: Kiefer Chang Date: Tue, 2 Jan 2024 09:00:25 +0800 Subject: [PATCH] CI: switch to self-hosted action runner Signed-off-by: Kiefer Chang (cherry picked from commit ef5a34a8a687241886eb55cd7f435f298105c625) --- .github/workflows/vagrant-install.yaml | 96 ++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/vagrant-install.yaml diff --git a/.github/workflows/vagrant-install.yaml b/.github/workflows/vagrant-install.yaml new file mode 100644 index 000000000..28dc352d6 --- /dev/null +++ b/.github/workflows/vagrant-install.yaml @@ -0,0 +1,96 @@ +name: Vagrant install + +on: + pull_request: + types: [opened, reopened, synchronize] + +env: + LIBVIRT_DEFAULT_URI: "qemu:///system" + +jobs: + main: + name: Build and deploy + runs-on: + - self-hosted + - Linux + - kvm + - vagrant + - equinix + steps: + - uses: actions/checkout@v3 + - name: Build Harvester artifacts + run: | + make + - name: Clone and checkout ipxe-examples + id: ipxe + run: | + cd $HOME + if [ ! -d ipxe-examples ]; then + git clone https://github.com/harvester/ipxe-examples.git + fi + + cd ipxe-examples + git reset && git checkout . + git clean -fd + git pull + echo "VAGRANT_HOME=$HOME/ipxe-examples/vagrant-pxe-harvester" >> $GITHUB_OUTPUT + - name: Clean up previous vagrant deployment + working-directory: ${{ steps.ipxe.outputs.VAGRANT_HOME }} + run: | + vagrant destroy -f + - name: Remove OVMF.fd line if needed + working-directory: ${{ steps.ipxe.outputs.VAGRANT_HOME }} + run: | + if [ ! -f /usr/share/qemu/OVMF.fd ]; then + echo "Remove libvirt loader: can't find UEFI firmware" + sed 's/libvirt.loader.*/#libvirt.loader = /' Vagrantfile + fi + - name: Generate SSH keys + run: | + ssh-keygen -t rsa -q -N "" -f ./ci/terraform/tmp-ssh-key + - name: Set SSH key in ipxe-examples settings + run: | + export PUB_KEY=$(cat ./ci/terraform/tmp-ssh-key.pub) + yq e -i ".harvester_config.ssh_authorized_keys += [ strenv(PUB_KEY) ]" ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Set artifacts in ipxe-examples settings + run: | + yq e -i ".harvester_iso_url = \"file://${{ github.workspace }}/dist/artifacts/harvester-master-amd64.iso\"" ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + yq e -i ".harvester_kernel_url = \"file://${{ github.workspace }}/dist/artifacts/harvester-master-vmlinuz-amd64\"" ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + yq e -i ".harvester_ramdisk_url = \"file://${{ github.workspace }}/dist/artifacts/harvester-master-initrd-amd64\"" ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + yq e -i ".harvester_rootfs_url = \"file://${{ github.workspace }}/dist/artifacts/harvester-master-rootfs-amd64.squashfs\"" ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Setup cluster + working-directory: ${{ steps.ipxe.outputs.VAGRANT_HOME }} + run: | + ./setup_harvester.sh + - name: Enable soft emulation + working-directory: ./ci/terraform + run: | + ./enable_soft_emulation.sh ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Clean the previous temp files + working-directory: ./ci/terraform + run: | + ./cleanup_test_files.sh + - name: Testing existing files + working-directory: ./ci/terraform + run: | + ./check_files.sh ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Testing services status + working-directory: ./ci/terraform + run: | + ./check_services_status.sh ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Testing basic operations with terraform + working-directory: ./ci/terraform + run: | + curl https://releases.hashicorp.com/terraform/1.3.7/terraform_1.3.7_linux_amd64.zip -o terraform_bin.zip + unzip -o terraform_bin.zip + ./get_kubeconfig.sh ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + ./terraform init -no-color + ./terraform apply -auto-approve -no-color + - name: Test network on the VMs + working-directory: ./ci/terraform + run: | + ./test_terraform_vm.sh ${{ steps.ipxe.outputs.VAGRANT_HOME }}/settings.yml + - name: Clean up vagrant cluster + working-directory: ${{ steps.ipxe.outputs.VAGRANT_HOME }} + run: | + vagrant destroy -f