name: CI / ReMe Studio on: push: branches: [main] paths: - "reme_studio/**" - ".github/workflows/ci-reme-studio.yml" - ".github/workflows/release-reme-studio.yml" - "scripts/package_studio.py" - "tests/unit/test_package_versions.py" - "pyproject.toml" - "LICENSE" pull_request: branches: [main] paths: - "reme_studio/**" - ".github/workflows/ci-reme-studio.yml" - ".github/workflows/release-reme-studio.yml" - "scripts/package_studio.py" - "tests/unit/test_package_versions.py" - "pyproject.toml" - "LICENSE" workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: studio: name: Studio checks runs-on: ubuntu-latest timeout-minutes: 30 defaults: run: working-directory: reme_studio steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Setup Node uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: "22.22.3" cache: npm cache-dependency-path: reme_studio/package-lock.json - name: Install dependencies run: npm ci - name: Run format check run: npm run format:check - name: Run lint run: npm run lint - name: Run tests run: npm test - name: Verify npm package run: | npm pack --pack-destination "${RUNNER_TEMP}" tar -tzf "${RUNNER_TEMP}"/agentscope-ai-reme_studio-*.tgz | grep '^package/dist-static/index.html$' - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.11" - name: Build and verify Python package working-directory: . run: | python -m pip install build packaging pytest twine PYTHONPATH=. python -m pytest tests/unit/test_package_versions.py -q python scripts/package_studio.py python -m build reme_studio --outdir dist/studio python -m twine check dist/studio/* STUDIO_WHEEL="$(pwd)/$(ls dist/studio/reme_studio-*.whl)" python -m venv "${RUNNER_TEMP}/reme-studio-package-smoke" "${RUNNER_TEMP}/reme-studio-package-smoke/bin/python" -m pip install "${STUDIO_WHEEL}" cd "${RUNNER_TEMP}" "${RUNNER_TEMP}/reme-studio-package-smoke/bin/python" - <<'PY' from reme_studio import static_dir assert (static_dir() / "index.html").is_file() PY