ci: add acceptance tests with TCG emulation #427
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Test | |
| on: | |
| pull_request: | |
| paths-ignore: | |
| - '*.md' | |
| - 'docs/*' | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '*.md' | |
| - 'docs/*' | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| go-version: ["1.25.x"] | |
| steps: | |
| - uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go-version }} | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 2 | |
| - name: golangci-lint | |
| uses: golangci/golangci-lint-action@v7 | |
| with: | |
| version: v2.6.1 | |
| only-new-issues: true | |
| build: | |
| name: Build | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| - {os: ubuntu-latest, go: 1.25} | |
| - {os: windows-latest, go: 1.25} | |
| - {os: macos-latest, go: 1.25} | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go }} | |
| id: go | |
| - name: Check out code into the Go module directory | |
| uses: actions/checkout@v4 | |
| - name: Build | |
| run: | | |
| make build | |
| - name: Test | |
| run: | | |
| make test | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: terraform-provider-libvirt-${{ matrix.os }} | |
| path: ${{ github.workspace }}/terraform-provider-libvirt* | |
| acceptance: | |
| name: Acceptance Tests (${{ matrix.tf-binary }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| tf-binary: [terraform, opentofu] | |
| go-version: ["1.25.x"] | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: ${{ matrix.go-version }} | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| - name: Install libvirt and QEMU | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| qemu-system-x86 \ | |
| libvirt-daemon-system \ | |
| libvirt-clients \ | |
| libvirt-dev | |
| - name: Start libvirtd and configure permissions | |
| run: | | |
| sudo systemctl start libvirtd | |
| sudo systemctl status libvirtd | |
| # Add runner to libvirt group | |
| sudo usermod -a -G libvirt runner | |
| # Change socket permissions to allow group access | |
| sudo chmod 666 /var/run/libvirt/libvirt-sock | |
| - name: Install Terraform | |
| if: matrix.tf-binary == 'terraform' | |
| uses: hashicorp/setup-terraform@v3 | |
| with: | |
| terraform_version: latest | |
| - name: Install OpenTofu | |
| if: matrix.tf-binary == 'opentofu' | |
| uses: opentofu/setup-opentofu@v1 | |
| with: | |
| tofu_version: latest | |
| - name: Run Acceptance Tests | |
| env: | |
| TF_ACC: "1" | |
| TF_PROVIDER_LIBVIRT_DOMAIN_TYPE: "qemu" | |
| TF_ACC_PROVIDER_NAMESPACE: "dmacvicar" | |
| TF_ACC_PROVIDER_HOST: "registry.terraform.io" | |
| run: | | |
| # Get absolute path to terraform/tofu binary | |
| if [ "${{ matrix.tf-binary }}" = "opentofu" ]; then | |
| export TF_ACC_TERRAFORM_PATH=$(which tofu) | |
| else | |
| export TF_ACC_TERRAFORM_PATH=$(which terraform) | |
| fi | |
| echo "Using Terraform CLI at: $TF_ACC_TERRAFORM_PATH" | |
| make testacc |