en un clic
Build, deploy, and test NiFi E2E environment (Docker containers)
npx skills add https://github.com/cuioss/nifi-extensions --skill deployCopiez et collez cette commande dans Claude Code pour installer le skill
Build, deploy, and test NiFi E2E environment (Docker containers)
npx skills add https://github.com/cuioss/nifi-extensions --skill deployCopiez et collez cette commande dans Claude Code pour installer le skill
| name | deploy |
| description | Build, deploy, and test NiFi E2E environment (Docker containers) |
| user-invocable | true |
| allowed-tools | Bash, Read, mcp__claude-in-chrome__tabs_context_mcp, mcp__claude-in-chrome__tabs_create_mcp, mcp__claude-in-chrome__navigate, mcp__claude-in-chrome__find, mcp__claude-in-chrome__computer, mcp__claude-in-chrome__read_page, mcp__claude-in-chrome__browser_wait_for |
Manages the Docker-based NiFi + Keycloak test environment for E2E testing.
Optional argument selects the workflow:
/deploy or /deploy status — Show container status/deploy start — First-time start (build NAR + start containers)/deploy redeploy — Redeploy after code changes (rebuild NAR + restart NiFi only)/deploy test — Run E2E Playwright tests (containers must be running)/deploy test <file> — Run specific E2E test file/deploy stop — Stop all containers/deploy full — Full CI workflow: stop → build → start → test → stop/deploy troubleshoot — Diagnose common issuesParse the argument to determine which workflow to execute. Default (no args) = show status.
./integration-testing/src/main/docker/check-status.sh --quiet
./integration-testing/src/main/docker/run-and-deploy.sh
Builds NAR, copies to target/nifi-deploy/, starts Keycloak + NiFi.
NiFi takes ~60-80s to become healthy. URLs after start:
After containers are healthy, run the NiFi Browser Login procedure, then display the Sandbox Credentials.
./integration-testing/src/main/docker/redeploy-nifi.sh
Rebuilds NAR, copies to deploy dir, runs docker compose restart nifi.
Wait ~60-80s for NiFi to become healthy.
Verify: ./integration-testing/src/main/docker/check-status.sh
After NiFi is healthy, run the NiFi Browser Login procedure, then display the Sandbox Credentials.
cd e-2-e-playwright && npm run playwright:test [-- tests/<file>.spec.js]
Containers MUST be running. Use /deploy start first if needed.
cd integration-testing/src/main/docker && docker compose down -v
cd integration-testing/src/main/docker && docker compose down -v
cd <project-root>
./mvnw clean install
./mvnw verify -Pintegration-tests -pl e-2-e-playwright -am
IMPORTANT: Maven manages its own container lifecycle. Do NOT have manually-started containers running.
Check for common issues in order:
docker ps — Are containers running? Any orphaned containers on ports 7777/9095/9443?docker compose -f integration-testing/src/main/docker/docker-compose.yml ps — Container stateslsof -i :7777 -i :9095 -i :9443 2>/dev/nulldocker logs docker-nifi-1 --tail 50docker logs docker-nifi-1 2>&1 | grep -i cuiossAfter every start or redeploy, open Chrome and log in to NiFi.
Prerequisites: The user must have accepted the self-signed certificate for https://localhost:9095 in Chrome beforehand. If the browser shows a certificate error page, ask the user to manually accept the certificate (Advanced → Proceed) and then retry.
CRITICAL — Chrome extension false negatives:
The tabs_context_mcp call frequently returns "Browser extension is not connected" even when the extension IS connected and working. This is a transient MCP initialization issue, NOT an actual disconnection. You MUST retry up to 5 times before concluding the extension is truly disconnected. NEVER tell the user the extension is disconnected based on failed calls alone — just keep retrying silently. In practice, the extension is almost always connected; failures resolve after 1-5 retries.
Login steps:
tabs_context_mcp with createIfEmpty: true. If it returns "not connected", retry up to 5 times (no delay needed between retries). Only after 5 consecutive failures should you ask the user to check the extension.tabs_create_mcphttps://localhost:9095/nifi/ — this redirects to NiFi's own login page (#/login)testUserdrowssap#/process-groups/ and the page title is "NiFi Flow" to verify a successful loginNotes:
https://localhost:9095/nifi/#/login.#/process-groups/ after navigation, the user is already logged in — skip the login steps.computer tool with coordinate-based clicks for the login form — find and read_page can be unreliable inside NiFi's Angular UI../mvnw verify -Pintegration-tests) automatically stops existing containers before starting fresh ones (via fixed deploy-and-start.sh)./mvnw clean install, the NAR in target/nifi-deploy/ is stale — must run /deploy redeploy to update running containerstarget/nifi-deploy/ directory is volume-mounted into the NiFi container| Path | Purpose |
|---|---|
target/nifi-deploy/ | NAR deployment dir (Docker volume mount) |
integration-testing/src/main/docker/docker-compose.yml | Docker Compose config |
integration-testing/src/main/docker/*.sh | Local deployment scripts |
e-2-e-playwright/scripts/*.sh | Maven-phase scripts |
e-2-e-playwright/target/test-results/ | Test artifacts |
After a successful start or redeploy (and browser login), display these credentials to the user so they can use the Token Fetch form in the Endpunkt-Tester tab:
Sandbox Keycloak Credentials (for Token Fetch)
───────────────────────────────────────────────
Realm: oauth_integration_tests
Client-ID: test_client
Client-Secret: yTKslWLtf4giJcWCaoVJ20H8sy6STexM
ROPC (password grant):
Username: testUser
Password: drowssap
Token Endpoint (auto-discovered via issuer):
https://keycloak:8443/realms/oauth_integration_tests/protocol/openid-connect/token
Other realm (for cross-issuer testing):
Realm: other_realm
Client-ID: other_client
Client-Secret: otherClientSecretValue123456789
Username: otherUser / drowssap
Note: The issuer dropdown in the Endpunkt-Tester auto-populates from the processor's Controller Service config. The token endpoint is resolved via OIDC discovery when clicking "Ermitteln".
The Custom UI runs inside an iframe. To access it manually:
https://localhost:9095/nifi/?id={processorId} query parameter