Skip to content

ci: add acceptance tests with TCG emulation #427

ci: add acceptance tests with TCG emulation

ci: add acceptance tests with TCG emulation #427

Workflow file for this run

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