name: Plugin Release Integration on: pull_request: branches: [master] paths: - 'ruoyi-fastapi-backend/plugins/core/**' - 'ruoyi-fastapi-backend/plugins/examples/python/task_demo/**' - 'ruoyi-fastapi-frontend/src/utils/pluginBridge.js' - 'ruoyi-fastapi-backend/config/**' - 'ruoyi-fastapi-backend/cli/groups/plugin/**' - 'ruoyi-fastapi-backend/cli/runtime/plugin/**' - 'ruoyi-fastapi-backend/module_plugin/**' - 'ruoyi-fastapi-backend/server.py' - 'ruoyi-fastapi-backend/app.py' - 'ruoyi-fastapi-backend/sql/ruoyi-fastapi*.sql' - 'ruoyi-fastapi-backend/scripts/plugin_release_integration.py' - 'ruoyi-fastapi-backend/scripts/plugin_task_integration.py' - 'ruoyi-fastapi-backend/tests/plugins/**' - 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_artifact_commands.py' - 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_release_wait.py' - 'ruoyi-fastapi-backend/tests/cli/root/test_plugin_diagnostics.py' - 'ruoyi-fastapi-backend/tests/cli/runtime/plugin/**' - 'ruoyi-fastapi-backend/tests/module_plugin/**' - 'ruoyi-fastapi-backend/tests/server/test_plugin_runtime.py' - 'ruoyi-fastapi-backend/tests/sql/test_plugin_release_schema.py' - 'ruoyi-fastapi-backend/pyproject.toml' - 'ruoyi-fastapi-backend/requirements.txt' - 'ruoyi-fastapi-backend/requirements-pg.txt' - '.github/workflows/plugin-release-integration.yml' workflow_dispatch: permissions: contents: read jobs: release: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python: ['3.10', '3.11', '3.12', '3.13'] defaults: run: working-directory: ruoyi-fastapi-backend services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: ci-only-mysql ports: ['3306:3306'] options: >- --health-cmd="mysqladmin ping -h localhost" --health-interval=10s --health-timeout=5s --health-retries=12 postgres: image: postgres:14 env: POSTGRES_PASSWORD: ci-only-postgres ports: ['5432:5432'] options: >- --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=12 redis: image: redis:6.2 ports: ['6379:6379'] options: >- --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=12 env: RUOYI_PLUGIN_IT_ALLOW: '1' RUOYI_IT_MYSQL_PASSWORD: ci-only-mysql RUOYI_IT_PG_PASSWORD: ci-only-postgres RUOYI_IT_REDIS_PASSWORD: '' steps: - uses: actions/checkout@v5 - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} cache: pip cache-dependency-path: ruoyi-fastapi-backend/requirements*.txt - name: Install host dependencies run: python -m pip install -r requirements.txt -r requirements-pg.txt - uses: actions/setup-node@v5 with: node-version: '22' - name: Test and build task plugin bundle run: | npm --prefix plugins/examples/python/task_demo/web install --no-audit --no-fund --package-lock=false npm --prefix plugins/examples/python/task_demo/web test npm --prefix plugins/examples/python/task_demo/web run build - name: Verify MySQL and Redis maintenance releases run: python scripts/plugin_release_integration.py --engine mysql - name: Verify PostgreSQL and Redis maintenance releases run: python scripts/plugin_release_integration.py --engine postgresql