Files
zeekay 0d4229f4af build, e2e: drop stale argo/argocd naming from dev and test tooling
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.
2026-09-05 14:58:35 -07:00

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 .pub files)

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