|
60 | 60 | runs-on: ubuntu-latest |
61 | 61 | timeout-minutes: 30 |
62 | 62 | needs: [unit-tests, go-client-check] |
63 | | - |
64 | | - services: |
65 | | - nacos: |
66 | | - image: nacos/nacos-server:v2.3.1-slim |
67 | | - env: |
68 | | - MODE: standalone |
69 | | - NACOS_AUTH_ENABLE: "false" |
70 | | - JVM_XMS: 256m |
71 | | - JVM_XMX: 256m |
72 | | - JVM_XMN: 128m |
73 | | - ports: |
74 | | - - 8848:8848 |
75 | | - - 9848:9848 |
76 | 63 | steps: |
77 | 64 | - uses: actions/checkout@v4 |
78 | 65 |
|
@@ -105,23 +92,63 @@ jobs: |
105 | 92 | set -euo pipefail |
106 | 93 | mvn -B -ntp -DskipTests clean package |
107 | 94 |
|
| 95 | + - name: Start Nacos Container |
| 96 | + run: | |
| 97 | + set -euo pipefail |
| 98 | + docker rm -f nacos-server >/dev/null 2>&1 || true |
| 99 | + docker run -d \ |
| 100 | + --name nacos-server \ |
| 101 | + -e MODE=standalone \ |
| 102 | + -e AUTH_ENABLE=false \ |
| 103 | + -e NACOS_AUTH_ENABLE=false \ |
| 104 | + -p 8848:8848 \ |
| 105 | + -p 9848:9848 \ |
| 106 | + nacos/nacos-server:v2.3.1-slim |
| 107 | + docker ps --filter "name=nacos-server" |
| 108 | +
|
108 | 109 | - name: Wait For Nacos Ports |
109 | 110 | run: | |
110 | 111 | set -euo pipefail |
111 | | - echo "Waiting for Nacos HTTP port on 8848..." |
112 | | - timeout 180s bash -c 'until echo > /dev/tcp/localhost/8848; do sleep 1; done' |
113 | | - echo "Waiting for Nacos gRPC port on 9848..." |
114 | | - timeout 180s bash -c 'until echo > /dev/tcp/localhost/9848; do sleep 1; done' |
115 | | - sleep 8 |
116 | | - echo "Nacos 8848/9848 are both reachable." |
| 112 | + NACOS_ID="$(docker ps -aqf 'name=^nacos-server$')" |
| 113 | + if [[ -z "${NACOS_ID}" ]]; then |
| 114 | + echo "Nacos container not found." |
| 115 | + docker ps -a |
| 116 | + exit 1 |
| 117 | + fi |
| 118 | + echo "Nacos service container id: ${NACOS_ID}" |
| 119 | +
|
| 120 | + for i in {1..90}; do |
| 121 | + STATUS=$(docker inspect -f '{{.State.Status}}' "${NACOS_ID}") |
| 122 | + HEALTH=$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}' "${NACOS_ID}") |
| 123 | + echo "[${i}/90] nacos status=${STATUS}, health=${HEALTH}" |
| 124 | +
|
| 125 | + if [[ "${STATUS}" != "running" ]]; then |
| 126 | + echo "Nacos container is not running. Dumping logs..." |
| 127 | + docker logs "${NACOS_ID}" | tail -n 300 || true |
| 128 | + exit 1 |
| 129 | + fi |
| 130 | +
|
| 131 | + if bash -c 'echo > /dev/tcp/localhost/8848' 2>/dev/null \ |
| 132 | + && bash -c 'echo > /dev/tcp/localhost/9848' 2>/dev/null; then |
| 133 | + echo "Nacos ports 8848/9848 are reachable." |
| 134 | + sleep 8 |
| 135 | + exit 0 |
| 136 | + fi |
| 137 | +
|
| 138 | + sleep 2 |
| 139 | + done |
| 140 | +
|
| 141 | + echo "Timed out waiting for Nacos ports 8848/9848." |
| 142 | + docker logs "${NACOS_ID}" | tail -n 300 || true |
| 143 | + exit 1 |
117 | 144 |
|
118 | 145 | - name: Dump Nacos Service Logs (On Failure) |
119 | 146 | if: failure() |
120 | 147 | run: | |
121 | 148 | set +e |
122 | | - echo "Nacos service container id: ${{ job.services.nacos.id }}" |
| 149 | + echo "Nacos service container id: $(docker ps -aqf 'name=^nacos-server$')" |
123 | 150 | docker ps -a |
124 | | - docker logs "${{ job.services.nacos.id }}" | tail -n 300 |
| 151 | + docker logs nacos-server | tail -n 300 |
125 | 152 |
|
126 | 153 | - name: Start RPC Provider (Java Server) |
127 | 154 | run: | |
|
0 commit comments