|
83 | 83 | - name: Verify |
84 | 84 | run: npm run verify:ci |
85 | 85 |
|
| 86 | + - name: Docker smoke test (API) |
| 87 | + run: | |
| 88 | + set -euo pipefail |
| 89 | +
|
| 90 | + cleanup() { |
| 91 | + docker rm -f api-ci >/dev/null 2>&1 || true |
| 92 | + } |
| 93 | + trap cleanup EXIT |
| 94 | + api_curl() { |
| 95 | + if ! curl -fsS "$@"; then |
| 96 | + echo "API smoke request failed: curl $*" |
| 97 | + docker logs api-ci || true |
| 98 | + exit 1 |
| 99 | + fi |
| 100 | + } |
| 101 | +
|
| 102 | + docker build -f apps/api/Dockerfile -t anywaydata-api-ci . |
| 103 | + docker run -d --rm --name api-ci -p 18082:3000 anywaydata-api-ci |
| 104 | +
|
| 105 | + ready=0 |
| 106 | + for i in {1..20}; do |
| 107 | + if curl -fsS http://127.0.0.1:18082/v1/health >/dev/null; then |
| 108 | + ready=1 |
| 109 | + break |
| 110 | + fi |
| 111 | + sleep 1 |
| 112 | + done |
| 113 | + if [ "$ready" -ne 1 ]; then |
| 114 | + docker logs api-ci || true |
| 115 | + echo "API container did not become ready within timeout" |
| 116 | + exit 1 |
| 117 | + fi |
| 118 | + api_curl http://127.0.0.1:18082/v1/health | grep -qi "ok" |
| 119 | + api_curl -X POST "http://127.0.0.1:18082/v1/generate" \ |
| 120 | + -H "content-type: application/json" \ |
| 121 | + -d '{"textSpec":"Name\nBob","rowCount":2,"outputFormat":"json"}' | grep -q '"format":"json"' |
| 122 | + echo "API docker smoke test passed" |
| 123 | +
|
| 124 | + - name: Docker smoke test (Web) |
| 125 | + run: | |
| 126 | + set -euo pipefail |
| 127 | +
|
| 128 | + cleanup() { |
| 129 | + docker rm -f web-ci >/dev/null 2>&1 || true |
| 130 | + } |
| 131 | + trap cleanup EXIT |
| 132 | +
|
| 133 | + docker build -f apps/web/Dockerfile -t anywaydata-web-ci . |
| 134 | + docker run -d --rm --name web-ci -p 18080:80 anywaydata-web-ci |
| 135 | +
|
| 136 | + for i in {1..20}; do |
| 137 | + if curl -fsS http://127.0.0.1:18080/app.html >/dev/null; then |
| 138 | + break |
| 139 | + fi |
| 140 | + sleep 1 |
| 141 | + done |
| 142 | + curl -fsS http://127.0.0.1:18080/app.html | grep -q "AnyWayData" |
| 143 | + curl -fsS http://127.0.0.1:18080/generator.html | grep -q "AnyWayData" |
| 144 | + echo "Web docker smoke test passed" |
| 145 | +
|
| 146 | + - name: Docker smoke test (AnyWayData full site) |
| 147 | + run: | |
| 148 | + set -euo pipefail |
| 149 | +
|
| 150 | + cleanup() { |
| 151 | + docker rm -f site-ci >/dev/null 2>&1 || true |
| 152 | + } |
| 153 | + trap cleanup EXIT |
| 154 | +
|
| 155 | + docker build -f apps/anywaydata/Dockerfile -t anywaydata-site-ci . |
| 156 | + docker run -d --rm --name site-ci -p 18081:8080 anywaydata-site-ci |
| 157 | +
|
| 158 | + for i in {1..20}; do |
| 159 | + if curl -fsS http://127.0.0.1:18081/ >/dev/null; then |
| 160 | + break |
| 161 | + fi |
| 162 | + sleep 1 |
| 163 | + done |
| 164 | + curl -fsS http://127.0.0.1:18081/ | grep -q "AnyWayData" |
| 165 | + curl -fsS http://127.0.0.1:18081/app.html | grep -q "AnyWayData" |
| 166 | + echo "AnyWayData full-site docker smoke test passed" |
| 167 | +
|
86 | 168 | - name: Upload coverage artifact |
87 | 169 | uses: actions/upload-artifact@v4 |
88 | 170 | with: |
|
0 commit comments