The release Dockerfile's shipped binaries and symlinks were already hanzocd-*, but the build stages feeding them weren't: stage names (argocd-base/-ui/-build), the in-container build user/group/home (argocd, uid 999 — renamed in place, same uid so no ownership fallout), and the GOPATH-style build WORKDIR (.../argoproj/argo-cd) all still carried the pre-fork name. Same in Dockerfile.dev, hack/Dockerfile.dev-tools, and ui/scripts/build_docker.sh. The Makefile and both Procfiles (root + test/container) had the matching half of this: CD_BINARY_NAME values that don't match any case in cmd/main.go's dispatch switch (all hanzocd-*), a --argocd-repo-server flag no command registers (the real one is --cd-repo-server), a `kubectl get secret argocd-redis` that can never succeed (the Secret the redis manifest actually mounts is hanzocd-redis), `kubectl create ns argocd`/argocd-e2e(-external(-2)) that don't match the namespaces test/e2e/fixture actually uses (cd/cd-e2e/cd-e2e-external(-2)), a TEST_MODULE filter matching the pre-fork gitops-engine import path only, and IMAGE_REGISTRY/IMAGE_NAMESPACE/IMAGE_REPOSITORY defaults that silently point an override-less `make image` at quay.io/argoproj/argocd instead of ghcr.io/hanzoai/cd. Also folded three different stale /tmp scratch-dir spellings (argocd-local, argocd-e2e-env, argo-e2e) into the one each already-correct sibling file used, so Procfile/Makefile/reaper.sh/ start-git.sh/fixture.go/nginx.conf all agree again — see LLM.md for the full map, it's not worth re-deriving twice. Deleted hack/bump-major-version.sh: it bumps a github.com/.../vN import-path suffix, a scheme this module has never used (no /v2, /v3 — we don't bump Go majors) and nothing else in the repo references it.
3.5 KiB
Test Repository Server Files
This directory contains configuration and cryptographic keys for running the E2E test Git server in a Docker container. The server provides Git repositories accessible via SSH, HTTP, and HTTPS.
Overview
The test server runs in Docker (argoproj/argo-cd-ci-builder:v1.0.0) using goreman to manage three processes: sshd (port 2222), nginx (ports 9080, 9443-9445), and fcgiwrap (Git HTTP backend).
Files
start-git.sh
Starts the Docker container with the test Git server. Mounts the current directory and CD_E2E_DIR (default: /tmp/cd-e2e), exposing ports for SSH and HTTP/HTTPS access.
start-helm-registry.sh / start-authenticated-helm-registry.sh
Start Helm registries for testing Helm chart functionality, with and without authentication.
Procfile
Defines processes managed by goreman:
- sshd: Copies fixed SSH host keys to
/etc/ssh/before starting on port 2222 - fcgiwrap: FastCGI wrapper for Git HTTP backend
- nginx: Web server for HTTP/HTTPS Git access
SSH Keys
SSH Host Keys
ssh_host_rsa_key,ssh_host_ecdsa_key,ssh_host_ed25519_key(with.pubfiles)
By copying pre-generated keys before starting sshd, the same keys are used every time, keeping the ssh_known_hosts the same on restarts.
ssh_known_hosts
Contains SSH host key fingerprints for:
[localhost]:2222- Local development/testing[cd-e2e-server]:2222- Remote/in-cluster testing
Both entries have identical fingerprints since they use the same keys from this directory.
id_rsa.pub
Public key added to ~/.ssh/authorized_keys in the container for SSH authentication.
nginx.conf
Provides HTTP (9080), HTTPS (9443/9444/9445), and Helm repository access. Proxies Git operations to git-http-backend via fcgiwrap.
sudoers.conf
Sudo configuration allowing test users to start services with elevated privileges.
Regenerating SSH Keys
If you need to regenerate the SSH host keys:
1. Generate New Keys
cd test/fixture/testrepos
# Generate RSA key
ssh-keygen -t rsa -b 2048 -f ssh_host_rsa_key -N "" -C "root@cd-e2e"
# Generate ECDSA key
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N "" -C "root@cd-e2e"
# Generate Ed25519 key
ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N "" -C "root@cd-e2e"
2. Update ssh_known_hosts
# Start temporary sshd with new keys
sudo mkdir -p /tmp/test-sshd
sudo cp ssh_host_*_key* /tmp/test-sshd/
sudo chmod 600 /tmp/test-sshd/ssh_host_*_key
sudo /usr/sbin/sshd -p 2222 \
-h /tmp/test-sshd/ssh_host_rsa_key \
-h /tmp/test-sshd/ssh_host_ecdsa_key \
-h /tmp/test-sshd/ssh_host_ed25519_key \
-D &
SSHD_PID=$!
# Scan to get new fingerprints
ssh-keyscan -p 2222 localhost > ssh_known_hosts.tmp
# Stop temporary sshd
sudo kill $SSHD_PID
sudo rm -rf /tmp/test-sshd
# Create new ssh_known_hosts with both localhost and cd-e2e-server entries
cat > ssh_known_hosts << 'EOF'
# localhost:2222 SSH-2.0-OpenSSH_X.Xp1
EOF
cat ssh_known_hosts.tmp >> ssh_known_hosts
echo "# For in-cluster tests" >> ssh_known_hosts
sed 's/\[localhost\]/[cd-e2e-server]/g' ssh_known_hosts.tmp >> ssh_known_hosts
rm ssh_known_hosts.tmp
3. Verify
# Start the test server
./test/fixture/testrepos/start-git.sh
# In another terminal, test SSH connection
ssh -p 2222 -o UserKnownHostsFile=test/fixture/testrepos/ssh_known_hosts root@localhost
Related Documentation
- TLS Certificates - HTTPS certificates (separate from SSH keys)
- Remote Testing - Running tests against remote clusters