Skip to content

feat: migrate to terraform plugin framework #24

feat: migrate to terraform plugin framework

feat: migrate to terraform plugin framework #24

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Acceptance Test
on:
pull_request:
paths:
- .github/workflows/acceptance.yml
- '**.go'
push:
paths:
- .github/workflows/acceptance.yml
- '**.go'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-acceptance
cancel-in-progress: true
permissions:
contents: read
env:
CLOUDSTACK_API_URL: http://localhost:8080/client/api
CLOUDSTACK_VERSIONS: "['4.18.2.0', '4.19.0.1']"
jobs:
prepare-matrix:
runs-on: ubuntu-latest
outputs:
cloudstack-versions: ${{ steps.set-versions.outputs.cloudstack-versions }}
steps:
- name: Set versions
id: set-versions
run: |
echo "cloudstack-versions=${{ env.CLOUDSTACK_VERSIONS }}" >> $GITHUB_OUTPUT
acceptance-terraform:
name: Terraform ${{ matrix.terraform-version }} with Cloudstack ${{ matrix.cloudstack-version }}
needs: [prepare-matrix]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Configure Cloudstack v${{ matrix.cloudstack-version }}
uses: ./.github/workflows/setup-cloudstack
id: setup-cloudstack
with:
cloudstack-version: ${{ matrix.cloudstack-version }}
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: ${{ matrix.terraform-version }}
terraform_wrapper: false
- name: Run acceptance test
env:
CLOUDSTACK_USER_ID: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_USER_ID }}
CLOUDSTACK_API_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_API_KEY }}
CLOUDSTACK_SECRET_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_SECRET_KEY }}
run: |
make testacc
services:
cloudstack-simulator:
image: apache/cloudstack-simulator:${{ matrix.cloudstack-version }}
ports:
- 8080:5050
strategy:
fail-fast: false
matrix:
terraform-version:
- '1.7.*'
- '1.8.*'
cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }}
acceptance-opentofu:
name: OpenTofu ${{ matrix.opentofu-version }} with Cloudstack ${{ matrix.cloudstack-version }}
needs: [prepare-matrix]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- name: Configure Cloudstack v${{ matrix.cloudstack-version }}
uses: ./.github/workflows/setup-cloudstack
id: setup-cloudstack
with:
cloudstack-version: ${{ matrix.cloudstack-version }}
- uses: opentofu/setup-opentofu@v1
with:
tofu_version: ${{ matrix.opentofu-version }}
- name: Run acceptance test
env:
CLOUDSTACK_USER_ID: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_USER_ID }}
CLOUDSTACK_API_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_API_KEY }}
CLOUDSTACK_SECRET_KEY: ${{ steps.setup-cloudstack.outputs.CLOUDSTACK_SECRET_KEY }}
run: |
make testacc
services:
cloudstack-simulator:
image: apache/cloudstack-simulator:${{ matrix.cloudstack-version }}
ports:
- 8080:5050
strategy:
fail-fast: false
matrix:
opentofu-version:
- '1.6.*'
cloudstack-version: ${{ fromJson(needs.prepare-matrix.outputs.cloudstack-versions) }}
all-jobs-passed: # Will succeed if it is skipped
runs-on: ubuntu-latest
needs: [acceptance-terraform, acceptance-opentofu]
# Only run if any of the previous jobs failed
if: ${{ failure() }}
steps:
- name: Previous jobs failed
run: exit 1