diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8e733d3..74a109d 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -57,6 +57,21 @@ jobs: WEB_ADDR=`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web_kiwitcms_org` sudo sh -c "echo '$WEB_ADDR web.kiwitcms.org' >> /etc/hosts" + - name: Wait for web server to be ready + run: | + for i in $(seq 1 30); do + if curl -sk -o /dev/null -w '%{http_code}' \ + https://web.kiwitcms.org:8443/accounts/login/ \ + | grep -q 200; then + echo "Web server is ready!" + exit 0 + fi + echo "Waiting for web server... ($i/30)" + sleep 2 + done + echo "Web server didn't become ready" + exit 1 + - name: Install & configure Kerberos client if: matrix.os == 'ubuntu-latest' && matrix.gssapi == 'with' run: | @@ -78,6 +93,22 @@ jobs: - name: Verify web login with Kerberos if: matrix.os == 'ubuntu-latest' && matrix.gssapi == 'with' run: | + echo "=== Container logs ===" + docker logs web_kiwitcms_org 2>&1 | tail -50 + + echo "=== Keytab check ===" + docker exec web_kiwitcms_org klist -k /Kiwi/application.keytab 2>&1 + + echo "=== krb5.conf from container ===" + docker exec web_kiwitcms_org cat /etc/krb5.conf 2>&1 + + echo "=== httpd error log ===" + docker exec web_kiwitcms_org cat /var/log/httpd/error_log 2>&1 | tail -20 || echo "No error log found" + + echo "=== Container status ===" + docker ps + docker inspect web_kiwitcms_org --format='{{.State.Health.Status}}' 2>&1 || echo "No health check" + make verify-web-login klist diff --git a/Makefile b/Makefile index c9179a2..38d0ce2 100644 --- a/Makefile +++ b/Makefile @@ -54,9 +54,9 @@ verify-curl-with-kerberos: .PHONY: verify-web-login verify-web-login: verify-curl-with-kerberos # grab the page - curl -k -L -o /tmp/curl.log --negotiate -u: \ + curl -k -v -L -o /tmp/curl.log -X POST --negotiate -u: \ -b /tmp/cookie.jar -c /tmp/cookie.jar \ - https://web.kiwitcms.org:8443/login/kerberos/ + https://web.kiwitcms.org:8443/login/kerberos/ 2>&1 | tee /tmp/curl-verbose.log # verify user has been logged in cat /tmp/curl.log | grep 'Kiwi TCMS - Dashboard' diff --git a/tests/krb5/Dockerfile.kiwitcms b/tests/krb5/Dockerfile.kiwitcms index 63d5f73..2218245 100644 --- a/tests/krb5/Dockerfile.kiwitcms +++ b/tests/krb5/Dockerfile.kiwitcms @@ -1,7 +1,7 @@ FROM kiwitcms/kiwi USER 0 -RUN dnf -y --nodocs install gcc krb5-devel python3.12-devel && \ +RUN dnf -y --nodocs install gcc krb5-devel krb5-workstation python3.12-devel && \ dnf clean all USER 1001