Skip to content

Commit

Permalink
Publish rust project on pip to make it simpler to deploy dora node on…
Browse files Browse the repository at this point in the history
… different machine without requiring installing cargo (#695)

Currently rust node and the cli requires easier to use cargo or wget,
but it would be simpler if we could just pip install them.

This PR do this.

People will be able to do:
```bash
pip install dora-rerun
pip install dora-rs-cli
```

This will make the pull process of nodes simpler for people who only use
python.
  • Loading branch information
haixuanTao authored Nov 1, 2024
2 parents 20c6328 + dc716b2 commit af620b4
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 37 deletions.
11 changes: 8 additions & 3 deletions .github/workflows/node-hub-ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,14 @@ jobs:
run: |
for dir in node-hub/*/ ; do
if [ -d "$dir" ]; then
if [ -f "$dir/pyproject.toml" ]; then
echo "Publishing $dir using Poetry..."
(cd "$dir" && poetry publish --build)
if [[ -f "$dir/Cargo.toml" && -f "$dir/pyproject.toml" ]]; then
echo "Publishing $dir using maturin..."
(cd "$dir" && poetry publish)
else
if [ -f "$dir/pyproject.toml" ]; then
echo "Publishing $dir using Poetry..."
(cd "$dir" && poetry publish --build)
fi
fi
if [ -f "$dir/Cargo.toml" ]; then
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/node_hub_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ for dir in node-hub/*/ ; do
fi

if [ -d "$dir" ]; then
if [ -f "$dir/pyproject.toml" ]; then
echo "Running linting and tests for Python project in $dir..."
(cd "$dir" && pip install .)
(cd "$dir" && poetry run black --check .)
(cd "$dir" && poetry run pylint --disable=C,R --ignored-modules=cv2 **/*.py)
(cd "$dir" && poetry run pytest)
fi

if [ -f "$dir/Cargo.toml" ]; then
echo "Running build and tests for Rust project in $dir..."
(cd "$dir" && cargo build)
(cd "$dir" && cargo test)
fi
echo "Running build and tests for Rust project in $dir..."
(cd "$dir" && cargo build)
(cd "$dir" && cargo test)
else
if [ -f "$dir/pyproject.toml" ]; then
echo "Running linting and tests for Python project in $dir..."
(cd "$dir" && pip install .)
(cd "$dir" && poetry run black --check .)
(cd "$dir" && poetry run pylint --disable=C,R --ignored-modules=cv2 **/*.py)
(cd "$dir" && poetry run pytest)
fi
fi
fi
done
64 changes: 42 additions & 22 deletions .github/workflows/pip-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ jobs:
# target: s390x
# - runner: ubuntu-20.04
# target: ppc64le
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -53,21 +56,21 @@ jobs:
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --zig
args: --release --out dist --zig -i 3.8
manylinux: manylinux_2_28
working-directory: apis/python/node
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: apis/python/node/dist/*
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true

Expand All @@ -82,6 +85,9 @@ jobs:
target: x86
- runner: ubuntu-22.04
target: aarch64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -91,22 +97,22 @@ jobs:
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
args: --release --out dist -i 3.8
sccache: "true"
manylinux: musllinux_1_2
working-directory: apis/python/node
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: apis/python/node/dist/*
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true

Expand All @@ -121,6 +127,9 @@ jobs:
image_tag: "armv7-musleabihf",
},
]
repository:
- path: apis/python/node
- path: binaries/cli
container:
image: docker://messense/rust-musl-cross:${{ matrix.platform.image_tag }}
env:
Expand All @@ -136,20 +145,20 @@ jobs:
target: ${{ matrix.platform.target }}
manylinux: auto
container: off
args: --release -o dist
working-directory: apis/python/node
args: --release -o dist -i 3.8
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v3
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: apis/python/node/dist/*
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true

Expand All @@ -160,6 +169,9 @@ jobs:
platform:
- runner: windows-latest
target: x64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -170,21 +182,21 @@ jobs:
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
args: --release --out dist -i 3.8
sccache: "true"
working-directory: apis/python/node
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: apis/python/node/dist/*
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true

Expand All @@ -197,6 +209,9 @@ jobs:
target: x86_64
- runner: macos-14
target: aarch64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -206,40 +221,45 @@ jobs:
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
args: --release --out dist -i 3.8
sccache: "true"
working-directory: apis/python/node
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: apis/python/node/dist/*
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true

sdist:
runs-on: ubuntu-22.04
strategy:
matrix:
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v3
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
working-directory: apis/python/node
working-directory: ${{ matrix.repository.path }}
- name: Upload sdist
if: github.event_name == 'release'
uses: actions/upload-artifact@v3
with:
name: wheels
path: apis/python/node/dist
path: ${{ matrix.repository.path }}/dist

release:
name: Release
Expand Down
6 changes: 6 additions & 0 deletions binaries/cli/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[build-system]
requires = ["maturin>=0.13.2"]
build-backend = "maturin"

[project]
name = "dora-rs-cli"
6 changes: 6 additions & 0 deletions node-hub/dora-rerun/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[build-system]
requires = ["maturin>=0.13.2"]
build-backend = "maturin"

[project]
name = "dora-rerun"

0 comments on commit af620b4

Please sign in to comment.