name: TF Acceptance Tests Workflow on: pull_request: types: [opened, synchronize, reopened] branches: - alpha - main push: branches: - master workflow_dispatch: inputs: enable_debug: description: "enable terraform debug logs" type: boolean default: false required: true test_timeout_string: description: "string that determines the timeout (default: 45m)" type: string default: '90m' required: true test_file: description: "string that determines the test file to run (default all tests)" type: choice options: - tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/wait/postgresflexalpha - tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/services/postgresflexalpha - tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/wait/sqlserverflexbeta - tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/services/sqlserverflexbeta default: 'tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/stackit/internal/wait/postgresflexalpha' required: true jobs: acc_test: name: Acceptance Tests runs-on: stackit-docker steps: - name: Checkout uses: actions/checkout@v6 - name: set start time id: start_time run: | echo "time=$(date --rfc-3339=ns)" >> ${GITHUB_ENV} echo "start=$(date +%s%N)" >> ${GITHUB_ENV} - name: Notify uses: ./.github/actions/notify with: webhook_url: ${{ secrets.GOOGLE_WEBHOOK_URL }} title: "[START] Terraform Acceptance Tests" subtitle: "${{ forgejo.event_name }} on branch ${{ forgejo.ref }}" event_title: "started: ${{ steps.start_time.outputs.time }}" event_author: ${{ forgejo.actor }} event_body: ${{ inputs.test_file }} event_number: ${{ forgejo.run_number }} event_url: "https://tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/actions/runs/${{ forgejo.run_number }}" - name: Run Test (workflow dispatch) if: ${{ forgejo.event_name == 'workflow_dispatch' }} id: manual_run uses: ./.github/actions/acc_test with: go-version: ${{ env.GO_VERSION }} project_id: ${{ vars.TF_ACC_PROJECT_ID }} region: 'eu01' service_account_json_content_b64: "${{ secrets.TF_ACC_SERVICE_ACCOUNT_JSON_B64 }}" project_user_email: ${{ vars.TEST_PROJECT_USER_EMAIL }} tf_acc_kek_key_id: ${{ vars.TF_ACC_KEK_KEY_ID }} tf_acc_kek_key_ring_id: ${{ vars.TF_ACC_KEK_KEY_RING_ID }} tf_acc_kek_key_version: ${{ vars.TF_ACC_KEK_KEY_VERSION }} tf_acc_kek_service_account: ${{ vars.TF_ACC_KEK_SERVICE_ACCOUNT }} tf_debug: ${{ inputs.enable_debug }} test_timeout_string: ${{ inputs.test_timeout_string }} test_file: ${{ inputs.test_file }} - name: Run Test (automatic) if: ${{ forgejo.event_name != 'workflow_dispatch' }} id: automatic_run uses: ./.github/actions/acc_test with: go-version: ${{ env.GO_VERSION }} project_id: ${{ vars.TF_ACC_PROJECT_ID }} region: 'eu01' service_account_json_content_b64: "${{ secrets.TF_ACC_SERVICE_ACCOUNT_JSON_B64 }}" project_user_email: ${{ vars.TEST_PROJECT_USER_EMAIL }} tf_acc_kek_key_id: ${{ vars.TF_ACC_KEK_KEY_ID }} tf_acc_kek_key_ring_id: ${{ vars.TF_ACC_KEK_KEY_RING_ID }} tf_acc_kek_key_version: ${{ vars.TF_ACC_KEK_KEY_VERSION }} tf_acc_kek_service_account: ${{ vars.TF_ACC_KEK_SERVICE_ACCOUNT }} - name: set end time id: end_time run: | echo "time=$(date --rfc-3339=ns)" >> ${GITHUB_ENV} end=$(date +%s%N) echo "end=${end}" >> ${GITHUB_ENV} start=${{ steps.start_time.outputs.start }} diff=$((end-start)) duration=$(printf "%s.%s" "${diff:0: -9}" "${diff: -9:3}") echo "duration=${duration}" >> ${GITHUB_ENV} - name: Notify uses: ./.github/actions/notify with: webhook_url: ${{ secrets.GOOGLE_WEBHOOK_URL }} title: "[END] Terraform Acceptance Tests" subtitle: "${{ forgejo.event_name }} on branch ${{ forgejo.ref }} with status: ${{ forgejo.event_name == 'workflow_dispatch' && steps.manual_run.outputs.status || steps.automatic_run.outputs.status }}" event_title: "run ended: ${{ steps.end_time.outputs.time }}, duration: ${{ steps.end_time.outputs.duration }} seconds" event_author: ${{ forgejo.actor }} event_body: "${{ forgejo.event_name == 'workflow_dispatch' && steps.manual_run.outputs.result || steps.automatic_run.outputs.result }}" event_number: ${{ forgejo.event.id }} event_url: "https://tf-provider.git.onstackit.cloud/stackit-dev-tools/terraform-provider-stackitprivatepreview/actions/runs/${{ forgejo.run_number }}" status: "${{ forgejo.event_name == 'workflow_dispatch' && steps.manual_run.outputs.status || steps.automatic_run.outputs.status }}"