Skip to content

Instantly share code, notes, and snippets.

@cmilfont
Last active March 22, 2021 21:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmilfont/dd7a983b6d5f049e0a72cc6c03820af8 to your computer and use it in GitHub Desktop.
Save cmilfont/dd7a983b6d5f049e0a72cc6c03820af8 to your computer and use it in GitHub Desktop.
CI do Diário Oficial do CE que foi feito no final de 2004 e concluído em 2006, até hoje no ar com a mesma versão aparentemente http://pesquisa.doe.seplag.ce.gov.br/doepesquisa/sead.do?page=ultimasEdicoes&cmd=11&action=Ultimas

Características

Esse projeto era deployado num Oracle Server OC4J, os fontes no CVS do governo do estado do CE, a busca textual foi feita com Oracle Text.

Levamos quase 2 anos pra fazer um sistema que hoje seria concluído no máximo em 1 mês, pra ter uma idéia como quando cheguei aqui era tudo mato :D

A briga da época era se a modinha SVN ia pegar.

Por limitações da licitação desse projeto, não pudemos usar Hibernate e Spring que eram as modinhas que estavam dominando o mercado.

O CI era bem maduro, validava com checkstyle, findbugs, javancss, jdepend, jmeter, junit e pmd. Usávamos o Hudson que foi o antecessor do Jenkins e pra minha surpresa descobri agora que ainda existe :p

