class Jenkins < Formula desc "Extendable open source continuous integration server" homepage "https://jenkins-ci.org" url "http://mirrors.jenkins-ci.org/war/2.34/jenkins.war" sha256 "8fa1963e0e6f37470d623f0db83d105f34452aa655bc3954cfa1e956d51d35ea" head do url "https://github.com/jenkinsci/jenkins.git" depends_on "maven" => :build end bottle :unneeded depends_on :java => "1.7+" def install if build.head? ENV.java_cache system "mvn", "clean", "install", "-pl", "war", "-am", "-DskipTests" else system "jar", "xvf", "jenkins.war" end libexec.install Dir["**/jenkins.war", "**/jenkins-cli.jar"] bin.write_jar_script libexec/"jenkins.war", "jenkins" bin.write_jar_script libexec/"jenkins-cli.jar", "jenkins-cli" end def caveats; <<-EOS.undent Note: When using launchctl the port will be 8080. EOS end plist_options :manual => "jenkins" def plist; <<-EOS.undent <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>#{plist_name}</string> <key>ProgramArguments</key> <array> <string>/usr/bin/java</string> <string>-Dmail.smtp.starttls.enable=true</string> <string>-jar</string> <string>#{opt_libexec}/jenkins.war</string> <string>--httpListenAddress=127.0.0.1</string> <string>--httpPort=8080</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> EOS end test do ENV["JENKINS_HOME"] = testpath ENV["_JAVA_OPTIONS"] = "-Djava.io.tmpdir=#{testpath}" pid = fork do exec "#{bin}/jenkins" end sleep 60 begin assert_match /Welcome to Jenkins!|Unlock Jenkins|Authentication required/, shell_output("curl localhost:8080/") ensure Process.kill("SIGINT", pid) Process.wait(pid) end end end