Skip to content

Commit 3c3c02d

Browse files
committed
WIP
1 parent db481af commit 3c3c02d

File tree

2 files changed

+73
-100
lines changed

2 files changed

+73
-100
lines changed

.github/actions/test-provider-tfe/action.yml

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ inputs:
3737
token:
3838
description: HCP Terraform or Terraform Enterprise token
3939
required: true
40-
testing_github_token:
40+
testing-github-token:
4141
description: The GitHub token used for testing scenarios
4242
required: false
4343
enterprise:
@@ -51,9 +51,6 @@ inputs:
5151
description: The mock run tasks URL to use for testing.
5252
required: false
5353
default: "http://testing-mocks.tfe:22180/runtasks/pass"
54-
test_name:
55-
description: Name identifier for the test suite being run
56-
required: true
5754

5855
runs:
5956
using: composite
@@ -85,26 +82,13 @@ runs:
8582

8683
- name: Split acceptance tests
8784
id: test_split
88-
if: inputs.test_name == 'tests'
8985
uses: hashicorp-forge/go-test-split-action@796beedbdb3d1bea14cad2d3057bab5c5cf15fe5 # v1.0.2
9086
with:
9187
index: ${{ inputs.matrix_index }}
9288
total: ${{ inputs.matrix_total }}
9389
junit-summary: ./ci-summary-provider.xml
9490
list: ${{ inputs.list_tests }}
9591

96-
- name: Fallback test selection
97-
id: test_fallback
98-
shell: bash
99-
run: |
100-
if [ "${{ steps.test_split.outcome }}" = "failure" ] || [ -z "${{ steps.test_split.outputs.run }}" ]; then
101-
echo "Junit splitting failed or no output, using regex fallback"
102-
echo "run=${{ inputs.list_tests }}" >> $GITHUB_OUTPUT
103-
else
104-
echo "Using junit split output"
105-
echo "run=${{ steps.test_split.outputs.run }}" >> $GITHUB_OUTPUT
106-
fi
107-
10892
- name: Run Tests
10993
shell: bash
11094
env:
@@ -126,28 +110,16 @@ runs:
126110
GITHUB_REGISTRY_MODULE_IDENTIFIER: "hashicorp/terraform-random-module"
127111
GITHUB_WORKSPACE_IDENTIFIER: "hashicorp/terraform-random-module"
128112
GITHUB_WORKSPACE_BRANCH: "main"
129-
GITHUB_TOKEN: ${{ inputs.testing_github_token }}
113+
GITHUB_TOKEN: ${{ inputs.testing-github-token }}
114+
MOD_PROVIDER: github.com/hashicorp/terraform-provider-tfe
115+
MOD_TFE: github.com/hashicorp/terraform-provider-tfe/internal/provider
116+
MOD_VERSION: github.com/hashicorp/terraform-provider-tfe/version
130117
run: |
131-
# Debug: Print environment variables to verify they're set
132-
echo "TFE_HOSTNAME: $TFE_HOSTNAME"
133-
echo "TFE_TOKEN length: ${#TFE_TOKEN}"
134-
135-
if [ "${{ inputs.test_name }}" = "tests" ] && [ -n "${{ steps.test_split.outputs.run }}" ]; then
136-
TEST_PATTERN="${{ steps.test_split.outputs.run }}"
137-
else
138-
TEST_PATTERN="${{ inputs.list_tests }}"
139-
fi
140-
141-
echo "Running tests with pattern: $TEST_PATTERN"
142-
143-
gotestsum --junitfile summary.xml --format short-verbose -- \
144-
-mod=readonly \
145-
./internal/provider \
146-
-v -timeout=60m -run "$TEST_PATTERN"
118+
gotestsum --junitfile summary.xml --format short-verbose -- $MOD_PROVIDER $MOD_TFE $MOD_VERSION -v -timeout=60m -run "${{ steps.test_split.outputs.run }}"
147119
148120
- name: Upload test artifacts
149121
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
150122
with:
151-
name: junit-${{ inputs.test_name }}-summary-${{ inputs.matrix_index }}
123+
name: junit-${{ matrix.test_name }}-summary-${{ matrix.index }}
152124
path: summary.xml
153125
retention-days: 1

.github/workflows/ci.yml

Lines changed: 66 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,18 @@ jobs:
1616
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1717
- uses: ./.github/actions/lint-provider-tfe
1818

