Skip to content

Commit

Permalink
Build dagster-cloud-action PEX for more platforms
Browse files Browse the repository at this point in the history
Summary:
Make our dagster-cloud-cli work on github action runners that have python versions other than 3.8 installed.
  • Loading branch information
gibsondan committed Oct 2, 2024
1 parent 468ba21 commit 415ec20
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 20 deletions.
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ If you have a PAT handy you can just do:
% echo $YOUR_GITHUB_PAT | docker login ghcr.io -u $YOUR_GITHUB_USERNAME --password-stdin
```

## Step 2. Determine the new point version and create a release branch,
## Step 2. Determine the new point version and create a release branch,

```
% git checkout main
% git fetch origin --tags --force
% git tag
% git tag
pex-v0.1
pex-v0.1.14
prha
Expand All @@ -44,7 +44,7 @@ The point version is the next unused `v0.1.*` version, eg `v0.1.22` above. Creat

## Step 3. Build and deploy a new docker-cloud-action image, a new dagster.cloud.pex and update code references to docker

A script does this work. **Note**: a virtual environment using Python3.8 is required to run the script.
A script does this work. **Note**: a virtual environment using Python3.11 is required to run the script.

```
# Note no 'v' prefix
Expand Down Expand Up @@ -106,7 +106,7 @@ git push -f origin v0.1.22

# Step 6. Promote
Most users point at a dot version tag for the GitHub Action, e.g. `@v0.1` and `@pex-v0.1`.
If you are releasing a fix or non-breaking feature, you want to move this tag so existing users get access to your changes.
If you are releasing a fix or non-breaking feature, you want to move this tag so existing users get access to your changes.

> Due an unfortunate bug, the ci-summary step in many user's workflow is pinned to v0.1.27, so we need v0.1.27 to follow v0.1 as well.
> See https://github.com/dagster-io/dagster-cloud-hybrid-quickstart/commit/2149359dd1076f3bcd6f652dc00cb74ac9c81636
Expand Down
18 changes: 15 additions & 3 deletions scripts/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,16 @@ def update_dagster_cloud_pex(
info("Using PyPI for dagster package")
dagster_pkg = "dagster"

platform_args = []

# each of the default versions used by ubuntu 20.04 / 22.04 / 24.04 respectively
for py_version in ["38", "310", "312"]:
platform_args.extend(
[
f"--platform=manylinux2014_x86_64-cp-{py_version}-cp{py_version}",
]
)

info("Building generated/gha/dagster-cloud.pex")
args = [
"pex",
Expand All @@ -112,12 +122,14 @@ def update_dagster_cloud_pex(
dagster_pkg,
"PyGithub",
"-o=dagster-cloud.pex",
"--platform=manylinux2014_x86_64-cp-38-cp38",
"--platform=macosx_12_0_x86_64-cp-38-cp38",
"--platform=macosx_12_0_arm64-cp-38-cp38",
*platform_args,
"--platform=macosx_12_0_x86_64-cp-311-cp311",
"--platform=macosx_12_0_arm64-cp-311-cp311",
"--pip-version=23.0",
"--resolver-version=pip-2020-resolver",
"--venv=prepend",
# use a /bin/sh entrypoint that is better at choosing a python interpreter to use
"--sh-boot",
"-v",
]
print(f"Running {args}")
Expand Down
18 changes: 5 additions & 13 deletions tests/test_pex_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
import subprocess
import tempfile
from contextlib import contextmanager
from pathlib import Path
from typing import List
from unittest import mock

import pytest
import requests


@contextmanager
Expand All @@ -23,18 +18,16 @@ def run_dagster_cloud_serverless_cmd(dagster_cloud_pex_path, args: List[str]):
build_output_dir,
],
capture_output=True,
check=False,
)
if proc.returncode:
raise ValueError(
"Failed to run dagster-cloud.pex:"
+ (proc.stdout + proc.stderr).decode("utf-8")
"Failed to run dagster-cloud.pex:" + (proc.stdout + proc.stderr).decode("utf-8")
)

all_files = os.listdir(build_output_dir)
pex_files = {
filename
for filename in all_files
if filename.endswith(".pex") and filename != ".pex"
filename for filename in all_files if filename.endswith(".pex") and filename != ".pex"
}
yield (build_output_dir, list(pex_files), list(set(all_files) - pex_files))

Expand All @@ -48,6 +41,7 @@ def test_pex_build_only(repo_root, dagster_cloud_pex_path):
str(dagster_project1),
"--api-token=fake",
"--url=fake",
"--python-version=3.11",
],
) as (
build_output_dir,
Expand All @@ -56,9 +50,7 @@ def test_pex_build_only(repo_root, dagster_cloud_pex_path):
):
# one source-HASH.pex and one deps-HASH.pex file are expected
assert 2 == len(pex_files)
pex_file_by_alias = {
filename.split("-", 1)[0]: filename for filename in pex_files
}
pex_file_by_alias = {filename.split("-", 1)[0]: filename for filename in pex_files}

assert {"source", "deps"} == set(pex_file_by_alias)

Expand Down

0 comments on commit 415ec20

Please sign in to comment.