From dfdca94967dd1865ab7707faf2cee4d25a09290d Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Fri, 26 Jul 2024 10:44:43 +0200 Subject: [PATCH] Add a CI/CD for the node-hub and fix isort --- .github/workflows/node-hub-ci-cd.yml | 98 +++++++++++++++++++ .github/workflows/release.yml | 4 - node-hub/opencv-plot/opencv_plot/main.py | 4 +- node-hub/opencv-plot/pyproject.toml | 2 +- .../opencv_video_capture/__init__.py | 0 .../opencv_video_capture/main.py | 7 +- node-hub/opencv-video-capture/pyproject.toml | 2 +- node-hub/ultralytics-yolo/pyproject.toml | 2 +- .../ultralytics-yolo/ultralytics_yolo/main.py | 4 +- 9 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/node-hub-ci-cd.yml create mode 100644 node-hub/opencv-video-capture/opencv_video_capture/__init__.py diff --git a/.github/workflows/node-hub-ci-cd.yml b/.github/workflows/node-hub-ci-cd.yml new file mode 100644 index 00000000..2893f3fd --- /dev/null +++ b/.github/workflows/node-hub-ci-cd.yml @@ -0,0 +1,98 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + release: + types: [published] + +jobs: + build_and_test: + 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.x" + + - 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 + 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" && poetry 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: [build_and_test] + 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.x" + + - 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-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/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/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():