Skip to content

Conversión de 2.0.8 a develop

Juan García edited this page Aug 30, 2019 · 3 revisions

En el Verano de 2019, se aborda el proyecto de migración de INSIDE desde la versión 2.0.7, con los objetivos:

  1. Migrar a la versión 2.0.8.3 de Inside (liberada en Agosto de 2018) por el CTT
  2. Migrar el almacenamiento desde Alfresco a CsvStorage
  3. Aplicar los parches desarrollados en la CARM sobre la 2.0.7 en la versión 2.0.8.3

Con el fin de registrar todos los cambios que se aplicarán sobre la versión 2.0.8.3 liberada, se creará una nueva rama develop a partir de la original_2.0.8. Las diferencias de partida, residirán en la preparación de los pom.xml de la nueva rama, para adecuarse al proceso de integración continua de la CARM, según se recoge en el protocolo de recepción de proyectos del estado.

Creación de la rama develop

La idea es a partir de la rama original_2.0.8, aplicar los cambios que necesita nuestro proceso de integración continua, y formateo del código.

  • Realizar el clone inicial, desde nuestro fork:
cd checkout
git clone https://github.com/carm-es/inside.git
cd inside

git status 
  • Por defecto estaremos situados en la rama master, con lo que nos cambiaremos a la original_2.0.8, y desde ella, crearemos una nueva rama llamada develop:
git checkout original-2.0.8
git checkout -b develop

  • Modificarán todos los pom.xml para cambiar la versión, y pasar de 2.0.8.3 a 2.0.8.3-CARM.1-SNAPSHOT.

  • Modificar el pom.xml de la raíz del proyecto, para añadir la configuración de scm y plugins para el parseo de fuentes, inspirándonos en el pom.xml de csvstorage.

  • Ampliar el pom.xml de la raíz del proyecto para evitar problema en Eclipse, tras añadir el plugin para el pre-commit hook de git al mismo, que provoca el error en el IDE: Plugin execution not covered by lifecycle configuration: io.github.phillipuniverse:githook-maven-plugin:1.0.4:install (execution: default, phase: initialize). Se soluciona añadiendo:

      ...
    <build>
      ...
      <pluginManagement>
        <plugins>
           <!-- This plugin's configuration is used to store Eclipse
                m2e settings only. It has no influence on the Maven build itself. -->
           <plugin>
             <groupId>org.eclipse.m2e</groupId>
             <artifactId>lifecycle-mapping</artifactId>
             <version>1.0.0</version>
             <configuration>
               <lifecycleMappingMetadata>
                 <pluginExecutions>
                   <pluginExecution>
    	             <pluginExecutionFilter>
    	               <groupId>io.github.phillipuniverse</groupId>
    	               <artifactId>githook-maven-plugin</artifactId>
    	               <versionRange>[1.0.4,)</versionRange>
    	               <goals>
    	                 <goal>install</goal>
    	               </goals>
                     </pluginExecutionFilter>
    	             <action>
    	               <ignore />
    	             </action>
                   </pluginExecution>
                 </pluginExecutions>
               </lifecycleMappingMetadata>
             </configuration>
           </plugin>
        </plugins>
       </pluginManagement>
    ...
    </build>
    ...
    
  • Corrección de ficheros XML que vienen mal declarados (en el código original se ha insertado el texto de la licencia por encima del prólogo). Para corregir esto, nos situamos en el directorio fuentes para ejecutar los siguientes comandos que trasladen la declaración XML al principio de cada fichero afectado:

    grep -RPzli '(?s)^<!-- Copyright.*<\?xml version="1.0" encoding="UTF-8" standalone="yes"' | grep -v '/target/' |  xargs -I '{}' sed -i 's/<?xml version="1.0" encoding="[Uu][Tt][Ff]-8" standalone="yes"?>\r//g; 1i\<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' ./{}'
    
    grep -RPzli '(?s)^<!-- Copyright.*<\?xml version="1.0" encoding="UTF-8"\?' | grep -v '/target/' |  xargs -I '{}' sed -i 's/<?xml version="1.0" encoding="[Uu][Tt][Ff]-8"?>\r//g; 1i\<?xml version="1.0" encoding="UTF-8"?>' ./{}
    
    grep -RPzli '(?s)^<!-- Copyright.*<\?xml version="1.0"\?' | grep -v '/target/' |  xargs -I '{}' sed -i 's/<?xml version="1.0"?>\r//g; 1i\<?xml version="1.0"?>' ./{}
    
  • Descargar la hoja de estilo de código de Google:

mkdir .mvn
cd .mvn

wget https://raw.githubusercontent.com/carm-es/csvstorage/master/.mvn/eclipse-java-google-style.xml
cd -

git add .mvn -f
rm LICENSE
wget https://raw.githubusercontent.com/carm-es/inside/master/LICENSE
  • Descargar el fichero README.md del master
rm README.md
wget https://raw.githubusercontent.com/carm-es/inside/master/README.md
  • Comprobar la calidad del código con sonarqube:
mvn org.jacoco:jacoco-maven-plugin:prepare-agent \
    -Darguments="-Dmaven.javadoc.skip=true" \
    -Djava.awt.headless=true \
    --batch-mode verify \
    -Dformat=ALL org.owasp:dependency-check-maven:4.0.2:aggregate \
    -DfailOnError=false org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar \
    -Dsonar.dependencyCheck.reportPath=target/dependency-check-report.xml \
    -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html \
    -Dsonar.host.url=https://sonarqube-pru.carm.es \
    -Dsonar.gitlab.query_max_retry=50 \
    -Dsonar.gitlab.query_wait=10000 \
    -Dsonar.dynamicAnalysis=reuseReports \
    -Dsonar.jacoco.reportPaths=target/jacoco.exec

  • Publicar la rama:
 # Añadir todos los ficheros que hemos cambiado,
 git add fuentes README.md  pom.xml  LICENSE

 # Commitear los cambios
 git commit -m "Conversión de 2.0.8.3 a develop
Se retoca la versión original 2.0.8.3 para poder iterar con los procesos de integración contínua de la CARM"

 # Publicar la rama en el Fork remoto 
 git push --set-upstream origin develop

Clone this wiki locally