19-
setup:
20-
name: Setup Test Environment
19+
tests:
20+
name: tests
2121
runs-on: ubuntu-latest
22-
outputs:
23-
hostname: ${{ steps.tflocal.outputs.hostname }}
24-
token: ${{ steps.tflocal.outputs.token }}
25-
admin_configuration_token: ${{ steps.tflocal.outputs.admin_configuration_token }}
26-
admin_provision_licenses_token: ${{ steps.tflocal.outputs.admin_provision_licenses_token }}
27-
admin_security_maintenance_token: ${{ steps.tflocal.outputs.admin_security_maintenance_token }}
28-
admin_site_admin_token: ${{ steps.tflocal.outputs.admin_site_admin_token }}
29-
admin_subscription_token: ${{ steps.tflocal.outputs.admin_subscription_token }}
30-
admin_support_token: ${{ steps.tflocal.outputs.admin_support_token }}
31-
admin_version_maintenance_token: ${{ steps.tflocal.outputs.admin_version_maintenance_token }}
22+
timeout-minutes: 40
23+
strategy:
24+
fail-fast: false
25+
matrix:
26+
total: [5]
27+
index: [0, 1, 2, 3, 4]
3228
steps:
29+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
30+
3331
- name: Fetch Outputs
3432
id: tflocal-raw
3533
uses: hashicorp-forge/terraform-cloud-action/outputs@5583d5f554d268ac91b3c37fd0a5e9da2c78c017 # v1.1.0
@@ -51,69 +49,73 @@ jobs:
5149
echo "admin_support_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.support }}" >> $GITHUB_OUTPUT
5250
echo "admin_version_maintenance_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.version-maintenance }}" >> $GITHUB_OUTPUT
5351
54-
tests:
55-
name: ${{ matrix.test_suite }}
52+
- uses: ./.github/actions/test-provider-tfe
53+
with:
54+
matrix_index: ${{ matrix.index }}
55+
matrix_total: ${{ matrix.total }}
56+
hostname: ${{ steps.tflocal.outputs.hostname }}
57+
token: ${{ steps.tflocal.outputs.token }}
58+
testing_github_token: ${{ secrets.TESTING_GITHUB_TOKEN }}
59+
admin_configuration_token: ${{ steps.tflocal.outputs.admin_configuration_token }}
60+
admin_provision_licenses_token: ${{ steps.tflocal.outputs.admin_provision_licenses_token }}
61+
admin_security_maintenance_token: ${{ steps.tflocal.outputs.admin_security_maintenance_token }}
62+
admin_site_admin_token: ${{ steps.tflocal.outputs.admin_site_admin_token }}
63+
admin_subscription_token: ${{ steps.tflocal.outputs.admin_subscription_token }}
64+
admin_support_token: ${{ steps.tflocal.outputs.admin_support_token }}
65+
admin_version_maintenance_token: ${{ steps.tflocal.outputs.admin_version_maintenance_token }}
66+
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
67+
68+
run-dependent-tests:
69+
name: run-dependent-tests
5670
runs-on: ubuntu-latest
57-
needs: setup
5871
timeout-minutes: 40
5972
strategy:
6073
fail-fast: false
6174
matrix:
62-
include:
63-
# Standard tests with 5-runner matrix
64-
- test_suite: "Standard Tests"
65-
test_name: "tests"
66-
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
67-
total: 5
68-
index: 0
69-
- test_suite: "Standard Tests"
70-
test_name: "tests"
71-
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
72-
total: 5
73-
index: 1
74-
- test_suite: "Standard Tests"
75-
test_name: "tests"
76-
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
77-
total: 5
78-
index: 2
79-
- test_suite: "Standard Tests"
80-
test_name: "tests"
81-
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
82-
total: 5
83-
index: 3
84-
- test_suite: "Standard Tests"
85-
test_name: "tests"
86-
list_tests: "[^(TestAccTFESAMLSettings_omnibus|TestAcc.*_RunDependent)]"
87-
total: 5
88-
index: 4
89-
# Dependent tests with 1-runner matrix
90-
- test_suite: "Dependent Tests"
91-
test_name: "run-dependent-tests"
92-
list_tests: "TestAcc.*_RunDependent"
93-
total: 1
94-
index: 0
75+
total: [1]
76+
index: [0]
9577
steps:
9678
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
9779

