84 lines
3.0 KiB
Bash
84 lines
3.0 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "🧪 Testing Multi-Architecture Alpine Docker Images"
|
||
|
|
echo "==================================================="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Color codes
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
BLUE='\033[0;34m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
RED='\033[0;31m'
|
||
|
|
NC='\033[0m' # No Color
|
||
|
|
|
||
|
|
FAILED_TESTS=0
|
||
|
|
|
||
|
|
# Test function
|
||
|
|
test_image() {
|
||
|
|
local tag=$1
|
||
|
|
local description=$2
|
||
|
|
local test_cmd=$3
|
||
|
|
|
||
|
|
echo -e "${BLUE}🧪 Testing: ${NC}${description}"
|
||
|
|
echo -e "${YELLOW} Tag: ${NC}${tag}"
|
||
|
|
|
||
|
|
if docker run --rm "${tag}" bash -c "${test_cmd}"; then
|
||
|
|
echo -e "${GREEN}✅ Pass${NC}"
|
||
|
|
echo ""
|
||
|
|
return 0
|
||
|
|
else
|
||
|
|
echo -e "${RED}❌ Fail${NC}"
|
||
|
|
echo ""
|
||
|
|
((FAILED_TESTS++))
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# Test Alpine Images (Native Platform)
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo -e "${BLUE}Testing Alpine Images (Native Platform)${NC}"
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo ""
|
||
|
|
echo -e "${YELLOW}💡 These images are built for your native architecture${NC}"
|
||
|
|
echo -e "${YELLOW} They will run at full native speed without emulation${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
test_image "ht-docker-node:alpine-node" \
|
||
|
|
"Alpine with Node.js LTS + NVM + pnpm" \
|
||
|
|
"nvm --version && node --version && pnpm --version"
|
||
|
|
|
||
|
|
test_image "ht-docker-node:alpine-deno" \
|
||
|
|
"Alpine with Node.js LTS + NVM + Deno" \
|
||
|
|
"nvm --version && node --version && deno --version"
|
||
|
|
|
||
|
|
test_image "ht-docker-node:alpine-bun" \
|
||
|
|
"Alpine with Node.js LTS + NVM + Bun" \
|
||
|
|
"nvm --version && node --version && bun --version"
|
||
|
|
|
||
|
|
# Test NVM version switching (critical feature)
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo -e "${BLUE}Testing NVM Version Switching${NC}"
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
test_image "ht-docker-node:alpine-node" \
|
||
|
|
"NVM version switching" \
|
||
|
|
"node --version && nvm install 18 && node --version | grep v18"
|
||
|
|
|
||
|
|
# Summary
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
if [ $FAILED_TESTS -eq 0 ]; then
|
||
|
|
echo -e "${GREEN}✨ All Tests Passed! (0 failures)${NC}"
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo ""
|
||
|
|
echo -e "${YELLOW}💡 In production, these same images will work natively on both amd64 and arm64${NC}"
|
||
|
|
echo ""
|
||
|
|
exit 0
|
||
|
|
else
|
||
|
|
echo -e "${RED}❌ Some Tests Failed (${FAILED_TESTS} failures)${NC}"
|
||
|
|
echo -e "${BLUE}════════════════════════════════════════${NC}"
|
||
|
|
echo ""
|
||
|
|
exit 1
|
||
|
|
fi
|