Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build dagster-cloud-action PEX for more platforms #200

Merged
merged 1 commit into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions .github/workflows/serverless_launch_job.yml

This file was deleted.

7 changes: 2 additions & 5 deletions .github/workflows/serverless_launch_job_definitions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
pull_request:
types: [opened, synchronize, reopened, closed]
env:
DAGSTER_CLOUD_URL: ${{ secrets.DAGSTER_CLOUD_SERVERLESS_URL }}
DAGSTER_CLOUD_URL: "https://dagster-cloud-action-github-workflow-serverless.dagster.cloud"

jobs:
dagster_cloud_launch:
Expand All @@ -17,10 +17,7 @@ jobs:
- name: Launch a job on Dagster Cloud serverless
uses: ./actions/utils/run
with:
# differently named location (manually deployed), so that this launch integration test
# does not have race-y collisions with the deployment integration tests
# no repository name, since it uses Definitions
location_name: from_gh_action_for_launch_definitions
location_name: from_gh_action
job_name: simple_job
env:
DAGSTER_CLOUD_API_TOKEN: ${{ secrets.DAGSTER_CLOUD_SERVERLESS_API_TOKEN }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Tests
name: Tests
on:
push:

Expand All @@ -11,7 +11,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why 3.11?
shouldn't we just pick one of the 3 defaults below?
maybe 310 because that's the default on internal?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did 3.11 because that's our default for development in general and because I changed a test case to depend on it

(3.10 is not the default on internal, 3.11 is)


```
# 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
Binary file modified generated/gha/dagster-cloud.pex
Binary file not shown.
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
Loading