When running Jenkins as a docker container for test purposes, it is necessary to verify the Jenkins master is fully functional before running the first test cases.
The http interface can be tested with a call to the API such as
curl --silent http://jenkins.host/api/json
It will first fail with Connection reset by peer, then with 503 Server Error: Service Unavailable and return a JSON output after a few seconds.
The Jenkins CLI can be tested by sending the help command.
$ wget -O /tmp/jenkins-cli.jar http://jenkins.host/jnlpJars/jenkins-cli.jar $ java -jar /tmp/jenkins-cli.jar -s http://jenkins.host help
and it will use port 50000 to connect to the jenkins master. It will first fail with an error such as
SEVERE: I/O error in channel Chunked connection to http://jenkins.host/cli java.io.StreamCorruptedException: invalid stream header: 0A0A0A0A
meaning the connection to port 50000 failed (the error message is misleading).
It will eventually succeed with
add-job-to-view Adds jobs to view. build ...
If security is disabled (which is the default when running the container), a call to the CLI will succeed despite the following error message.
SEVERE: I/O error in channel CLI connection to http://jenkins.host java.io.IOException: Unexpected termination of the channel