Skip to main content

RDT Workshop: AI-Powered SAMO Development — Prerequisites

Hi everyone! You're signed up for the RDT Workshop — a hands-on session where we'll use the VS Code Extension, SAMO MCP Server, and SAMO Pilot (with Claude Code / OpenAI Codex) to scaffold, deploy, and AI-develop SAMO project.

⚠️ The workshop does NOT include time for setting up prerequisites. Please complete everything below and run the verification script at least 2 days before the workshop. If anything fails, reach out so we can troubleshoot before the day.


1. Software Installation

Install these tools (or verify you already have them):

VS Code — version 1.103.0+

Node.js — version 22.x (LTS)

  • Download: https://nodejs.org/ (use the LTS installer)
  • Verify: node --version (expected: v22.x.x)

Git

kubectl & Helm — follow the Kubernetes Cluster Access Guide (Section 2 below), it covers installation of both tools.

  • Verify: kubectl version --client and helm version

AI Coding Agent — you need at least one of:

  • Claude Code: npm install -g @anthropic-ai/claude-code → verify: claude --version
  • OpenAI Codex: npm install -g @openai/codex → verify: codex --version

ℹ️ Details on API key / access for the AI agent will be provided by the workshop organizer.


2. GitLab Access (git.asseco-ce.com)

The workshop uses internal GitLab repos for project scaffolding and the SAMO Pilot plugin. GitLab uses 2FA, so you need a Personal Access Token (PAT) for Git HTTPS operations.

