A Jenkins plugin used on https://scala-ci.typesafe.com to start and stop EC2 instances on demand.
Differs from the ec2-plugin, which creates and deletes instances based on AMIs.
After updating all (other) Jenkins plugins (Jan 23, 2023), this plugin stopped working, the Jenkins node log showed "Socket not created by this factory".
A google search brought me to this StackOverflow, suggesting to try updating dependencies. After attempting to update individual dependencies first, I finally updated everything, which luckily worked.
To build the plugin
- Switch to Java 11
- Allow external HTTP repos in maven by creating a file
~/.m2/settings.xml
with the following content:<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd"> <mirrors> <mirror> <id>maven-default-http-blocker</id> <mirrorOf>dummy</mirrorOf> <name>Dummy mirror to override default blocking mirror that blocks http</name> <url>http://0.0.0.0/</url> </mirror> </mirrors> </settings>
- Build the plugin by running
mvn install -Dspotbugs.skip=true
- Upload the
target/ec2-start-stop.hpi
file to a GitHub release - Copy the
hpi
file URL and use it in https://scala-ci.typesafe.com/manage/pluginManager/advanced to install ("deploy") the new version, restart Jenkins
- Not sure where credentials are picked up.
- Didn't figure out how to enable verbose logging for the AWS client library - that would be useful when things don't work.