Integración continua de aplicación IBM z/OS: Parte 1. Crear una integración continua con Rational Team Concert

La integración continua se ha convertido en una práctica importante en el desarrollo ágil de software, porque mejora la calidad del software por el proceso de control de calidad continuo. Este artículo describe las prácticas de los conceptos de integración de mapeo que se usan en el desarrollo del system z de IBM. Aprenderá cómo usar Rational Team Concert para automatizar la creación y desarrollo de una aplicación de sistema principal. El segundo artículo de esta serie de dos partes describe cómo agregar pruebas de unidades automatizadas y crear pruebas de verificación para el proceso de integración continua.

Zhang Hong Chen, Enterprise Modernization Solution Architect, IBM

author photoTony (Chen Zhang Hong) is a Senior Software Engineer within the IBM Rational Enterprise Modernization organization. He is the development lead for continuous integration for IBM System z software, responsible for creation and validation.



Rosalind Radcliffe, Enterprise Modernization Solution Architect, IBM

Author photoRosalind Radcliffe is an IBM Distinguished Engineer within the Rational Enterprise Modernization organization. She is the Enterprise Modernization Solution Architect responsible for Collaborative Lifecycle Management products for IBM System z and Power Systems. This includes Rational Team Concert support for standard mainframe development activities, as well as the support required within the IDEs to provide a complete development and test environment. Prior to Rational, she was in the Tivoli software division, responsible for the SOA management strategy for IBM. Rosalind is the Chair of NC TEC, the North Carolina IBM Academy of Technology Affiliate, and she is a member of the IBM Academy of Technology and a Master Inventor.



28-01-2013

Descripción general de la integración continua

Cuando se asignan nuevas tareas de desarrollo, los desarrolladores toman copias del código desde el repositorio de códigos para trabajar. Cuando los desarrolladores trabajan en forma separada de sus copias de código local, son más las dificultades que tienen cuando intentan integrarlo a su trabajo en el flujo de integración. En un enfoque de integración continua, los desarrolladores entregan los cambios de códigos con frecuencia para obtener comentarios de los procesos de prueba y creación automatizados, lo que reduce el riesgo y esfuerzo en la integración final.

Estas son las mejores recomendaciones para seguir cuando se adopta la integración continua:

  • Tener un repositorio de códigos
  • Automatizar creaciones
  • Automatizar la implementación
  • Tener resultados de la última creación disponible para todos los miembros del equipo
  • Automatizar pruebas de unidades
  • Automatizar pruebas de funciones

En las siguientes secciones, demostraremos el uso de Rational Team Concert™ de IBM® en la primera parte de estas cuatro recomendaciones para el desarrollo de la aplicaciones z/OS® de IBM®. Luego, las recomendaciones se unen para crear una integración continua.

Veremos los temas de prueba automatizada en el segundo artículo de esta serie de dos partes.


Tener un repositorio de códigos

Para tener el control de la fuente, es importante comprender que Rational Team Concert usa un flujo, componentes, un espacio de trabajo y cambia las configuraciones para administrar el código fuente. Los archivos fuente se almacenan en el repositorio (la base de datos) como la fuente definitiva y se extraen a un sistema de archivos para editarlos o crearlos. Puede trabajar de forma local con sus archivos, enviar los cambios a un flujo para controlar la versión, y luego un agente de creación los carga en z/OS. Vea la sección Recursos para obtener un enlace al artículo "Guía para migración de Rational Team Concert para el desarrollo de la aplicación z/OS" para obtener más detalles.

Se recomienda crear un espacio de trabajo con un repositorio destinado a un equipo. Los espacios de trabajo para creación destinados le permiten identificar los cambios y elementos de trabajo que están en un lugar específico y crear capturas instantáneas del código fuente. También le permiten crear sólo cuando tiene cambios en el flujo. La Figura 1 muestra un flujo de trabajo común.

RTC Steam, Component, and Workspace flow diagram