<?xml version="1.0" encoding="UTF-8"?>
<project name="DOE" default="jmeter_run" basedir=".">
<echo message=" INICIALIZA O PROCESSO DE BUILD DO PROJETO DOE" />
<!-- PARAMETRIZAÇÕES -->
<property name="project" value="C:/INTEGRACAO_CONTINUA/ESCOLHIDAS/projetos" />
<property name="site" value="C:/Apache/Apache2/htdocs/XPWeb/reports" />
<property name="cvs.root" value=":pserver:milfont@tomcat-nuadd:/home/cvs/java" />
<property name="cvs.tag" value="doe_2_0" />
<property name="cvs.pass" value="cvspass.txt" />
<property name="nome" value="doe" />
<property name="projeto" value="doe/projeto/doe" />
<!-- CONFIGURAÇÕES FIXAS -->
<property name="src" value="src" />
<property name="build" value="build" />
<property name="dist" value="dist" />
<property name="report" value="report" />
<property name="checkstyle" value="report/checkstyle" />
<property name="junit" value="report/junit" />
<property name="javancss" value="report/javancss" />
<property name="jdepend" value="report/jdepend" />
<property name="findbugs" value="report/findbugs" />
<property name="jmeter" value="report/jmeter" />
<property name="pmd" value="report/pmd" />
<property name="lib" value="lib" />
<property name="lib_web" value="lib_web" />
<property name="xsl" value="xsl" />
<property name="jmeter.home" value="lib_web/jmeter" />
<!-- 1 - LIMPA AMBIENTE E CRIA CLASSPATH DO PROJETO -->
<target name="init">
<echo message="1 - LIMPA AMBIENTE E CRIA CLASSPATH DO PROJETO" />
<delete dir="${src}" />
<delete dir="${build}" />
<delete dir="${dist}" />
<delete dir="${report}" />
<delete dir="${lib}" />
<delete dir="${projeto}" />
<mkdir dir="${src}" />
<mkdir dir="${build}" />
<mkdir dir="${dist}" />
<mkdir dir="${report}" />
<mkdir dir="${junit}" />
<mkdir dir="${checkstyle}" />
<mkdir dir="${javancss}" />
<mkdir dir="${jdepend}" />
<mkdir dir="${jmeter}" />
<mkdir dir="${findbugs}" />
<mkdir dir="${pmd}" />
<mkdir dir="${lib}" />
</target>
<path id="lib.classpath">
<fileset dir="${lib}">
<include name="*.jar" />
</fileset>
<fileset dir="${lib_web}">
<include name="*.jar" />
</fileset>
</path>
<!-- 2 - ACESSA CVS E REALIZA CHECKOUT DO PROJETO -->
<target name="cvs" depends="init">
<echo message="2 - ACESSA CVS E REALIZA CHECKOUT DO PROJETO" />
<cvs cvsRoot="${cvs.root}" tag="${cvs.tag}" dest="${project}" package="${projeto}" passfile="${cvs.pass}" />
<copy todir="${src}">
<fileset dir="${projeto}/src" />
</copy>
<copy todir="${lib}">
<fileset dir="${projeto}/WebRoot/WEB-INF/lib" />
</copy>
</target>
<!-- 3 - COMPILA APLICAÇÃO -->
<target name="compile" depends="cvs">
<echo message="3 - COMPILA APLICAÇÃO" />
<javac srcdir="${src}" destdir="${build}" classpathref="lib.classpath" />
</target>
<!-- 4 - CRIA ARQUIVO JAR DA APLICAÇÃO -->
<target name="dist" depends="compile">
<echo message="4 - CRIA ARQUIVO JAR DA APLICAÇÃO" />
<!-- jar dos pacotes -->
<jar jarfile="${dist}/${nome}.jar" basedir="${build}" />
</target>
<!-- 5 - REALIZA TESTES DE ACEITAÇÃO E GERA RELATORIO -->
<target name="junit" depends="dist" description="Execute Unit Tests">
<echo message="5 - REALIZA TESTES DE ACEITAÇÃO E GERA RELATORIO" />
<junit>
<classpath>
<pathelement path="${lib_web}" />
<pathelement path="${lib}" />
<pathelement path="${build}" />
<fileset dir="lib" />
</classpath>
<formatter type="xml" />
<batchtest todir="${junit}">
<fileset dir="${build}">
<include name="*/**/AllTests.class" />
</fileset>
</batchtest>
</junit>
<junitreport todir="${junit}">
<fileset dir="${junit}">
<include name="TEST-*.xml" />
</fileset>
<report format="noframes" styledir="${xsl}" todir="${junit}" />
</junitreport>
</target>
<!--
- realizar testes PMD, javaNCSS, CheckStyle, FindBugs e JDepends e gerar relatorios
-->
<!-- - CheckStyle -->
<taskdef resource="checkstyletask.properties" classpath="${lib_web}/checkstyle-all-4.1.jar" />
<target name="checkstyle" depends="junit">
<checkstyle config="${xsl}/sun_checks.xml" failOnViolation="false">
<formatter type="xml" tofile="${checkstyle}/report.xml" />
<fileset dir="${src}/com/fabricainfo" includes="**/*.java" />
</checkstyle>
<style in="${checkstyle}/report.xml" out="${checkstyle}/report.html" style="${xsl}/checkstyle-noframes.xsl" />
</target>
<taskdef name="javancss" classname="javancss.JavancssAntTask" classpath="${lib_web}/javancss.jar" />
<!-- - JavaNCSS -->
<target name="javancss" depends="checkstyle">
<javancss srcdir="${src}/com/fabricainfo/" generateReport="true" outputfile="${javancss}/report.xml" format="xml" />
<style basedir="${javancss}" destdir="${javancss}" extension=".html" style="${xsl}/javancss2html.xsl" />
</target>
<!-- - JDepends -->
<target name="jdepend" depends="javancss">
<jdepend outputfile="${jdepend}/report.xml" format="xml">
<classespath>
<pathelement location="${build}" />
</classespath>
<classpath location="${build}" />
</jdepend>
<style basedir="${jdepend}" destdir="${jdepend}" includes="report.xml" style="${xsl}/jdepend.xsl" />
</target>
<!-- - FindBugs -->
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<target name="findbugs" depends="jdepend">
<findbugs home="${lib_web}/findbugs" reportLevel="low" quietErrors="true" output="xml" outputFile="${findbugs}/findbugs.xml">
<sourcePath path="${src}/com/fabricainfo/" />
<class location="${dist}/${nome}.jar" />
</findbugs>
<!--
<xslt
in="${findbugs}/findbugs.xml"
out="${findbugs}/default.html"
style="${lib_web}/findbugs/src/xsl/default.xsl">
</xslt>
<xslt
in="${findbugs}/findbugs.xml"
out="${findbugs}/fancy.html"
style="${lib_web}/findbugs/src/xsl/fancy.xsl">
</xslt>
<xslt
in="${findbugs}/findbugs.xml"
out="${findbugs}/plain.html"
style="${lib_web}/findbugs/src/xsl/plain.xsl">
</xslt>
<xslt
in="${findbugs}/findbugs.xml"
out="${findbugs}/summary.html"
style="${lib_web}/findbugs/src/xsl/summary.xsl">
</xslt>
-->
<xslt in="${findbugs}/findbugs.xml" out="${findbugs}/report.html" style="${lib_web}/findbugs/src/xsl/summary.xsl" />
</target>
<!-- - PMD -->
<target name="pmd" depends="findbugs">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" />
<pmd rulesetfiles="${xsl}/rulesets/favorites.xml" failonerror="false">
<formatter type="xml" toFile="${pmd}/pmd_basic.xml" />
<fileset dir="${src}/com/fabricainfo/">
<include name="**/*.java" />
</fileset>
</pmd>
<xslt in="${pmd}/pmd_basic.xml" style="${xsl}/wz-pmd-report.xslt" out="${pmd}/report.html" />
</target>
<!-- - gerar pacote war da aplicacao -->
<target name="warfile" depends="pmd" description="Build the web application archive">
<!-- copiar o pacote para aplicação -->
<copy todir="${projeto}/WebRoot/WEB-INF/lib">
<fileset dir="${dist}" />
</copy>
<war destfile="${dist}/${nome}.war" webxml="${projeto}/WebRoot/WEB-INF/web.xml">
<fileset dir="${projeto}/WebRoot">
<include name="**/*.*" />
<exclude name="WEB-INF/web.xml" />
</fileset>
</war>
</target>
<!-- deployment no servidor de desenvolvimento -->
<!--
Configure properties to access the Manager application
-->
<property name="url" value="http://localhost:8080/manager" />
<property name="username" value="admin" />
<property name="password" value="112233" />
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" />
<taskdef name="list" classname="org.apache.catalina.ant.ListTask" />
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" />
<taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" />
<taskdef name="roles" classname="org.apache.catalina.ant.RolesTask" />
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" />
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" />
<target name="undeploy" description="Remove web application" depends="warfile">
<undeploy url="${url}" username="${username}" password="${password}" path="/${nome}" />
</target>
<target name="deploy" description="Install web application" depends="undeploy">
<deploy url="${url}" username="${username}" password="${password}" path="/${nome}" war="${dist}/${nome}.war" />
</target>
<target name="reload" description="Reload web application" depends="deploy">
<reload url="${url}" username="${username}" password="${password}" path="/${nome}" />
</target>
<!-- testes com JMeter -->
<property name="test" value="TestPlan" />
<!-- Should report include response data for failures? -->
<property name="show-data" value="y" />
<condition property="funcMode">
<equals arg1="${show-data}" arg2="y" />
</condition>
<condition property="funcMode" value="false">
<not>
<equals arg1="${show-data}" arg2="y" />
</not>
</condition>
<taskdef name="jmeter" classpath="${jmeter.home}/extras/ant-jmeter.jar" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<target name="jmeter_run" depends="reload">
<echo>funcMode = ${funcMode}</echo>
<delete file="${jmeter}/${test}.html" />
<jmeter jmeterhome="${jmeter.home}" testplan="${jmeter.home}/${test}.jmx" resultlog="${jmeter}/${test}.jtl">
<!--
<jvmarg value="-Xincgc"/>
<jvmarg value="-Xmx128m"/>
<jvmarg value="-Dproperty=value"/>
-->
<!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.output_format" value="xml" />
<property name="jmeter.save.saveservice.assertion_results" value="all" />
<property name="file_format.testlog" value="2.0" />
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}" />
</jmeter>
<xslt force="true" in="${jmeter}/${test}.jtl" out="${jmeter}/report.html" style="${jmeter.home}/extras/jmeter-results-detail-report.xsl">
<param name="showData" expression="${show-data}" />
</xslt>
<echo message="Transportar documentação para o portal" />
<copy todir="${site}">
<fileset dir="${report}" />
</copy>
<echo message="PROCESSO DE BUILD COMPLETO" />
</target>
<!-- deployment no servidor de produção -->
<!--
****************************************************************************
*********************************************************************************
*********************************************************************************
<property environment="env"/>
<property file="ant-oracle.properties"/>
<property name="JAVA_HOME" value="C:\jdk1.5.0_06"/>
<property name="ORACLE_HOME" value="${oracle.home}"/>
<property name="J2EE_HOME" value="${ORACLE_HOME}\j2ee\home"/>
<path id="common.j2ee.class.path">
<pathelement location="."/>
<pathelement location="${ORACLE_HOME}/jdbc/lib/ojdbc14dms.jar"/>
<pathelement location="${J2EE_HOME}/oc4j.jar"/>
<pathelement location="${J2EE_HOME}/lib/ejb.jar"/>
<pathelement location="${J2EE_HOME}/lib/servlet.jar"/>
<pathelement location="${J2EE_HOME}/lib/jta.jar"/>
<pathelement location="${J2EE_HOME}/lib/jms.jar"/>
<pathelement location="${J2EE_HOME}/lib/javax88.jar"/>
<pathelement location="${J2EE_HOME}/lib/javax77.jar"/>
<pathelement location="${J2EE_HOME}/lib/jmxri.jar"/>
<pathelement location="${J2EE_HOME}/lib/jmx_remote_api.jar"/>
<pathelement location="./build"/>
</path>
<property name="common.j2ee.class.path" refid="common.j2ee.class.path"/>
<path id="common.webservices.class.path">
<pathelement location="${J2EE_HOME}/lib/jax-qname-namespace.jar"/>
<pathelement location="${J2EE_HOME}/lib/activation.jar"/>
<pathelement location="${J2EE_HOME}/lib/mail.jar"/>
<pathelement location="${J2EE_HOME}/lib/http_client.jar"/>
<pathelement location="${ORACLE_HOME}/lib/xmlparserv2.jar"/>
<pathelement location="${ORACLE_HOME}/jlib/ojpwss.jar"/>
<pathelement location="${ORACLE_HOME}/jlib/ojpxml.jar"/>
<pathelement location="${ORACLE_HOME}/jlib/ojpse.jar"/>
<pathelement location="${ORACLE_HOME}/jlib/ojpsaml.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/wsserver.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/wsclient.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/wssecurity.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/dom4j.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/commons-logging.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc-api.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/jaxrpc.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/saaj-api.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/orasaaj.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/xsdlib.jar"/>
</path>
<property name="common.webservices.class.path" refid="common.webservices.class.path"/>
<path id="common.tasks.class.path">
<pathelement location="${ORACLE_HOME}/j2ee/utilities/ant-oracle-classes.jar"/>
<pathelement location="${J2EE_HOME}/lib/javax88.jar"/>
<pathelement location="${J2EE_HOME}/admin_client.jar"/>
<pathelement location="${J2EE_HOME}/oc4jclient.jar"/>
<pathelement location="${ORACLE_HOME}/webservices/lib/wsa.jar"/>
<pathelement location="${J2EE_HOME}/lib/bcel.jar"/>
</path>
<property name="common.tasks.class.path" refid="common.tasks.class.path"/>
<target name="common">
<echo message="BuildName: ${ant.project.name}"/>
<echo message="BuildHome: ${basedir}"/>
<echo message="BuildFile: ${ant.file}"/>
<echo message="BuildJVM: ${ant.java.version}"/>
<echo message="ORACLE_HOME: ${ORACLE_HOME}"/>
<echo message="J2EE_HOME: ${J2EE_HOME}"/>
<echo message="JAVA_HOME: ${JAVA_HOME}"/>
</target>
<property name="app.name" value="doe"/>
<property name="web.name" value="doe"/>
<property name="oc4j.binding.module" value="doe"/>
<property name="oc4j.admin.port" value="23791"/>
<property name="oc4j.admin.user" value="oc4jadmin"/>
<property name="oc4j.http.port" value="8888"/>
<property name="oc4j.admin.password" value="112233"/>
<property name="oc4j.host" value="localhost"/>
<taskdef resource="oracle/antlib.xml" uri="antlib:oracle" loaderRef="oracle.tasks.loader">
<classpath>
<pathelement path="${common.tasks.class.path}"/>
</classpath>
</taskdef>
<target name="bind-web-app" depends="common">
<oracle:bindWebApp host="${oc4j.host}" port="${oc4j.admin.port}"
userid="${oc4j.admin.user}"
password="${oc4j.admin.password}"
deploymentname="${app.name}" webmodule="${web.name}"
websitename="${oc4j.binding.module}"
contextroot="/${app.name}"
/>
</target>
-->
<!-- 9 - gerar release e disponibilizar no CVS -->
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment