Skip to content

Commit 6e3e6ad

Browse files
committed
Resolved comments
1 parent 5cbdc58 commit 6e3e6ad

4 files changed

Lines changed: 23 additions & 12 deletions

File tree

.Pipelines/CI-AND-RELEASE-PIPELINES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ PreBuildCheck ─► UnitTests ─► E2ETests ─► Benchmark (post-merge to d
4141
|-------|-------------|-------------|
4242
| **PreBuildCheck** | Runs SDL security scans: PoliCheck (policy/offensive content), CredScan (leaked credentials), and PostAnalysis (breaks the build on findings) | Always |
4343
| **UnitTests** | Runs the unit test suite on Python 3.9, 3.10, 3.11, 3.12, 3.13, and 3.14 (no Key Vault required) | After PreBuildCheck |
44-
| **E2ETests** | Fetches the MSID Lab certificate from Key Vault and runs `tests/test_e2e.py` + `tests/test_fmi_e2e.py` on the same Python matrix. Skipped on forked PRs (no Key Vault access). | After UnitTests |
44+
| **E2ETests** | Fetches the MSID Lab certificate from Key Vault and runs `tests/test_e2e.py` + `tests/test_fmi_e2e.py` on the same Python matrix. On forked PRs the stage still runs, but the Key Vault tasks are skipped and the E2E tests self-skip (because `LAB_APP_CLIENT_CERT_PFX_PATH` is unset), so the stage reports green with all E2E tests marked Skipped in the Tests tab. | After UnitTests |
4545
| **Benchmark** | Runs performance benchmarks on Python 3.9 and publishes `benchmark-results` artifact | Post-merge pushes to `dev` and manual runs only |
4646

4747
The `Validate` stage is **skipped** on PR/CI runs (it only applies to release builds).

.Pipelines/pipeline-publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ stages:
4444
- stage: Build
4545
displayName: 'Build package'
4646
dependsOn: E2ETests
47-
condition: in(dependencies.E2ETests.result, 'Succeeded', 'SucceededWithIssues')
47+
condition: eq(dependencies.E2ETests.result, 'Succeeded')
4848
jobs:
4949
- job: BuildDist
5050
displayName: 'Build sdist + wheel (Python 3.12)'
@@ -83,7 +83,7 @@ stages:
8383
dependsOn: Build
8484
condition: >
8585
and(
86-
in(dependencies.Build.result, 'Succeeded', 'SucceededWithIssues'),
86+
eq(dependencies.Build.result, 'Succeeded'),
8787
eq('${{ parameters.publishTarget }}', 'test.pypi.org (Preview / RC)')
8888
)
8989
jobs:
@@ -140,7 +140,7 @@ stages:
140140
dependsOn: Build
141141
condition: >
142142
and(
143-
in(dependencies.Build.result, 'Succeeded', 'SucceededWithIssues'),
143+
eq(dependencies.Build.result, 'Succeeded'),
144144
eq('${{ parameters.publishTarget }}', 'pypi.org (ESRP Production)')
145145
)
146146
jobs:

.Pipelines/template-pipeline-stages.yml

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,22 @@ stages:
178178
PYTHONUNBUFFERED: '1'
179179
180180
# Run cryptography version-gating tests separately as a warning-only check.
181+
# These tests fail whenever a new `cryptography` release ships (signalling a
182+
# required ceiling bump in setup.cfg). We deliberately swallow the non-zero
183+
# exit code with `|| true` so the step always succeeds at the shell level —
184+
# this keeps the stage result as 'Succeeded' (not 'SucceededWithIssues') so
185+
# downstream publish gates can stay strict. Failures are still surfaced as
186+
# JUnit test failures in the Tests tab via PublishTestResults below
187+
# (failTaskOnFailedTests: false), giving maintainers visibility without
188+
# blocking unrelated PRs or releases.
181189
- bash: |
182190
pytest -vv \
183191
--timeout=60 \
184192
tests/test_cryptography.py::CryptographyTestCase::test_ceiling_should_be_latest_cryptography_version_plus_three \
185193
tests/test_cryptography.py::CryptographyTestCase::test_should_be_run_with_latest_version_of_cryptography \
186-
--junitxml=test-results/junit-crypto-ceiling.xml
194+
--junitxml=test-results/junit-crypto-ceiling.xml \
195+
|| true
187196
displayName: 'Check cryptography ceiling (warning only)'
188-
continueOnError: true
189197
env:
190198
PYTHONUNBUFFERED: '1'
191199
@@ -211,13 +219,17 @@ stages:
211219
# Stage 3 · E2ETests — runs only if unit tests pass. Fetches the MSID Lab
212220
# certificate from Key Vault (mirrors MSAL.NET's
213221
# build/template-install-keyvault-secrets.yaml).
214-
# Skipped on forked PRs — service connections / Key Vault are not
215-
# available to forks. E2E tests self-skip when
216-
# LAB_APP_CLIENT_CERT_PFX_PATH is unset.
217-
# ══════════════════════════════════════════════════════════════════════════════
222+
# Fork behaviour: the stage still runs on forked PRs, but the
223+
# Key Vault retrieval and certificate decoding steps are skipped
224+
# via `ne(System.PullRequest.IsFork, 'True')`. The pytest step then
225+
# self-skips each test because LAB_APP_CLIENT_CERT_PFX_PATH is unset
226+
# (see tests/test_e2e.py). Result: green stage on forks with all
227+
# E2E tests reported as Skipped in the Tests tab.
228+
# ═══════════════════════════════════════════════════════════════════════════
218229
- stage: E2ETests
219230
displayName: 'E2E tests'
220231
dependsOn: UnitTests
232+
221233
condition: eq(dependencies.UnitTests.result, 'Succeeded')
222234
jobs:
223235
- job: Pytest

.github/workflows/python-package.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,4 @@ jobs:
7878
--benchmark-skip \
7979
--ignore=tests/test_e2e.py \
8080
--ignore=tests/test_e2e_manual.py \
81-
--ignore=tests/test_fmi_e2e.py \
82-
--ignore=tests/test_client_obtain_token_by_browser.py
81+
--ignore=tests/test_fmi_e2e.py

0 commit comments

Comments
 (0)