Los desarrolladores hacen pruebas de unidades con la capacidad de creación personal y Rational Development y Test Environment para el system z. Cuando el código es probado y entregado al flujo de desarrollo, es aceptado automáticamente por el espacio de trabajo y cargado en un entorno de creación de equipo para que se haga la integración.


Automatizar creaciones

Rational Team Concert provee muchas capacidades para llamar herramientas de creación existente y provee muchas funciones, basadas en dependencia. Todos estos tipos de creaciones se incluyen en las definiciones y se pueden configurar para ejecutar un programa. La Figura 2 muestra una creación que se programó para ejecutarse cada 60 minutos.

Build Definition dialog window

Se recomienda volver a crear cada vez que se entrega un código. Esto depende de otra práctica para agilizar la creación. Rational Team Concert no realiza automáticamente la creación en la entrega del código. Puede lograr este objetivo de crear un cambio al programar su creación con un intervalo breve y activando la opción Build only if there are changes accepted. Esto hace que Rational Team Concert revise el flujo de su equipo frecuentemente y vuelva a crear cuando se entrega un cambio.

Consejo:
Cuando elije esta opción, es importante tener un espacio de trabajo destinado para evitar perder la ejecución de la creación porque otra creación aceptó los cambios. La Figura 3 muestra esta opción en la vista Definición de creación.

Option selected under Accept Options

Automatizar la implementación

Para hacer más que una simple validación (e incluso para una simple validación con muchas aplicaciones), la aplicación debe ser implementada en un entorno de prueba destino. Las siguientes secciones explican las consideraciones para la implementación de una aplicación para probarla.

Mover archivos ejecutables de una aplicación

Los ejecutables de una aplicación que son el resultado de la creación deben implementarse en el entorno de prueba. En Rational Team Concert, usted usa la función Paquete para unir los artefactos y crear un paquete que luego puede implementar en otro sistema o en una ubicación diferente en el mismo sistema.

Screen capture of package contents

La Figura 5 muestra los resultados de la implementación del paquete anterior. Puede ver que los módulos de carga se implementaron en un PDS diferente (conjunto de datos particionados), que es la biblioteca de carga del sistema CICS® de IBM® en este entorno de prueba.

Member, PDS, time modified, type of change

Instalar la aplicación y configurar la infraestructura

Algunas aplicaciones necesitan un paso de instalación para prepararse para la prueba (por ejemplo, el comando CICS NEWCOPY para cargar la nueva versión del programa). Cuando agregar un módulo nuevo a la implementación, también tendrá que configurar la nueva infraestructura antes de ejecutar el módulo nuevo. Por ejemplo, cuando agrega una nueva pantalla a la aplicación CICS, es probable que necesite la definición MAPSET.

Esto se realiza con los comandos TSO o scripts, como REXX o CLIST, y se envían a través de JCL (lenguaje de control de trabajo). Estos scripts se pueden ejecutar automáticamente durante la implementación en la etapa correspondiente.

La Figura 6 muestra una definición de implementación que ejecuta el comando NEWCOPY, un script REXX, luego de implementar los archivos en un PDS definido.

deploy.mortgage.test from PDS A to PDS B

Se recomienda administrar la configuración de la infraestructura y la configuración del código en el repositorio, como lo hace con el código fuente de su aplicación. El código de infraestructura se puede poner en paquete e implementar con el código fuente de su aplicación, lo que facilita la automatización y produce menos errores. El concepto se une con la Infraestructura como práctica de código cuando se habla de DevOps. Al administrar la infraestructura como código en un repositorio, obtiene todos los beneficios que tiene generalmente con el control de la fuente, como la última versión central del script.

Instalar los datos de prueba

Gestión de datos de prueba es un gran tema. La pregunta sobre la integración continua es generalmente cómo configurar o recuperar datos de prueba automáticamente en un entorno de prueba. El enfoque que usamos para implementar los ejecutables de la aplicación y configurar la infraestructura también se puede usar para administrar los datos de prueba.

