auth
無料Authentication and authorization patterns for Rossoctl services
日本語の概要は準備中です。原文の説明を表示しています。
Rapid UI/backend iteration on HyperShift — edit, build, deploy, Playwright test in under 3 minutes
日本語の概要は準備中です。原文の説明を表示しています。
実行スコア 未検証
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Fast iteration loop for Rossoctl UI and backend development on a live HyperShift cluster. Covers the full cycle: edit → commit → push → build → rollout → Playwright test.
# Cluster config
export CLUSTER=sbox42
export MANAGED_BY_TAG=rossoctl-team
export KUBECONFIG=~/clusters/hcp/${MANAGED_BY_TAG}-${CLUSTER}/auth/kubeconfig
export LOG_DIR="${LOG_DIR:-/tmp/rossoctl/tdd/ui-${CLUSTER}}"
mkdir -p "$LOG_DIR"
# Keycloak password (stored in K8s secret, not hardcoded)
export KEYCLOAK_PASSWORD=$(kubectl -n keycloak get secret rossoctl-test-users \
-o jsonpath='{.data.admin-password}' | base64 -d)
# UI URL from OpenShift route
export ROSSOCTL_UI_URL="https://$(kubectl get route rossoctl-ui -n rossoctl-system \
-o jsonpath='{.spec.host}')"
# Working directory
cd "${WORKTREE_DIR:-.worktrees/sandbox-agent}"/rossoctl/ui-v2
Test file changed, no build needed:
KUBECONFIG=$KUBECONFIG ROSSOCTL_UI_URL=$ROSSOCTL_UI_URL \
KEYCLOAK_USER=admin KEYCLOAK_PASSWORD=$KEYCLOAK_PASSWORD \
npx playwright test e2e/<spec>.spec.ts --reporter=list \
> $LOG_DIR/test.log 2>&1; echo "EXIT:$?"
Frontend code changed (components, pages, styles):
# 1. Commit + push
git add -u && git commit -s -m "fix(ui): <description>" && git push
# 2. Build UI image (~90s)
oc -n rossoctl-system start-build rossoctl-ui > $LOG_DIR/ui-build.log 2>&1
# Poll until complete:
while ! oc -n rossoctl-system get build rossoctl-ui-$(oc -n rossoctl-system get bc rossoctl-ui -o jsonpath='{.status.lastVersion}') -o jsonpath='{.status.phase}' 2>/dev/null | grep -qE 'Complete|Failed'; do sleep 10; done
echo "Build: $(oc -n rossoctl-system get build rossoctl-ui-$(oc -n rossoctl-system get bc rossoctl-ui -o jsonpath='{.status.lastVersion}') -o jsonpath='{.status.phase}')"
# 3. Rollout (~15s)
oc -n rossoctl-system rollout restart deploy/rossoctl-ui
oc -n rossoctl-system rollout status deploy/rossoctl-ui --timeout=60s
# 4. Test
npx playwright test e2e/<spec>.spec.ts --reporter=list > $LOG_DIR/test.log 2>&1; echo "EXIT:$?"
Backend Python code changed (routers, services):
# 1. Commit + push
git add -u && git commit -s -m "fix(backend): <description>" && git push
# 2. Build backend image (~30s — Python, no npm)
oc -n rossoctl-system start-build rossoctl-backend > $LOG_DIR/be-build.log 2>&1
# Wait for completion (same polling pattern as UI)
# 3. Rollout
oc -n rossoctl-system rollout restart deploy/rossoctl-backend
oc -n rossoctl-system rollout status deploy/rossoctl-backend --timeout=90s
# 4. Test
npx playwright test e2e/<spec>.spec.ts --reporter=list > $LOG_DIR/test.log 2>&1; echo "EXIT:$?"
git add -u && git commit -s -m "fix: <description>" && git push
# Build both in parallel
oc -n rossoctl-system start-build rossoctl-backend &
oc -n rossoctl-system start-build rossoctl-ui &
wait
# Poll both until complete, then:
oc -n rossoctl-system rollout restart deploy/rossoctl-backend deploy/rossoctl-ui
oc -n rossoctl-system rollout status deploy/rossoctl-backend --timeout=90s
oc -n rossoctl-system rollout status deploy/rossoctl-ui --timeout=90s
# Test
npx playwright test e2e/<spec>.spec.ts --reporter=list > $LOG_DIR/test.log 2>&1; echo "EXIT:$?"
oc -n team1 delete deploy ${AGENT_NAME} --ignore-not-found
oc -n team1 delete svc ${AGENT_NAME} --ignore-not-found
oc -n rossoctl-system logs deploy/rossoctl-backend -c backend --tail=20
oc -n team1 describe pod -l app.kubernetes.io/name=${AGENT_NAME} | grep -A5 "Events\|Error"
oc -n rossoctl-system logs build/rossoctl-ui-$(oc -n rossoctl-system get bc rossoctl-ui -o jsonpath='{.status.lastVersion}') | tail -20
In Playwright tests, navigating to /sandbox?session=<id> via page.goto() triggers
Keycloak re-auth which redirects to /. Use SPA routing instead:
// Login first on /
await page.goto('/');
await loginIfNeeded(page);
// Then SPA-navigate (no full page reload, no Keycloak redirect)
await page.evaluate((sid) => {
window.history.pushState({}, '', `/sandbox?session=${sid}`);
window.dispatchEvent(new PopStateEvent('popstate'));
}, sessionId);
Before each iteration:
After green tests:
npx playwright test --reporter=listtest:ui — Playwright test writing patterns and selectorstdd:hypershift — Python E2E tests via hypershift-full-test.shrossoctl:ui-debug — Debug 502s, proxy issues, auth problemsk8s:live-debugging — Debug pods, logs, configs on live clusterまだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Authentication and authorization patterns for Rossoctl services
日本語の概要は準備中です。原文の説明を表示しています。
Create confidential OAuth2 clients in Keycloak for server-to-service authentication
日本語の概要は準備中です。原文の説明を表示しています。
Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication
日本語の概要は準備中です。原文の説明を表示しています。
Configure OpenTelemetry Collector with OAuth2 authentication for trace export
日本語の概要は準備中です。原文の説明を表示しています。
CI pipeline monitoring, status checks, and PR validation workflows
日本語の概要は準備中です。原文の説明を表示しています。
Monitor running CI jobs, wait for completion, create tasks for results
日本語の概要は準備中です。原文の説明を表示しています。