name: e2e test windows on: workflow_dispatch: workflow_call: inputs: scheduled: description: Whether this is a scheduled run. type: boolean default: false required: false jobs: build-cli: name: Build Windows CLI runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }} - name: Build CLI uses: ./.github/actions/build_cli with: targetOS: "windows" targetArch: "amd64" enterpriseCLI: true - name: Upload CLI artifact uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: path: "bazel-bin/cli/cli_enterprise_windows_amd64" name: "constell-exe" e2e-test: name: E2E Test Windows runs-on: windows-2022 needs: build-cli steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }} - name: Download CLI artifact uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: name: "constell-exe" - name: Check CLI version shell: pwsh run: | Move-Item -Path .\cli_enterprise_windows_amd64 -Destination .\constellation.exe .\constellation.exe version - name: Login to Azure (IAM service principal) uses: ./.github/actions/login_azure with: azure_credentials: ${{ secrets.AZURE_E2E_IAM_CREDENTIALS }} - name: Create IAM configuration shell: pwsh run: | .\constellation.exe config generate azure .\constellation.exe iam create azure --region=westus --resourceGroup=e2eWindoewsRG --servicePrincipal=e2eWindoewsSP --update-config --debug -y - name: Login to Azure (Cluster service principal) uses: ./.github/actions/login_azure with: azure_credentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }} - name: Create cluster shell: pwsh run: | .\constellation.exe create --debug -y - name: Initialize cluster shell: pwsh run: | .\constellation.exe init --debug - name: Liveness probe shell: pwsh run: | $retryIntervalSeconds = 30 $maxRetries = 50 $retryCount = 0 $allNodesReady = $false while (-not $allNodesReady -and $retryCount -lt $maxRetries) { ${retryCount}++ Write-Host "Retry ${retryCount}: Checking node status..." $nodesOutput = & kubectl get nodes --kubeconfig "$PWD\constellation-admin.conf" $lines = $nodesOutput -split "`r?`n" | Select-Object -Skip 1 $allNodesReady = $true foreach ($line in $lines) { $columns = $line -split '\s+' | Where-Object { $_ -ne '' } $nodeName = $columns[0] $status = $columns[1] if ($status -ne "Ready") { Write-Host "Node $nodeName is not ready!" $allNodesReady = $false } } if (-not $allNodesReady) { Write-Host "Retrying in $retryIntervalSeconds seconds..." Start-Sleep -Seconds $retryIntervalSeconds } } if ($allNodesReady) { Write-Host "All nodes are ready!" } else { Write-Host "Node status check failed after $maxRetries retries." EXIT 1 } - name: Terminate cluster if: always() shell: pwsh run: | .\constellation.exe terminate --debug -y - name: Login to Azure (IAM service principal) if: always() uses: ./.github/actions/login_azure with: azure_credentials: ${{ secrets.AZURE_E2E_IAM_CREDENTIALS }} - name: Delete IAM configuration if: always() shell: pwsh run: | .\constellation.exe iam destroy --debug -y notify-failure: name: Notify about failure runs-on: ubuntu-22.04 needs: e2e-test if: | failure() && github.ref == 'refs/heads/main' && inputs.scheduled steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }} - name: Notify about failure continue-on-error: true uses: ./.github/actions/notify_failure with: projectWriteToken: ${{ secrets.PROJECT_WRITE_TOKEN }} teamsWebhookUri: ${{ secrets.MS_TEAMS_WEBHOOK_URI }} test: Windows E2E Test provider: Azure