-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix image tests: vncserver, websockify, jupyter-remote-desktop-proxy #101
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
467d024
to
a011cd1
Compare
d7d988f
to
4ebde56
Compare
6e89f4c
to
2c5c6df
Compare
780d98e
to
0bd6429
Compare
7865c22
to
7426daf
Compare
defaults: | ||
run: | ||
# Both TigerVNC and TurboVNC reports "the input device is not a TTY" if | ||
# started without a TTY. GitHub Actions environments doesn't come with one, | ||
# so this provides one. | ||
# | ||
# ref: https://github.com/actions/runner/issues/241#issuecomment-842566950 | ||
# | ||
shell: script --quiet --return --log-out /dev/null --command "bash -e {0}" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yuvipanda I think this may be what you need to get things working locally for you work also in github actions - it made the a difference to me.
I think also there are ipv4 / ipv6 differences, and I now know there were TigerVNC and TurboVNC differences with regards to listening on localhost or not by default, and that websockify will make things listen to localhost anyhow by intercepting the port bind system call or something like that - its messy!
Anyhow, with this, I got it working fully finally.
3fdcb7c
to
47a79ff
Compare
@yuvipanda I'll go for a merge here to trigger a rebuild with jupyterhub 4.1.4 instead of current 4.1.3 i the published images in the main branch, and then see if I can get it to function with the current xsrf complexities when booted with |
This is work done in parallell to #93, initially thought to be a quick fix to ensure TurboVNC also works. Like @yuvipanda in #93 I ran into issues with different behavior locally and within the GitHub actions environment, but think the biggest difference got resolved by providing a TTY device.
@yuvipanda I propose #93 is completed in a dedicated job inside the test.yaml workflow, side by side to the image-test job finalized in this PR - and then finally in an optional dedicated PR we prune misc bash things I've done in favor of python things you've done.
I consider this to fix #98, which was bugfixed by #99 but not tested by automation to make it work as it is now to some extent at least.
Summary of misc changes
websockify --help
andvncserver --help
checks--fail
flag to curl calls (detected by @yuvipanda in Add an integration test for VNC + websockify #93)vncserver
being startedA blob of old notes, I've worked a lot of hours 😱
Debugging the same issue Yuvi ran into I think:
I've debugged this at length with minor progress.
First attempt failure
I've concluded that the initial websocket connection attempt often fails to get sensible responses etc, and I think this relates to jupyter-server-proxy finalizes a websocket handshake even if the handshake to the backend isn't finalized (jupyterhub/jupyter-server-proxy#459). But this shouldn't cause issues for the second attempt that typically works locally.
Future attempt failures
The difference I observe locally and remote, comes down to this, where the green parts represent local and red parts represents failing remote test runs in github actions.
(ignore timestamps, this is a composed set of log lines)
websocat output
jupyter_server logs
websockify logs
vncserver logs