Las herramientas de administración de datos como la utilidad IDCAMS de Virtual Storage Access Method (VSAM) o herramientas comerciales como Optim™ Test Data Management de IBM® (vea los Recursos) pueden exportar los datos de prueba a un sistema de archivo y recuperarlos a una base de datos en su entorno de prueba.

Los datos exportados, en forma de conjunto de datos, pueden formar paquetes e implementarse en el entorno de prueba. La implementación luego del comando se puede usar para llamar funciones en lotes de la herramienta de administración de datos para recuperar el archivo de datos en la base de datos de prueba.

Según si desea volver a instalar los datos de prueba cada vez que se ejecutan las pruebas de la aplicación, puede optar por volver a usar el paquete de la aplicación e implementarlo o crear un nuevo conjunto de datos de prueba y definiciones de implementación.

La Figura 7 muestra cómo Optim Test Data Management de IBM puede usar el contexto de integración continua. La integración con Rational Team Concert hace que la implementación de datos de prueba forme parte del ciclo de integración automatizada.

flow diagram

Crear una creación de integración continua

Puede crear, hacer un paquete, implementar, configurar una infraestructura y la instalación de datos de pruebas en tareas diferentes. Ahora es el momento de conectar todo y crear una integración continua (CI).

Rational Team Concert provee un conjunto de tareas de Apache Ant para controlar el ciclo de vida de creación. El paquete y la implementación son un tipo especial de implementación de Rational Team Concert, por eso se pueden administrar usando la tarea ANT. Vea los Recursos para obtener un enlace a la sección de documentación de requestTeamBuild para obtener una referencia completa de las tareas Ant.

Cree el CI como una creación de Rational Team Concert y seleccione la plantilla Ant con extensiones comerciales – Rational Build Agent (vea la Figura 8) La plantilla es una definición de creación para z/OS que usa el motor de Rational Build Agent y una versión de la herramienta Ant que se amplió para trabajar en z/OS.

General Information section of the New Build Definition

En la definición de creación CI (Figura 9), seleccione un archivo existente y señale la ubicación en el script Ant. Puede ubicarlo manualmente en el script Ant en el sistema de destino o cargarlo en Rational Team Concert desde un proyecto fuente antes de que comience la creación. Sin embargo, es mejor guardar el script en un proyecto en su repositorio de códigos y cargarlo en Rational Team Concert antes de crearlo. Obtiene los mismos beneficios que se describen en el código de configuración de infraestructura de administración.

do CI build definition

La muestra de códigos en la Lista 1 muestra cómo se usan las tareas de Rational Team Concert Ant para realizar estas tareas:

  • Solicitar la creación de mortgage.dev con la tarea requestTeamBuild.
  • Esperar que una creación termine de usar la tarea waitForTeamBuild.
  • Informar el estado de actividad del resultado de la creación de CI con la tarea startBuildActivity.
  • Publicar los enlaces de resultados en el resultado de creación de CI con la tarea linkPublisher.
  • Revisar el estado de la creación mortgage.dev y controlar el proceso de un CI.
Listado 1.
<target description="step1" name="step1">
<startBuildActivity autoComplete="true" buildResultUUID="${buildResultUUID}"
label="Enterprise build" parentActivityId="${teamz.build.ant.buildActivityId}"
passwordFile="${passwordFile}" repositoryAddress="${repositoryAddress}"
userId="${userId}" />

<requestTeamBuild buildDefinitionId="mortgage.dev" passwordFile="${passwordFile}"
repositoryAddress="${repositoryAddress}" userId="${userId}"
resultUUIDProperty="step1BuildResultUUID" />

<linkPublisher repositoryAddress="${repositoryAddress}" userId="${userId}"
passwordFile="${passwordFile}" buildResultUUID="${buildResultUUID}"
url="${repositoryAddress}/resource/itemOid/com.ibm.team.build.BuildResult/$
    {step1BuildResultUUID}"
