diff --git a/.github/workflows/node-hub-ci-cd.yml b/.github/workflows/node-hub-ci-cd.yml index 90df6f5a..81b85fd4 100644 --- a/.github/workflows/node-hub-ci-cd.yml +++ b/.github/workflows/node-hub-ci-cd.yml @@ -78,65 +78,11 @@ jobs: - name: Run Linting and Tests ## Run Linting and testing only on Mac for release workflows. if: runner.os == 'Linux' || github.event_name == 'workflow_dispatch' || (github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')) - run: | - chmod +x ../../.github/workflows/node_hub_test.sh - ../../.github/workflows/node_hub_test.sh - - - name: Publish Projects - if: github.event_name == 'workflow_dispatch' || (github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')) env: + GITHUB_EVENT_NAME: ${{ github.event_name }} MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_PASS }} UV_PUBLISH_TOKEN: ${{ secrets.PYPI_PASS }} CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: | - dir=$(pwd) - base_dir=$(basename "$dir") - ignored_folders=("dora-parler") - - if [[ " ${ignored_folders[@]} " =~ " ${base_dir} " ]]; then - echo "Skipping $base_dir as there is a hf model fetching issue..." - else - if [[ -f "Cargo.toml" && -f "pyproject.toml" ]]; then - echo "Publishing $dir using maturin..." - if [[ "${{ runner.os }}" == "Linux" ]]; then - pip install "maturin[zig]" - - ## The CI/CD is sequential to limit the number of workers used. - - # x86_64-unknown-linux-gnu - maturin publish --skip-existing --zig - - # aarch64-unknown-linux-gnu - rustup target add aarch64-unknown-linux-gnu - maturin publish --target aarch64-unknown-linux-gnu --zig --skip-existing - - # armv7-unknown-linux-musleabihf - rustup target add armv7-unknown-linux-musleabihf - maturin publish --target armv7-unknown-linux-musleabihf --zig --skip-existing - - else - pip install maturin - maturin publish --skip-existing - fi - else - if [[ "${{ runner.os }}" == "Linux" ]]; then - if [ -f "pyproject.toml" ]; then - echo "Publishing $dir using UV..." - uv build - uv publish --check-url https://pypi.org/simple - fi - - if [ -f "Cargo.toml" ]; then - echo "Publishing $dir using Cargo..." - package_name=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[0].name') - version=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[0].version') - if cargo search "$package_name" | grep -q "^$package_name = \"$version\""; then - echo "Package '$package_name' version '$version' already exists on crates.io. Skipping publish." - else - echo "Publishing package '$package_name' version '$version'..." - cargo publish - fi - fi - fi - fi - fi + chmod +x ../../.github/workflows/node_hub_test.sh + ../../.github/workflows/node_hub_test.sh diff --git a/.github/workflows/node_hub_test.sh b/.github/workflows/node_hub_test.sh index 7899630b..bf7062a1 100755 --- a/.github/workflows/node_hub_test.sh +++ b/.github/workflows/node_hub_test.sh @@ -2,7 +2,10 @@ set -euo # List of ignored modules -ignored_folders=("dora-internvl" "dora-parler" "dora-keyboard" "dora-microphone" "terminal-input") +ignored_folders=("dora-parler") + +# Skip test +skip_test_folders=("dora-internvl" "dora-parler" "dora-keyboard" "dora-microphone" "terminal-input") # Get current working directory dir=$(pwd) @@ -23,15 +26,27 @@ else cargo test pip install "maturin[zig]" - maturin build --zig - + maturin build --zig --release + # If GITHUB_EVENT_NAME is release or workflow_dispatch, publish the wheel + if [ "$GITHUB_EVENT_NAME" == "release" ] || [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then + maturin publish --skip-existing --zig + fi + # aarch64-unknown-linux-gnu rustup target add aarch64-unknown-linux-gnu maturin build --target aarch64-unknown-linux-gnu --zig + # If GITHUB_EVENT_NAME is release or workflow_dispatch, publish the wheel + if [ "$GITHUB_EVENT_NAME" == "release" ] || [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then + maturin publish --target aarch64-unknown-linux-gnu --skip-existing --zig + fi # armv7-unknown-linux-musleabihf rustup target add armv7-unknown-linux-musleabihf maturin build --target armv7-unknown-linux-musleabihf --zig + # If GITHUB_EVENT_NAME is release or workflow_dispatch, publish the wheel + if [ "$GITHUB_EVENT_NAME" == "release" ] || [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then + maturin publish --target armv7-unknown-linux-musleabihf --skip-existing --zig + fi else if [ -f "$dir/Cargo.toml" ]; then echo "Running build and tests for Rust project in $dir..." @@ -39,6 +54,10 @@ else cargo clippy cargo build cargo test + + if [ "$GITHUB_EVENT_NAME" == "release" ] || [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then + cargo publish + fi else if [ -f "$dir/pyproject.toml" ]; then echo "CI: Installing in $dir..." @@ -47,7 +66,15 @@ else echo "CI: Running Linting in $dir..." uv run ruff check . echo "CI: Running Pytest in $dir..." - uv run pytest + # Skip test for some folders + if [[ " ${skip_test_folders[@]} " =~ " ${base_dir} " ]]; then + echo "Skipping tests for $base_dir..." + else + uv run pytest + fi + if [ "$GITHUB_EVENT_NAME" == "release" ] || [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then + uv publish --check-url https://pypi.org/simple + fi fi fi fi diff --git a/libraries/extensions/ros2-bridge/Cargo.toml b/libraries/extensions/ros2-bridge/Cargo.toml index 3d64720d..b2cc901b 100644 --- a/libraries/extensions/ros2-bridge/Cargo.toml +++ b/libraries/extensions/ros2-bridge/Cargo.toml @@ -3,7 +3,7 @@ name = "dora-ros2-bridge" version.workspace = true edition.workspace = true license.workspace = true -description = "Message generation for ROS2 bridge" +description = "ROS2 bridge for dora-rs" links = "dora-ros2-bridge" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html