80+
- name: Fetch Outputs
81+
id: tflocal-raw
82+
uses: hashicorp-forge/terraform-cloud-action/outputs@5583d5f554d268ac91b3c37fd0a5e9da2c78c017 # v1.1.0
83+
with:
84+
token: "${{ secrets.TF_WORKFLOW_TFLOCAL_CLOUD_TFC_TOKEN }}"
85+
organization: hashicorp-v2
86+
workspace: tflocal-terraform-provider-tfe
87+
88+
- name: Parse Outputs
89+
id: tflocal
90+
run: |
91+
echo "hostname=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).ngrok_domain }}" >> $GITHUB_OUTPUT
92+
echo "token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_token }}" >> $GITHUB_OUTPUT
93+
echo "admin_configuration_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.configuration }}" >> $GITHUB_OUTPUT
94+
echo "admin_provision_licenses_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.provision-licenses }}" >> $GITHUB_OUTPUT
95+
echo "admin_security_maintenance_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.security-maintenance }}" >> $GITHUB_OUTPUT
96+
echo "admin_site_admin_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.site-admin }}" >> $GITHUB_OUTPUT
97+
echo "admin_subscription_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.subscription }}" >> $GITHUB_OUTPUT
98+
echo "admin_support_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.support }}" >> $GITHUB_OUTPUT
99+
echo "admin_version_maintenance_token=${{ fromJSON(steps.tflocal-raw.outputs.workspace-outputs-json).tfe_admin_token_by_role.version-maintenance }}" >> $GITHUB_OUTPUT
100+
98101
- uses: ./.github/actions/test-provider-tfe
99102
with:
100103
matrix_index: ${{ matrix.index }}
101104
matrix_total: ${{ matrix.total }}
102-
hostname: ${{ needs.setup.outputs.hostname }}
103-
token: ${{ needs.setup.outputs.token }}
105+
hostname: ${{ steps.tflocal.outputs.hostname }}
106+
token: ${{ steps.tflocal.outputs.token }}
104107
testing_github_token: ${{ secrets.TESTING_GITHUB_TOKEN }}
105-
admin_configuration_token: ${{ needs.setup.outputs.admin_configuration_token }}
106-
admin_provision_licenses_token: ${{ needs.setup.outputs.admin_provision_licenses_token }}
107-
admin_security_maintenance_token: ${{ needs.setup.outputs.admin_security_maintenance_token }}
108-
admin_site_admin_token: ${{ needs.setup.outputs.admin_site_admin_token }}
109-
admin_subscription_token: ${{ needs.setup.outputs.admin_subscription_token }}
110-
admin_support_token: ${{ needs.setup.outputs.admin_support_token }}
111-
admin_version_maintenance_token: ${{ needs.setup.outputs.admin_version_maintenance_token }}
112-
list_tests: ${{ matrix.list_tests }}
113-
test_name: ${{ matrix.test_name }}
108+
admin_configuration_token: ${{ steps.tflocal.outputs.admin_configuration_token }}
109+
admin_provision_licenses_token: ${{ steps.tflocal.outputs.admin_provision_licenses_token }}
110+
admin_security_maintenance_token: ${{ steps.tflocal.outputs.admin_security_maintenance_token }}
111+
admin_site_admin_token: ${{ steps.tflocal.outputs.admin_site_admin_token }}
112+
admin_subscription_token: ${{ steps.tflocal.outputs.admin_subscription_token }}
113+
admin_support_token: ${{ steps.tflocal.outputs.admin_support_token }}
114+
admin_version_maintenance_token: ${{ steps.tflocal.outputs.admin_version_maintenance_token }}
115+
list_tests: "TestAcc.*_RunDependent"
114116

115117
tests-combine-summaries:
116-
name: Combine Test Reports
118+
name: tests-combine-summaries
117119
needs: [ tests ]
118120
runs-on: ubuntu-latest
119121
steps:
@@ -129,8 +131,7 @@ jobs:
129131

130132
- name: Merge reports
131133
run: |
132-
# Dynamically find all junit XML files and merge them
133-
jrm ./ci-summary-provider.xml junit-*-summary-*/*.xml
134+
jrm ./ci-summary-provider.xml junit-tests-summary-*/*.xml
134135
135136
- name: Upload test artifacts
136137
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -139,14 +140,14 @@ jobs:
139140
path: ./ci-summary-provider.xml
140141

141142
tests-summarize:
142-
name: Summarize Tests
143-
needs: [ tests ]
143+
name: tests-summarize
144+
needs: [ tests, run-dependent-tests ]
144145
runs-on: ubuntu-latest
145146
if: ${{ always() }}
146147
steps:
147148
- name: Check tests Status
148149
run: |
149-
if [ "${{ needs.tests.result }}" = "success" ]; then
150+
if [ "${{ needs.tests.result }}" = "success" ] && [ "${{ needs.run-dependent-tests.result }}" = "success" ]; then
150151
exit 0
151152
fi
152153
exit 1

0 commit comments

Comments
 (0)