diff --git a/.github/workflows/node-hub-ci-cd.yml b/.github/workflows/node-hub-ci-cd.yml new file mode 100644 index 00000000..fe984fa6 --- /dev/null +++ b/.github/workflows/node-hub-ci-cd.yml @@ -0,0 +1,100 @@ +name: node-hub + +on: + push: + branches: + - main + pull_request: + branches: + - main + release: + types: [published] + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.10" + + - name: Set up Poetry + run: | + curl -sSL https://install.python-poetry.org | python3 - + echo "$HOME/.local/bin" >> $GITHUB_PATH + pip install black pylint pytest + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + + - name: Run Linting and Tests + run: | + for dir in node-hub/*/ ; do + 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 + fi + done + + publish: + needs: [ci] + runs-on: ubuntu-latest + if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/') + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.10" + + - name: Set up Poetry + run: | + curl -sSL https://install.python-poetry.org | python3 - + echo "$HOME/.local/bin" >> $GITHUB_PATH + + - name: Set up Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + + - name: Publish Projects + env: + MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_PASS }} + POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_PASS }} + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + 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) + fi + + if [ -f "$dir/Cargo.toml" ]; then + echo "Publishing $dir using Cargo..." + (cd "$dir" && cargo publish) + fi + fi + done diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 74d3a4fb..aa9b7ad5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -79,10 +79,6 @@ jobs: cargo publish -p dora-daemon --token ${{ secrets.CARGO_REGISTRY_TOKEN }} cargo publish -p dora-cli --token ${{ secrets.CARGO_REGISTRY_TOKEN }} - # Publish tool nodes - cargo publish -p dora-record --token ${{ secrets.CARGO_REGISTRY_TOKEN }} - cargo publish -p dora-rerun --token ${{ secrets.CARGO_REGISTRY_TOKEN }} - unix: runs-on: ${{ matrix.platform.runner }} strategy: diff --git a/node-hub/opencv-plot/opencv_plot/main.py b/node-hub/opencv-plot/opencv_plot/main.py index 4dd7adca..50f421fe 100644 --- a/node-hub/opencv-plot/opencv_plot/main.py +++ b/node-hub/opencv-plot/opencv_plot/main.py @@ -1,7 +1,7 @@ -import os import argparse -import cv2 +import os +import cv2 import numpy as np import pyarrow as pa diff --git a/node-hub/opencv-plot/pyproject.toml b/node-hub/opencv-plot/pyproject.toml index a6791fe3..795bba3b 100644 --- a/node-hub/opencv-plot/pyproject.toml +++ b/node-hub/opencv-plot/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "opencv-plot" -version = "0.1" +version = "0.3.5" authors = [ "Haixuan Xavier Tao ", "Enzo Le Van ", diff --git a/node-hub/opencv-plot/tests/test_opencv_plot.py b/node-hub/opencv-plot/tests/test_opencv_plot.py new file mode 100644 index 00000000..201975fc --- /dev/null +++ b/node-hub/opencv-plot/tests/test_opencv_plot.py @@ -0,0 +1,2 @@ +def test_placeholder(): + pass diff --git a/node-hub/opencv-video-capture/opencv_video_capture/__init__.py b/node-hub/opencv-video-capture/opencv_video_capture/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/node-hub/opencv-video-capture/opencv_video_capture/main.py b/node-hub/opencv-video-capture/opencv_video_capture/main.py index 0f4e29ab..e27d19f0 100644 --- a/node-hub/opencv-video-capture/opencv_video_capture/main.py +++ b/node-hub/opencv-video-capture/opencv_video_capture/main.py @@ -1,14 +1,13 @@ -import os import argparse -import cv2 +import os +import time +import cv2 import numpy as np import pyarrow as pa from dora import Node -import time - RUNNER_CI = True if os.getenv("CI") == "true" else False diff --git a/node-hub/opencv-video-capture/pyproject.toml b/node-hub/opencv-video-capture/pyproject.toml index 5d686ebd..89ef578b 100644 --- a/node-hub/opencv-video-capture/pyproject.toml +++ b/node-hub/opencv-video-capture/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "opencv-video-capture" -version = "0.1" +version = "0.3.5" authors = [ "Haixuan Xavier Tao ", "Enzo Le Van ", diff --git a/node-hub/opencv-video-capture/tests/test_opencv_video_capture.py b/node-hub/opencv-video-capture/tests/test_opencv_video_capture.py new file mode 100644 index 00000000..201975fc --- /dev/null +++ b/node-hub/opencv-video-capture/tests/test_opencv_video_capture.py @@ -0,0 +1,2 @@ +def test_placeholder(): + pass diff --git a/node-hub/ultralytics-yolo/pyproject.toml b/node-hub/ultralytics-yolo/pyproject.toml index 2665168a..bcd46975 100644 --- a/node-hub/ultralytics-yolo/pyproject.toml +++ b/node-hub/ultralytics-yolo/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ultralytics-yolo" -version = "0.1" +version = "0.3.5" authors = [ "Haixuan Xavier Tao ", "Enzo Le Van ", diff --git a/node-hub/ultralytics-yolo/tests/test_ultralytics_yolo.py b/node-hub/ultralytics-yolo/tests/test_ultralytics_yolo.py new file mode 100644 index 00000000..201975fc --- /dev/null +++ b/node-hub/ultralytics-yolo/tests/test_ultralytics_yolo.py @@ -0,0 +1,2 @@ +def test_placeholder(): + pass diff --git a/node-hub/ultralytics-yolo/ultralytics_yolo/main.py b/node-hub/ultralytics-yolo/ultralytics_yolo/main.py index 42ef980f..360b8243 100644 --- a/node-hub/ultralytics-yolo/ultralytics_yolo/main.py +++ b/node-hub/ultralytics-yolo/ultralytics_yolo/main.py @@ -1,11 +1,11 @@ -import os import argparse +import os import numpy as np import pyarrow as pa +from ultralytics import YOLO from dora import Node -from ultralytics import YOLO def main():