label="mortgage.dev build result" />

<waitForTeamBuild repositoryAddress="${repositoryAddress}"
passwordFile="${passwordFile}" userId="${userId}"
buildResultUUID="${step1BuildResultUUID}"statesToWaitFor="COMPLETED"
buildStatusProperty="step1BuildStatus" verbose="true" interval="1" timeout="600" />

<fail message="Failed due to Enterprise build failed">
<condition>
<not>
<equals arg1="${step1BuildStatus}" arg2="OK" />
</not>
</condition>
</fail>
</target>

Puede usar algunos métodos para solicitar el paquete, implementarlo y otras actividades de creación en secuencia. Esto funciona perfectamente mientras que cada paso de CI se ejecute de forma independiente sin conocer el resultado del paso anterior. Sin embargo, esto no sucede en el mundo real. Incluso en el proceso de creación, paquete e implementación simple que hemos descrito, tenemos algunas dependencias. La implementación necesita el resultado de un paquete anterior como entrada. Cuando ejecuta manualmente una Implementación desde el menú Eclipse, puede seleccionar el paquete que desea implementar.

La muestra del código en el Listado 2 muestra cómo obtener información de un resultado de creación y pasarlo a otra con el script Ant. Se crea un archivo de propiedades, y la información del resultado del paquete se adjunta en el archivo de propiedades. Este archivo luego se usa como entrada para solicitar una implementación.

Listado 2. Obtener información de un resultado y pasarlo a otra creación
<target description="step2" name="step2">
<startBuildActivity ... />
<requestTeamBuild buildDefinitionId="package.mortgage.dev"
resultUUIDProperty="step2BuildResultUUID" ... />
<waitForTeamBuild ... />

<buildResultRetriever buildResultUUID="${step2BuildResultUUID}"
labelProperty="packageLabel" />
<property name="deployment.properties" value="${step2BuildResultUUID}.properties" />
<echo message="team.deploy.common.packageLabel=" file="${deployment.properties}"
append="true" />
<echo message="${packageLabel}${line.separator}" file="${deployment.properties}"
append="true" />
<echo message="team.deploy.common.packageResultUUID=" file="${deployment.properties}"
append="true" />
<echo message="${step2BuildResultUUID}${line.separator}"
file="${deployment.properties}" append="true" />
</target>

<target description="step3" name="step3">
<startBuildActivity ... />
<requestTeamBuild buildDefinitionId="deploy.mortgage.test"
overridePropertiesFile="${deployment.properties}" ... />
...
</target>

Para descubrir cuáles son las propiedades que se necesitan como entrada para crear Rational Team Concert, revise la pestaña Properties de un resultado de creación existente.

Lists names and values

Resumen

Las muestras y descripciones en este artículo lo ayudan a comenzar a usar Rational Team Concert para automatizar la integración continua de un código para sus aplicaciones z/OS. La clave no es automatizar el proceso de creación e implementación, sino incluir pruebas automatizadas. El segundo artículo en esta serie de dos partes describe las capacidades de prueba automatizada con más detalles.

Recursos

Aprender

Obtener los productos y tecnologías

  • Descargue Rational Team Concert de Jazz.net y obtenga una prueba gratuita de hasta 10 proyectos durante el tiempo que desee (requiere registro). Si lo prefiere, puede probarlo en sandbox, sin instalarlo en su propio sistema.
  • Evalúe el software de IBM de la forma en que más le convenga: Descárguelo para pruebas, pruebe un producto en línea, utilice un producto en el contexto de la nube o pase algunas horas en SOA Sandbox para aprender a implementar eficientemente arquitectura orientada al servicio.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Rational
ArticleID=966356
ArticleTitle=Integración continua de aplicación IBM z/OS: Parte 1. Crear una integración continua con Rational Team Concert
publish-date=01282013