Our Jenkins master server runs on an EC2 instance and we stop it twice a day to switch between a small and medium instance to reduce our bills during off hours. Our build slaves are EC2 instances using the Jenkins EC2 plugin. To keep the builds fast we have it configured to only stop the slaves rather than terminate them.--We are finding that when the master machine stops and restarts when an EC2 slave is running, the EC2 instance stays running and the master slave is never able to re-establish a connection with it. It still has the instance ID correct. But, it is unable to connect. This requires manual intervention of terminating the old instances and starting new ones.Is there some way we can properly stop the EC2 instances using a Jenkins Groovy script before shutting down the Jenkins instance? Hopefully this way the EC2 plugin will correctly re-establish the connection on start-up. We have a Jenkins job which controls the timing of the shutdown process.
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
hudson.plugins.ec2.EC2OndemandSlave@f39f2278 hudson.plugins.ec2.EC2Computer@1532744 hudson.plugins.ec2.EC2OndemandSlave@d935070e hudson.plugins.ec2.EC2Computer@13bae09
void stop() {try {AmazonEC2 ec2 = getCloud().connect();StopInstancesRequest request = new StopInstancesRequest(Collections.singletonList(getInstanceId()));ec2.stopInstances(request);LOGGER.info("EC2 instance stopped: " + getInstanceId());toComputer().disconnect(null);} catch (AmazonClientException e) {Instance i = getInstance(getInstanceId(), getCloud());LOGGER.log(Level.WARNING, "Failed to terminate EC2 instance: "+getInstanceId() + " info: "+((i != null)?i:"") , e);}}