ℹ️ If you already have 2FA and a PAT with read_repository + read_registry scopes set up for git.asseco-ce.com, you can skip this section entirely — just verify repo access in step 4.

  1. Log in to https://git.asseco-ce.com and set up 2FA if you haven't already

  2. Create a Personal Access Token:

    • Go to Settings → Access Tokens (or navigate to https://git.asseco-ce.com/-/user_settings/personal_access_tokens)
    • Click Add new token
    • Name: e.g. rdt-workshop
    • Scopes: select read_repository and read_registry
    • Set an expiration date and click Create personal access token
    • Copy the token — you won't see it again
  3. Request access to the following repos (needed for project scaffolding in the workshop):

    If you can't access them, contact the workshop organizer to be granted read access.

  4. Verify — when prompted, enter your GitLab username and PAT as the password. On Windows/macOS, Git Credential Manager remembers them automatically. On Linux, run git config --global credential.helper store first so you don't get prompted every time.

git ls-remote https://git.asseco-ce.com/SAMO/customers/asseco-ce/samo-init/samo-init-project.git
git ls-remote https://git.asseco-ce.com/SAMO/customers/asseco-ce/samo-init/samo-init-configuration.git

💡 Windows users: if you get an SSL error, run git config --global http.sslBackend schannel first (see Troubleshooting).


3. Kubernetes Cluster Access

⏱️ Allow 15–30 minutes for this — it's a multi-step process.

  1. Connect to VPN — you must be on the corporate VPN to access the cluster
  2. Follow the cluster access guide — it walks you through kubeconfig download, kubectl install, Helm install, and context setup: 👉 https://samo.gitpages.assecosk.local/documentation/dev-documentation/docs/other/Kubernetes/access-k8s-cluster
  3. Verify:
kubectl cluster-info
kubectl get namespaces

If it fails:

  • Are you connected to VPN?
  • Is your kubeconfig at ~/.kube/config (macOS/Linux) or C:\Users\<username>\.kube\config (Windows)?
  • Correct context? Run kubectl config current-context

4. SAMO Nexus npm Registry (@samo scope)

The MCP Server is published on an internal Nexus registry. You need to tell npm where to find @samo packages.

Step 1 — Open your .npmrc file in a text editor:

  • Windows: C:\Users\<username>\.npmrc
  • macOS/Linux: ~/.npmrc

If the file doesn't exist, create it. You can also find its path with npm config get userconfig.

Step 2 — Add these two lines:

@samo:registry=https://nexus/repository/samo-npm/
//nexus/repository/samo-npm/:_authToken=<your-nexus-token>

💡 Don't have a token? Run npm login --registry=https://nexus/repository/samo-npm/ — enter your LDAP username and password. This appends the _authToken line automatically. Then add the @samo:registry=... line above it if it's not there.

Step 3 — Verify:

npm config get @samo:registry
# Expected: https://nexus/repository/samo-npm/

npm view @samo/mcp-server version
# Expected: a version number (e.g., 0.0.1)

5. Helm OCI Registry

The workshop deploys SAMO apps using a Helm chart from an OCI registry. This uses the same docker.asseco-ce.com account as the external GitLab (git.asseco-ce.com) — same credentials, same 2FA.

  1. Set up 2FA on your git.asseco-ce.com account (if not already done — same account used in Section 2)
  2. Create a Personal Access Token (PAT) in your account settings — with 2FA enabled, your password won't work for CLI login
  3. Log in:
helm registry login docker.asseco-ce.com

When prompted, enter your username and Personal Access Token (not your password).

  1. Verify:
helm pull oci://docker.asseco-ce.com/samo/infrastructure/samo-rdt-helm-chart/charts/samo-rdt --version 0.1.0

Should download without errors. You can delete the .tgz file afterward.


6. What the Organizer Will Provide (no action needed)

These will be distributed at the start of the workshop:

  • RDT VS Code Extension (.vsix file)
  • GitLab access token (for SAMO Pilot plugin)
  • SAMO license files & Kubernetes secrets YAML
  • Sample SAMO project

7. Verification Script

Run this the day before the workshop to check everything at once.

Windows — paste into PowerShell:

& {
Write-Host "=== RDT Workshop Prerequisites ===" -ForegroundColor Cyan
Write-Host ""

$checks = @(
@("VS Code", { code --version 2>$null | Select-Object -First 1 }),
@("Node.js", { node --version 2>$null }),
@("Git", { git --version 2>$null }),
@("kubectl", { kubectl version --client 2>$null }),
@("Helm", { helm version 2>$null }),
@("Claude Code", { claude --version 2>$null }),
@("Codex CLI", { codex --version 2>$null }),
@("@samo scope", { npm config get @samo:registry 2>$null })
)

foreach ($check in $checks) {
$name = $check[0].PadRight(14)
$result = try { & $check[1] } catch { $null }
if ($result -and $result -notmatch "undefined") {
Write-Host " OK $name $result" -ForegroundColor Green
} else {
Write-Host " MISS $name (not found)" -ForegroundColor Red
}
}

Write-Host ""
Write-Host "--- Connectivity ---" -ForegroundColor Cyan

$k8s = kubectl cluster-info 2>$null | Select-Object -First 1
if ($k8s) { Write-Host " OK K8s cluster $k8s" -ForegroundColor Green }
else { Write-Host " FAIL K8s cluster Not accessible (VPN connected?)" -ForegroundColor Red }

$nexus = npm view @samo/mcp-server version --registry=https://nexus/repository/samo-npm/ 2>$null
if ($nexus) { Write-Host " OK Nexus npm @samo/mcp-server@$nexus" -ForegroundColor Green }
else { Write-Host " FAIL Nexus npm Cannot reach @samo/mcp-server (auth or VPN issue)" -ForegroundColor Red }

$helmOci = helm show chart oci://docker.asseco-ce.com/samo/infrastructure/samo-rdt-helm-chart/charts/samo-rdt --version 0.1.0 2>$null
if ($helmOci) { Write-Host " OK Helm OCI docker.asseco-ce.com reachable" -ForegroundColor Green }
else { Write-Host " FAIL Helm OCI Cannot pull chart (run: helm registry login docker.asseco-ce.com)" -ForegroundColor Red }

Write-Host ""
Write-Host "You need at least ONE of: Claude Code or Codex CLI" -ForegroundColor Yellow
Write-Host "All 'FAIL' and 'MISS' items must be resolved before the workshop." -ForegroundColor Yellow
}

macOS / Linux — paste into terminal:

bash <<'EOF'
echo "=== RDT Workshop Prerequisites ==="
echo ""

check() {
local name=$1; local cmd=$2; local result
result=$(eval "$cmd" 2>/dev/null)
if [ -n "$result" ] && [ "$result" != "undefined" ]; then
printf " \033[32mOK\033[0m %-14s %s\n" "$name" "$result"
else
printf " \033[31mMISS\033[0m %-14s %s\n" "$name" "(not found)"
fi
}

check "VS Code" "code --version | head -1"
check "Node.js" "node --version"
check "Git" "git --version"
check "kubectl" "kubectl version --client"
check "Helm" "helm version"
check "Claude Code" "claude --version"
check "Codex CLI" "codex --version"
check "@samo scope" "npm config get @samo:registry"

echo ""
echo "--- Connectivity ---"

k8s=$(kubectl cluster-info 2>/dev/null | head -1)
[ -n "$k8s" ] && printf " \033[32mOK\033[0m %-14s %s\n" "K8s cluster" "$k8s" \
|| printf " \033[31mFAIL\033[0m %-14s %s\n" "K8s cluster" "Not accessible (VPN connected?)"

nexus=$(npm view @samo/mcp-server version --registry=https://nexus/repository/samo-npm/ 2>/dev/null)
[ -n "$nexus" ] && printf " \033[32mOK\033[0m %-14s %s\n" "Nexus npm" "@samo/mcp-server@$nexus" \
|| printf " \033[31mFAIL\033[0m %-14s %s\n" "Nexus npm" "Cannot reach (auth or VPN issue)"

helmOci=$(helm show chart oci://docker.asseco-ce.com/samo/infrastructure/samo-rdt-helm-chart/charts/samo-rdt --version 0.1.0 2>/dev/null)
[ -n "$helmOci" ] && printf " \033[32mOK\033[0m %-14s %s\n" "Helm OCI" "reachable" \
|| printf " \033[31mFAIL\033[0m %-14s %s\n" "Helm OCI" "Cannot pull (run: helm registry login docker.asseco-ce.com)"

echo ""
echo "You need at least ONE of: Claude Code or Codex CLI"
echo "All 'FAIL' and 'MISS' items must be resolved before the workshop."
EOF

Troubleshooting

  • kubectl cluster-info fails — Connect to VPN, then follow the cluster access guide
  • kubectl get namespaces — permission denied — RBAC permissions missing, contact the organizer
  • npm config get @samo:registry — empty — Follow the npm setup in Section 4 above
  • npm view @samo/mcp-server — 401 Unauthorized — Token expired, re-run npm login --registry=https://nexus/repository/samo-npm/
  • npm config set @samo:registry errors — Newer npm versions reject this command, edit .npmrc directly
  • helm registry login fails — Set up 2FA on docker.asseco-ce.com, then use username + Personal Access Token (not password)
  • Git clone fails with SSL error — Run git config --global http.sslBackend schannel (Windows only)
  • claude --version or codex --version not found — See install commands in Section 1

Need Help?

If anything fails, message me or email simon.misak@asseco-ce.com — please reach out at least 2 days before the workshop so we have time to troubleshoot.