Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 1 addition & 15 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -197,17 +197,7 @@ jobs:
ref_type: ${{ github.ref_type }}
ref_name: ${{ github.ref_name }}
run_package: ${{ needs.ci_changes.outputs.run_node_package == 'true' }}

ci_openclaw:
name: OpenClaw
needs: [prepare, ci_changes, ci_check]
uses: ./.github/workflows/ci_openclaw.yml
if: ${{ needs.ci_check.result == 'success' && needs.ci_changes.outputs.run_openclaw == 'true' }}
permissions:
contents: read
with:
ref_type: ${{ github.ref_type }}
ref_name: ${{ github.ref_name }}
run_openclaw: ${{ needs.ci_changes.outputs.run_openclaw == 'true' }}

ci_python:
name: Python
Expand Down Expand Up @@ -247,7 +237,6 @@ jobs:
- ci_rust
- ci_go
- ci_node
- ci_openclaw
- ci_python
- ci_wasm
if: ${{ always() && !cancelled() && needs.prepare.result == 'success' && ! fromJSON(needs.prepare.outputs.has_skip_ci_label) }}
Expand All @@ -263,7 +252,6 @@ jobs:
RUST_RESULT: ${{ needs.ci_rust.result }}
GO_RESULT: ${{ needs.ci_go.result }}
NODE_RESULT: ${{ needs.ci_node.result }}
OPENCLAW_RESULT: ${{ needs.ci_openclaw.result }}
PYTHON_RESULT: ${{ needs.ci_python.result }}
WEBASSEMBLY_RESULT: ${{ needs.ci_wasm.result }}
publish_docs: ${{ needs.prepare.outputs.publish_docs }}
Expand Down Expand Up @@ -302,13 +290,11 @@ jobs:
if [[ "$publish_packages" == "true" ]]; then
require_success "Rust" "$RUST_RESULT"
require_success "Node.js" "$NODE_RESULT"
require_success "OpenClaw" "$OPENCLAW_RESULT"
require_success "Python" "$PYTHON_RESULT"
require_success "WebAssembly" "$WEBASSEMBLY_RESULT"
else
allow_success_or_skipped "Rust" "$RUST_RESULT"
allow_success_or_skipped "Node.js" "$NODE_RESULT"
allow_success_or_skipped "OpenClaw" "$OPENCLAW_RESULT"
allow_success_or_skipped "Python" "$PYTHON_RESULT"
allow_success_or_skipped "WebAssembly" "$WEBASSEMBLY_RESULT"
fi
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci_changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ jobs:
run_dependencies: ${{ inputs.full_ci || steps.filter.outputs.dependencies == 'true' }}
run_docs: ${{ (inputs.full_ci || startsWith(inputs.ref_name, 'pull-request/')) && (inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.docs == 'true') }}
run_go: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.go == 'true' }}
run_node: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.node == 'true' }}
run_node: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.node == 'true' || steps.filter.outputs.openclaw == 'true' }}
run_node_package: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.node_package == 'true' }}
run_openclaw: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.openclaw == 'true' }}
run_openclaw: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.node == 'true' || steps.filter.outputs.openclaw == 'true' }}
run_python: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.python == 'true' }}
run_python_package: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.python_package == 'true' }}
run_rust: ${{ inputs.full_ci || steps.filter.outputs.ci == 'true' || steps.filter.outputs.shared == 'true' || steps.filter.outputs.rust == 'true' }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ jobs:
run: |
set -e
uv tool install pre-commit==${{ steps.ci-config.outputs.pre_commit_version }}
uv sync --inexact --no-install-project --no-install-package nemo-flow --extra langchain --extra langgraph --extra deepagents
if [[ "$FULL_CI" == "true" || -z "$PRE_COMMIT_BASE" ]]; then
pre-commit run --all-files --show-diff-on-failure
else
Expand Down
83 changes: 82 additions & 1 deletion .github/workflows/ci_node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ on:
required: false
default: true
type: boolean
run_openclaw:
description: 'Whether to run OpenClaw integration checks'
required: false
default: false
type: boolean
secrets:
CODECOV_TOKEN:
required: false
Expand Down Expand Up @@ -90,6 +95,11 @@ jobs:
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: just --set ci true --set output_dir "${{ github.workspace }}" test-node

- name: Run OpenClaw integration checks
if: ${{ inputs.run_openclaw }}
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: just --set ci true test-openclaw

- name: Upload Node coverage to Codecov
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6
if: ${{ !startsWith(matrix.platform, 'windows') }}
Expand Down Expand Up @@ -167,11 +177,13 @@ jobs:
tool: just@${{ steps.ci-config.outputs.just_version }}

- name: Create packaging output directory
if: ${{ inputs.run_package }}
run: |
set -e
mkdir -p "${{ env.NEMO_FLOW_CI_WORKSPACE_TMP }}/npm"

- name: Derive Node package version
if: ${{ inputs.run_package }}
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: |
set -e
Expand All @@ -185,6 +197,7 @@ jobs:
printf 'NEMO_FLOW_PACKAGE_VERSION=%s\n' "$version" >> "$GITHUB_ENV"

- name: Package Node
if: ${{ inputs.run_package }}
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: |
set -e
Expand All @@ -196,15 +209,83 @@ jobs:

- name: Upload npm package artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ inputs.run_package }}
with:
name: npm-${{ matrix.platform }}
path: ${{ env.NEMO_FLOW_CI_WORKSPACE_TMP }}/npm/*.tgz
if-no-files-found: error

PackageOpenClaw:
name: Package OpenClaw plugin
needs: [Test]
if: ${{ inputs.run_openclaw && !cancelled() && needs.Test.result == 'success' }}
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- name: Load CI tool versions
id: ci-config
uses: ./.github/actions/load-ci-tool-versions

- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache: false
toolchain: ${{ steps.ci-config.outputs.rust_version }}

- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
with:
shared-key: nemo-flow-rust-openclaw-package-${{ runner.os }}-${{ runner.arch }}-${{ steps.ci-config.outputs.rust_version }}
workspaces: . -> target
cache-all-crates: true
cache-bin: false
save-if: false

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: ${{ steps.ci-config.outputs.node_version }}

- uses: taiki-e/install-action@5939f3337e40968c39aa70f5ecb1417a92fb25a0 # v2.75.15
with:
tool: just@${{ steps.ci-config.outputs.just_version }}

- name: Derive OpenClaw package version
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: |
set -e
version="$(node -e 'const fs = require("fs"); const pkg = JSON.parse(fs.readFileSync("integrations/openclaw/package.json", "utf8")); if (!pkg.version) { throw new Error("integrations/openclaw/package.json missing version field"); } console.log(pkg.version);')"
sha="${GITHUB_SHA::8}"
if [ "${{ inputs.ref_type }}" = "tag" ]; then
version="${{ inputs.ref_name }}"
else
version="${version}+${sha}"
fi
printf 'NEMO_FLOW_OPENCLAW_PACKAGE_VERSION=%s\n' "$version" >> "$GITHUB_ENV"

- name: Package OpenClaw plugin
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: |
set -euo pipefail
just \
--set ci true \
--set output_dir "${NEMO_FLOW_CI_WORKSPACE_TMP}" \
--set ref_name "${NEMO_FLOW_OPENCLAW_PACKAGE_VERSION}" \
package-openclaw

- name: Upload OpenClaw plugin artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: openclaw-npm
path: ${{ env.NEMO_FLOW_CI_WORKSPACE_TMP }}/openclaw/*.tgz
if-no-files-found: error

Consolidate:
name: Consolidate
needs: [Package]
if: ${{ !cancelled() && needs.Package.result == 'success' }}
if: ${{ inputs.run_package && !cancelled() && needs.Package.result == 'success' }}
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
Expand Down
97 changes: 0 additions & 97 deletions .github/workflows/ci_openclaw.yml

This file was deleted.

17 changes: 17 additions & 0 deletions .github/workflows/ci_python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,23 @@ jobs:
set -e
UV_PYTHON_DOWNLOADS=manual uv python install --managed-python ${{ steps.ci-config.outputs.default_python_version }}

- name: Install Windows ARM64 OpenSSL
if: ${{ matrix.platform == 'windows-arm64' }}
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$vcpkgRoot = Join-Path $env:RUNNER_TEMP 'vcpkg'
git clone https://github.com/microsoft/vcpkg $vcpkgRoot
git -C $vcpkgRoot checkout --detach 56bb2411609227288b70117ead2c47585ba07713
& (Join-Path $vcpkgRoot 'bootstrap-vcpkg.bat') -disableMetrics
& (Join-Path $vcpkgRoot 'vcpkg.exe') install openssl:arm64-windows-static-md --clean-after-build --disable-metrics

$opensslDir = Join-Path $vcpkgRoot 'installed\arm64-windows-static-md'
Add-Content -Path $env:GITHUB_ENV -Value "OPENSSL_DIR=$opensslDir"
Add-Content -Path $env:GITHUB_ENV -Value "OPENSSL_STATIC=1"
Add-Content -Path $env:GITHUB_ENV -Value "VCPKG_ROOT=$vcpkgRoot"
Add-Content -Path $env:GITHUB_ENV -Value "VCPKGRS_TRIPLET=arm64-windows-static-md"

- name: Run Python tests with coverage
working-directory: ${{ env.NEMO_FLOW_CI_WORKSPACE }}
run: just --set ci true --set output_dir "${{ github.workspace }}" test-python
Expand Down
Loading
Loading