Skip to content

Commit e4ace88

Browse files
committed
Harden release smoke package install
1 parent a74ccb6 commit e4ace88

3 files changed

Lines changed: 62 additions & 14 deletions

File tree

.github/actions/release-smoke-package/action.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ inputs:
77
index-url:
88
description: "Primary package index URL"
99
required: true
10-
extra-index-url:
11-
description: "Optional fallback package index URL"
10+
dependency-index-url:
11+
description: "Optional dependency package index URL"
1212
required: false
1313
default: ""
1414
runs:
@@ -22,18 +22,18 @@ runs:
2222
env:
2323
VERSION: ${{ inputs.version }}
2424
INDEX_URL: ${{ inputs.index-url }}
25-
EXTRA_INDEX_URL: ${{ inputs.extra-index-url }}
25+
DEPENDENCY_INDEX_URL: ${{ inputs.dependency-index-url }}
2626
run: |
2727
set -euo pipefail
2828
python -m venv .venv
2929
.venv/bin/python -m pip install --upgrade pip
3030
31-
install_args=(--prefer-binary --index-url "$INDEX_URL")
32-
if [[ -n "$EXTRA_INDEX_URL" ]]; then
33-
install_args+=(--extra-index-url "$EXTRA_INDEX_URL")
31+
install_args=(--version "$VERSION" --index-url "$INDEX_URL")
32+
if [[ -n "$DEPENDENCY_INDEX_URL" ]]; then
33+
install_args+=(--dependency-index-url "$DEPENDENCY_INDEX_URL")
3434
fi
3535
36-
.venv/bin/python -m pip install "${install_args[@]}" "temporalio==$VERSION"
36+
.venv/bin/python .github/scripts/install_release_package.py "${install_args[@]}"
3737
- name: Run SDK smoke test
3838
shell: bash
3939
env:
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
"""Install a release package for smoke testing."""
2+
3+
from __future__ import annotations
4+
5+
import argparse
6+
import importlib.metadata
7+
import subprocess
8+
import sys
9+
from collections.abc import Sequence
10+
11+
12+
def _pip_install(args: Sequence[str]) -> None:
13+
subprocess.check_call([sys.executable, "-m", "pip", "install", *args])
14+
15+
16+
def install_package(args: argparse.Namespace) -> None:
17+
package = f"temporalio=={args.version}"
18+
if args.dependency_index_url:
19+
_pip_install(
20+
[
21+
"--prefer-binary",
22+
"--index-url",
23+
args.index_url,
24+
"--no-deps",
25+
package,
26+
]
27+
)
28+
29+
requirements = importlib.metadata.requires("temporalio") or []
30+
if requirements:
31+
_pip_install(
32+
[
33+
"--prefer-binary",
34+
"--index-url",
35+
args.dependency_index_url,
36+
*requirements,
37+
]
38+
)
39+
else:
40+
_pip_install(["--prefer-binary", "--index-url", args.index_url, package])
41+
42+
subprocess.check_call([sys.executable, "-m", "pip", "check"])
43+
44+
45+
def main(argv: Sequence[str] | None = None) -> None:
46+
parser = argparse.ArgumentParser()
47+
parser.add_argument("--version", required=True)
48+
parser.add_argument("--index-url", required=True)
49+
parser.add_argument("--dependency-index-url")
50+
install_package(parser.parse_args(argv))
51+
52+
53+
if __name__ == "__main__":
54+
main()

.github/workflows/release-publish.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ name: Release Publish
22
run-name: Release from main
33

44
on:
5-
pull_request:
6-
paths:
7-
- ".github/actions/release-smoke-package/action.yml"
8-
- ".github/scripts/release_smoke_package.py"
9-
- ".github/scripts/release_verify.py"
10-
- ".github/workflows/release-publish.yml"
115
workflow_dispatch:
126

137
permissions:
@@ -196,7 +190,7 @@ jobs:
196190
with:
197191
version: ${{ needs.verify_artifacts.outputs.version }}
198192
index-url: https://test.pypi.org/simple/
199-
extra-index-url: https://pypi.org/simple/
193+
dependency-index-url: https://pypi.org/simple/
200194

201195
publish_pypi:
202196
name: Publish to PyPI

0 commit comments

Comments
 (0)