From b88af73e5718e260ee6041fb3480355afd07fa50 Mon Sep 17 00:00:00 2001 From: Juri Leino Date: Sat, 18 Nov 2023 16:40:42 +0100 Subject: [PATCH] ci(no-rest): optimize container ready check - Check for `docker ps` to report exist service to be healthy. - Move check to latest possible moment just before tests run. - Mount empty volume to autodeploy to speed up initial start of exist. --- .github/workflows/test-no-rest.yml | 31 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/workflows/test-no-rest.yml b/.github/workflows/test-no-rest.yml index c6a0c4c..b75173e 100644 --- a/.github/workflows/test-no-rest.yml +++ b/.github/workflows/test-no-rest.yml @@ -7,35 +7,32 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - # pull image - - run: docker pull existdb/existdb:release - # create docker container - # --volume $(pwd)/empty:/exist/autodeploy:ro + - name: pull image + run: docker pull existdb/existdb:release - name: create eXist-db Container - run: docker create --name exist --publish 8080:8080 --publish 8443:8443 existdb/existdb:release - # - name: Start eXist-db Container - # run: docker start exist - # - name: Wait for eXist-db Startup - # run: timeout 90 sh -c 'until nc -z $0 $1; do sleep 3; done' localhost 8080 - # get web.xml (use prepared web.xml instead) - # - run: docker cp exist:exist/etc/webapp/WEB-INF/web.xml ./web.xml - # modify web.xml - # - run: cat web.xml | \ + run: | + docker create --rm --name exist \ + --publish 8080:8080 --publish 8443:8443 \ + --volume ./empty:/exist/autodeploy:ro \ + existdb/existdb:release + # - name: get web.xml from container (needs to have started before) + # run: docker cp exist:exist/etc/webapp/WEB-INF/web.xml ./web.xml + # - name: modify web.xml + # run: cat web.xml | \ # tr '\n' '\r' | \ # sed -E 's/(hidden<\/param-name>\r[[:space:]]+)false(<\/param-value>)/\1true\2/' | \ # tr '\r' '\n' > modified-web.xml - name: Copy modified web.xml run: docker cp ./spec/fixtures/web-no-rest.xml exist:exist/etc/webapp/WEB-INF/web.xml - - name: Restart eXist-db Container - # run: docker stop exist && docker wait; docker start exist + - name: Start eXist-db Container run: docker start exist - - name: Wait for eXist-db Startup - run: timeout 90 sh -c 'until nc -z $0 $1; do sleep 3; done' localhost 8080 - name: Use Node.js 20 uses: actions/setup-node@v3 with: node-version: 20 - run: npm ci --no-optional - run: npm link + - name: Wait for container to be healthy + run: timeout 60s sh -c 'until docker ps | grep exist | grep -q healthy; do echo "Not ready yet."; sleep 2; done; echo "$(docker ps | grep exist)"' - run: npm run test:norest