ci: fix Consul dev agent startup on Windows CI #462
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Quality control checks | |
| on: | |
| push: | |
| branches: [main, "feat/**"] | |
| paths-ignore: | |
| - "**.md" # Do not need to run CI for markdown changes. | |
| pull_request: | |
| branches: [main, "feat/**"] | |
| paths-ignore: | |
| - "**.md" | |
| jobs: | |
| linux: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - uses: launchdarkly/gh-actions/actions/persistent-stores@persistent-stores-v0 | |
| with: | |
| redis: true | |
| consul: true | |
| dynamodb: true | |
| - name: Install poetry | |
| uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 | |
| - uses: ./.github/actions/build | |
| - uses: ./.github/actions/build-docs | |
| - name: Run tests | |
| run: make test-all | |
| env: | |
| LD_SKIP_FLAKY_TESTS: true | |
| - name: Verify typehints | |
| run: make lint | |
| # | |
| # SDK contract tests | |
| # | |
| - name: install contract test dependencies | |
| run: make install-contract-tests-deps | |
| - name: start contract test service | |
| run: make start-contract-test-service-bg | |
| - name: Run contract tests v2 | |
| uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1 | |
| with: | |
| test_service_port: 9000 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| stop_service: "false" | |
| enable_persistence_tests: "true" | |
| - name: Run contract tests v3 | |
| uses: launchdarkly/gh-actions/actions/contract-tests@contract-tests-v1 | |
| with: | |
| test_service_port: 9000 | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| version: v3.0.0-alpha.4 | |
| enable_persistence_tests: "true" | |
| windows: | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: powershell | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - uses: launchdarkly/gh-actions/actions/persistent-stores@persistent-stores-v0 | |
| with: | |
| redis: true | |
| consul: true | |
| dynamodb: true | |
| - name: Start Consul dev agent | |
| run: | | |
| # The chocolatey package installs Consul as a Windows service which | |
| # conflicts with the dev agent started by the persistent-stores action. | |
| # Stop the service so the dev agent can bind to port 8500. | |
| Stop-Service consul -ErrorAction SilentlyContinue | |
| Set-Service consul -StartupType Disabled -ErrorAction SilentlyContinue | |
| Start-Process consul -ArgumentList 'agent', '-dev', '-http-port=8500' | |
| $timeout = 30 | |
| $elapsed = 0 | |
| while ($elapsed -lt $timeout) { | |
| try { | |
| $response = Invoke-RestMethod -Uri 'http://127.0.0.1:8500/v1/status/leader' -TimeoutSec 2 | |
| if ($response -and $response -ne '""') { | |
| Write-Host "Consul is ready (leader: $response)" | |
| exit 0 | |
| } | |
| } catch {} | |
| Write-Host "Waiting for Consul to elect a leader... ($elapsed/$timeout seconds)" | |
| Start-Sleep -Seconds 1 | |
| $elapsed++ | |
| } | |
| Write-Error "Consul did not become ready within $timeout seconds" | |
| exit 1 | |
| - name: Install poetry | |
| uses: abatilo/actions-poetry@7b6d33e44b4f08d7021a1dee3c044e9c253d6439 | |
| - name: Install requirements | |
| run: poetry install --all-extras | |
| - name: Run tests | |
| run: make test-all | |
| env: | |
| LD_SKIP_FLAKY_TESTS: true |