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