-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (129 loc) · 4.76 KB
/
Copy pathci.yml
File metadata and controls
137 lines (129 loc) · 4.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.12"
- run: pip install -e '.[dev]'
- run: ruff check src/ tests/
- run: mypy src/durable_workflow/
test:
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: ${{ matrix.python-version }}
- run: pip install -e '.[dev]'
- run: pytest tests/ -m "not integration" -q
package:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
fetch-depth: 0
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.12"
- run: pip install build twine
- run: sh -n scripts/ci/check-docs-release-audit.sh
- name: Verify release recovery source contracts
env:
CONFORMANCE_BASE_REF: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
run: |
arguments=()
if [ -n "$CONFORMANCE_BASE_REF" ]; then
arguments+=(--previous-ref "$CONFORMANCE_BASE_REF")
fi
python scripts/ci/release_recovery_consumer_conformance.py \
--contract scripts/ci/release-recovery-consumer-contract.json \
--adapter scripts/ci/release-recovery-consumer-adapter.json \
"${arguments[@]}"
python scripts/ci/test-component-release-recovery.py ConsumerContractIdentityRegressionTest
- run: python -m build
- run: twine check dist/*
- run: python scripts/smoke-built-package.py
cli-parity:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
path: sdk-python
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.12"
- name: Checkout public CLI integration source
run: python sdk-python/scripts/ci/checkout-public-repository.py cli cli
- name: Compare shared control-plane parity fixtures
working-directory: sdk-python
run: python scripts/check-cli-parity.py --cli ../cli
integration:
runs-on: ubuntu-latest
timeout-minutes: 25
needs: [lint, test]
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
path: sdk-python
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: "3.12"
- name: Checkout public Server integration source
run: python sdk-python/scripts/ci/checkout-public-repository.py server server
- run: pip install -e '.[dev]'
working-directory: sdk-python
- name: Start server stack
working-directory: sdk-python
run: |
docker compose -f docker-compose.test.yml up -d --wait --timeout 300
- name: Select and probe integration endpoint
working-directory: sdk-python
run: python scripts/ci/configure-integration-endpoint.py
- name: Run integration tests
working-directory: sdk-python
env:
DURABLE_WORKFLOW_AUTH_TOKEN: test-token
run: pytest tests/integration/ -v
- name: Teardown
if: always()
working-directory: sdk-python
run: docker compose -f docker-compose.test.yml down -v
target-branch-qualification:
name: Target branch qualification
if: ${{ always() }}
needs: [lint, test, package, cli-parity, integration]
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Require every supported Python and integration cell
env:
LINT_RESULT: ${{ needs.lint.result }}
TEST_RESULT: ${{ needs.test.result }}
PACKAGE_RESULT: ${{ needs.package.result }}
PARITY_RESULT: ${{ needs.cli-parity.result }}
INTEGRATION_RESULT: ${{ needs.integration.result }}
run: |
test "$LINT_RESULT" = success
test "$TEST_RESULT" = success
test "$PACKAGE_RESULT" = success
test "$PARITY_RESULT" = success
test "$INTEGRATION_RESULT" = success