class Jenkins < Formula desc "Extendable open source continuous integration server" homepage "https://jenkins.io/" url "http://mirrors.jenkins.io/war/2.94/jenkins.war" sha256 "0024b23202e53cf08d265d9241cbc435646225c44169bc81b776a97da098f3e8" head do url "https://github.com/jenkinsci/jenkins.git" depends_on "maven" => :build end bottle :unneeded depends_on :java => "1.8+" def install if build.head? 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 Note: When using launchctl the port will be 8080. EOS end plist_options :manual => "jenkins" def plist; <<~EOS Label #{plist_name} ProgramArguments /usr/bin/java -Dmail.smtp.starttls.enable=true -jar #{opt_libexec}/jenkins.war --httpListenAddress=127.0.0.1 --httpPort=8080 RunAtLoad EOS end test do ENV["JENKINS_HOME"] = testpath ENV.prepend "_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