From cc2386f0e7e7de07115db52529e1e29bd1f74e13 Mon Sep 17 00:00:00 2001 From: Jan Kanis Date: Thu, 1 Jun 2017 17:07:54 +0200 Subject: [PATCH] Add Travis debugging instructions In case someone else wants to debug Travis builds --- travis_debug/README.rst | 25 +++++++++++++++++++++++++ travis_debug/id_rsa_test | 27 +++++++++++++++++++++++++++ travis_debug/id_rsa_test.pub | 1 + travis_debug/shellserver.sh | 15 +++++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 travis_debug/README.rst create mode 100644 travis_debug/id_rsa_test create mode 100644 travis_debug/id_rsa_test.pub create mode 100755 travis_debug/shellserver.sh diff --git a/travis_debug/README.rst b/travis_debug/README.rst new file mode 100644 index 0000000000..1f9b32a6e2 --- /dev/null +++ b/travis_debug/README.rst @@ -0,0 +1,25 @@ +Debugging Travis +================ + +Debugging Travis tests is not very straightforward. They run your tests in their own environment, but as far as I know they don't make an image of that environment available for local debugging. These tools you to set up a connection with the test environment when the tests run, and debug the tests. + +The script consists of two steps: first it creates an SSH connection to your machine, then it forwards a port from your machine to the test VM. The second step is to have a bash shell listening on that port in the test VM, giving you shell access to the live test environment. This uses the `socat` command which is installed by default on Travis. (If not install it with apt.) + +To debug Travis: +Setup: +- Add the public key in this directory to your ~/.ssh/authorized_keys, or better yet, create a new user and add the key to its authorized_keys. NB: as the private key of this is publicly visible on Github, anyone can now connect to your account. +- Make sure there is a port to your machine (or whatever machine you want to use to receive the connection) visible from the internet +- Adjust the parameters in travis_debug/shellserver.sh to reflect the address and port that Travis should connect to, and optionally the ports that are forwarded +- Adjust .travis.yml to include a `sh -c travis_debug/shellserver.sh` command so that it will run the shellserver. +- Push the commit to github and let Travis build the tests + +Debug: +- Wait for travis to connect to your machine +- The SSH connection will forward a port (by default 34567) to the Travis test machine +- execute `nc localhost 34567` on your local machine. This will connect to Travis and show a bash prompt +- Debug +- Exit the connection for Travis to continue with the rest of the tests + +To debug the JVM process, adjust the shellserver.sh to background itself and adjust the Grails test run to include a `--debug-jvm` flag. By default the debugging port 5005 is also forwarded, so you can connect to it from your debugger. + +Important! When you are done, remove the public key from your authorized_keys file, otherwise anyone on the internet who finds the test key on Github will be able to log in to your machine! diff --git a/travis_debug/id_rsa_test b/travis_debug/id_rsa_test new file mode 100644 index 0000000000..f7ca339933 --- /dev/null +++ b/travis_debug/id_rsa_test @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA4ivqzSoH1Hr80GTYjYaPqweV75bMt2TuXwFdAjJFKwhBmzyf +czm8Lq94+FzKCGN4vDGZNiMISu5KBzjWIEV8JfPlKUJwPbKMkCkA05I3uxCTUU/p +AtpBEbhct1xJ5lxPVT94Cz79bueGemjhx/+w5FzbF5M3gmKSsAKWSknxnBLCzR7/ +x+8d1P3eOFMGMfWH7kNQdIK0/rz+XcCeJiZKoulsgjfxr7kSJK7HVd957nc+Mlwq +5x+VWg3+ZQBPExSFR3QwFV3cOmWR0U+fIID2/7PpJxpWfZh0gW+Unn+p71bxCsjy +BqKRxl1qpPuAOSL4PM/yzTc1WkWyhTWq7oEKsQIDAQABAoIBAGUxFQraRUqSBE8Q +77rSe7Ef4buiktFy/RvQtlZnO383YHMeOpEJQeL5a3xjt5jtOHWrE0uffPRZjRGS +Imup6xPn/Z3qNeHE4xMU5WPDxd+SWPdGc5BtKjPNct4vEnlYz73qecE+W5GlUQuv +pWUgR3rE+NmhanKRu+O4JJn0X39eJhr7oZtJA5V7FsaW52Zlt8x4scY8MOaohw2G +vhWqy/AqF4iYMOr0pexXG2yjAso1CetkWo2Yt5sLSZMrhCZKGgEOkCISYgIc11Oz +ZzgjlcozwCnFK3d1QtmOIeNATooPsw4Cb5y+InYheLIBzK1ltUZ/VtJJK2Q9RolY +czBWgGECgYEA9sStjs/Qnfdo9R/qRuTKfrT9U89uwqVarnR7Qfdsac1cna/paP8a +HhShPP9JoUO8126UiVb3kQrOz4afEzwmOZ3u3KNZCdsSrqii4XDrmdVMADc6OMnw +KLll1dp/tHy8cDjXYzLsCzttXFGre7npdW1I0ZTj+KcxUKY7FKVHUzUCgYEA6qH7 +iZleZnR+ZpMzJCWA9hoZxdNitGOal6jA1RA/mavISKAgG88K0lGg5fW5R8MxYa4F +SZN69wYKkRoWgV9EM9oyq9irVPp+r2YdW7bteWcEny9IgZwc/LWki11uNhGWJUXo +kZNaVj4S3dcJRqFA2zcjRksqfDqXQ+/a9cHrrQ0CgYBZD7DoGx7a9GFgHs2qGobu +5hmL9xCtlYo97nJR45+wK9siWkvuhiuB8cYjwqtrVYxBYHqhes7M/U6Y3ahqA8pz +/wknfpjzEqsSeHCY1u1hTvcoGMadmlxgBlG3ti1jEaXdBtbNyaIhh6g3qo4ukHGu +3OtsIMWKh6Uny2cFU4WDhQKBgF7MiaPjupdss/Ffwgb1vDAzBXy/Vp8Jq1lhTmAH +i5rcJDTrtW1m7rlhT7/50x1iiR4tQGek1cbewwAzaSpmQlks7NIv3bGc7/iQKoZ2 +12X4sI5cfVAYskGMZmoEmtXvrxlqMHg48APuWpMVIeNOnbS0h2UMU6MTzTAexfoL +mtw1AoGAcH9UiqGtcXq4fw8maUEaG6RWakqE7MeMP8abqgx46CZBbpTxO92q2sQW +YyZvmcz9ywPM/ZqNAsjnnle65EiiknrA+tZw8IFv8lOTRPAVasIWYoW5o7RURf3G +Mf4CjVgKwiFzb8RLhP7Qi4CPWPbWRnoLsUIM+0Ft6DHxBSlBepk= +-----END RSA PRIVATE KEY----- diff --git a/travis_debug/id_rsa_test.pub b/travis_debug/id_rsa_test.pub new file mode 100644 index 0000000000..daafc20e76 --- /dev/null +++ b/travis_debug/id_rsa_test.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiK+rNKgfUevzQZNiNho+rB5Xvlsy3ZO5fAV0CMkUrCEGbPJ9zObwur3j4XMoIY3i8MZk2IwhK7koHONYgRXwl8+UpQnA9soyQKQDTkje7EJNRT+kC2kERuFy3XEnmXE9VP3gLPv1u54Z6aOHH/7DkXNsXkzeCYpKwApZKSfGcEsLNHv/H7x3U/d44UwYx9YfuQ1B0grT+vP5dwJ4mJkqi6WyCN/GvuRIkrsdV33nudz4yXCrnH5VaDf5lAE8TFIVHdDAVXdw6ZZHRT58ggPb/s+knGlZ9mHSBb5Sef6nvVvEKyPIGopHGXWqk+4A5Ivg8z/LNNzVaRbKFNarugQqx jan-test@jan-hyve diff --git a/travis_debug/shellserver.sh b/travis_debug/shellserver.sh new file mode 100755 index 0000000000..559bccfbda --- /dev/null +++ b/travis_debug/shellserver.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +LOCAL_USER=jan +LOCAL_ADDRESS=office.thehyve.net +LOCAL_PORT=34122 +FORWARD_PORT1=34567 +FORWARD_PORT2=5005 + +ls debug +chmod go-rwx travis_debug/id_rsa_test +ssh -N -o StrictHostKeyChecking=no -i ./travis_debug/id_rsa_test "$LOCAL_USER:$LOCAL_ADDRESS" -p $LOCAL_PORT -R $FORWARD_PORT1:localhost:$FORWARD_PORT1 -R $FORWARD_PORT2:localhost:$FORWARD_PORT2 & +SSH_PID=$! +socat TCP-LISTEN:$FORWARD_PORT1 EXEC:"bash -li",stderr +kill $SSH_PID +