Ir al contenido



Foto

Usando Jenkins con Delphi

Jenkins CI Integracion Continua Integracion Continua Continous Integration Continous Integration Tutorial Guia

  • Por favor identifícate para responder
17 respuestas en este tema

#1 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 16 noviembre 2015 - 10:13

Que es Jenkins? Jenkis  es un sistema de integracion continua (CI(). Basicamente lo que hace es automatizar tareas como testing, compilacion y distribucion de nuestros proyectos; pasado a limpio, compila automaticamente por nosotros :)

 

Que ventajas tiene esto?

 

- Incrementar la productividad:  Automatizar tareas siempre es bueno para incrementar la productividad. Cuando uno tiene mas y mas proyectos se vuelve algo tedioso el tener que compilar todo y ponerlo "en linea"; ademas, con los modelos de software de hoy en dia y el auge de los repositorios en la nube (git, subversion, etc) los cambios en los proyectos son permanentes. La "ultima version" ya es vieja

Se pueden hacer infinitas cosas con Jenkins: enviar mails, subir archivos por FTP, ejecutar comandos bat, ejecutar shell script, etc
 
- Facilita el testing: Los tester no siempre tienen que tener acceso al codigo fuente para poder compilar. Los testers no siempre tienen que saber como se hace "todo eso" para poder testear. Ellos necesitan la ultima version para probarla

 

- Facilita el soporte/mesa de ayuda: Llaman por telefono o mandan un mail a soporte: "Hola, como hago para xxx". Este tipo de cosas, requiere que en soporte siempre tengan instalado nuestros programas y que sea siempre la ultima version (en realidad lo mejor es tener TODAS las versiones para asi poder usar la de nuestro usuario). Para los desarrolladores, es muy engorroso tener que dejar una computadora actualizada siempre "a lo ultimo"

 

- Disponibilidad: No hace falta alguien capacitado para poder obtener la ultima version; asi, la gente que se encarga de vender, de marketing y de mantener la web o las redes sociales bien "chulas" con lo ultimo de lo ultimo, siempre tienen acceso a "lo ultimo de lo ultimo". No hace falta llamar al licenciado para que le de F9 desde el IDE :).

 

- Los errores se encuentran antes: Debido a que continuamente se esta actualizando el software, continuamente se esta testeando; mas testeo = mas errores encontrados antes de liberar una nueva version

 

- Posiblidad de ofrecer versiones "release-candidate" de forma automatica. Basicamente le podemos decir a Jenkis que ejecute un pull de Git, compile el proyecto y luego lo suba a un FTP/Dropbox/haga lo que sea que haga falta

 

 

En fin..

 

 

Hace unos años se decia que, incluso aunque seamos una sola persona, es una muy buena idea usar un SCM (gestion de codigo fuente, como Mercurial, entre otros)

Hoy se dice lo mismo pero de CI. En esta ocasion voy a presentar a Jenkins que se integra perfectamente bien con Delphi

 

 

----

 

 

Primero, descargamos el paquete para Windows en la pagina oficial de Jenkins
 
    La instalación basicamente nos preguntará en que directorio queremos instalar Jenkins, nada más. Increiblemente sencillo

Apenas terminada la instalacion, se nos abrira un browser apuntando a localhost:8080; Jenkins se administra en su totalidad desde un browser, lo cual lo hace bastante practico, podríamos acceder desde "afuera" sin tener que andar instalando nada

El punto fuerte de Jenkins es que esta preparado para ser extendido facilmente utilizando un sistema de plugins. Para administrar plugins simplemente debemos irnos a < Administrar Jenkins > / < Administrar Plugins >.

 

    Tambien es posible acceder mediante URL, http://localhost:8080/pluginManager/

 

En esta ventana podremos actualizar, eliminar o agregar nuevos plugins. Es realmente sencillo.

 

    Lo primero que hago yo es actualizar lo que sea necesario (es una costumbre que tengo, me gusta tener todo al dia)

 

 

A nosotros nos interesa un plugin que se va a encargar de compilar los proyectos Delphi: RAD Studio Plugin. Para instalarlo simplemente hay que dirijirse a la pestaña < Todos los plugins >, y en el edit que nos sale arriba podemos filtrar y buscar el plugin que querramos

 

Luego marcamos el checkbox, y le damos al boton < Descargar ahora e instalar despues de reiniciar >

 

Para reiniciar Jenkins, hay que ingresar esta URL en el browser: http://localhost:8080/restart

    Notar que esto es un reinicio "forzoso", si Jenkins en ese momento estaba ejecutando alguna tarea sera interrumpido/

Para un reinicio seguro (esperar a que terminen todas las tareas, y luego reiniciar) se usa:

 

http://localhost:8080/safeRestart

 

Ahora debemos configurar el plugin para que detecte nuestras instalaciones de Delphi; asi que desde Home (http://localhost:8080/), vamos a < Administrar Jenkins > / < Configurar sistema >.

 

Siguiendo, buscamos la seccion RAD Studio y hacemos click en < Añadir RAD Studio >

 

Esta es una de las partes que tiene "truco", ya que este plugin lamentablemente no cuenta con documentacion de ningun tipo :(

 

El el edit "Name", ingresamos un nombre para identificar una instalacion de Delphi. Por ejemplo, yo como voy a usar Delphi 2010, simplemente le puse de nombre "Delphi 2010".

 

En el edit "Home (BDS)" debemos ingresar la ruta donde esta instalado el Delphi en cuestion. En mi caso:

 

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\

 

En este momento ya estamos en condiciones de poder crear una nueva tarea para compilar nuestros proyectos Delphi. Asi que nos dirijimos a Home

 

En el menu de la izquierda tendremos la opcion < Nueva tarea >. Pulsamos y se nos solicitara un nombre y tipo de tarea. En el tipo seleccionamos la primer opcion "Crear un proyecto de estilo libre"

 

Algo muy bueno Jenkins es la ayuda que tiene incorporada. En esta ventana casi todos los puntos que se nos solicita, tiene a su derecha un icono de ayuda (con el signo ?). Al hacer click se expande la ayuda para ese objeto, la cual es muy precisa y en muchos casos hasta provee ejemplos

 

    Es interesante ver que Jenkins se integra perfectamente con los sistemas de gestion de codigo fuente, como Git, Subversion, etc.  Volveremos mas adelante sobre esto/

Para este ejemplo sencillo que vamos a crear, a nosotros nos interesan dos puntos:

 

a. Disparadores de ejecuciones: Cuando se va a ejecutar esta tarea?

 

En este caso voy a hacer algo bastante inutil, que es compilar cada 15 minutos. Para ello debemos ingresar:

 

[code=auto:0]
H/15 * * * *
[\code]

 

Para este caso en particular la ayuda lo es todo :)

 

    Veremos mas adelante que se pueden hacer cosas mas interesantes, por ejemplo, cuando se pushea a nuestro repositorio Git, Mercurial, etc, Jenkins recibe la notificacion y compila. Muy poderoso

 

b. Ejecutar: Al dispararse esta tarea, que debe hacerse?]/i]

 

Clickeamos en el combo < Añadir un nuevo paso >

Seleccionamos < Build a RAD Studio project or project group >

En el combo "RAD Studio" elegimos que Delphi queremos usar. Aca nos van a aparecer todos los que vayamos cargando. Podemos tener distintas instalaciones de Delphi sin ningun problema

En el edit "Project file" ingresamos la ruta de nuestro projecto. Puede ser un grupo (.groupproj), un .dpr (Delphi < 2007) o .dproj (Delphi >= 2007)

En Switches yo nunca pongo nada; supongo que son argumentos para el compilador (dcc32)

 

Listo! Damos en guardar y ya esta.

 

Ahora nos devuelve a la pantalla principal del proyecto que acabamos de crear. Desde aca podemos ver el Changelog, la historia de builds, el workspace (espacio de trabajo). Para probar que todo este correcto damos, en el menu de la izquierda, click en "Construir ahora".

 

 

    En este punto quiza sea interesante activar la opcion, arriba a la derecha, de auto-refrescado

 

Entonces veremos como se encola un nuevo trabajo y Jenkis ejecuta lo que programamos. Si todo va bien, deberiamos tener un punto azul. Si hubo algun problema, el punto sera de color rojo. Podemos ver en tiempo real, o cuando querramos, la salida a consola; de esta manera podemos ver que hizo Jenkins, y si hubo algun problema, poder ver cual es el fallo para poder solucionarlo

 

 

Lo normal es que en este punto nos de error, y si revisamos la salida a consola, veamos que no encuentra las unidades basicas de Delphi; por ejemplo, la "System.pas" o el .DCU equivalente

 

Esto es porque Jenkins por defecto se instala como un servicio de Windows que corre en la cuenta del sistema local. Y parece ser que algunos plugins (el de Delphi, el de Git) necesitan que los ejecute un usuario "comun" de Windows. Solucionarlo es, por suerte, muy sencillo.

 

Vamos a inicio -> ejecutar (o usamos la combinacion de teclas, CTRL + R) y escribimos services.msc

 

    En Windows 7 o superior, podemos ir al administrador de tareas, pestaña servicios, y luego hacer click en el boton "Servicios"

En la lista de servicios, buscamos Jenkins. hacemos doble click y en el cuadro de propiedades, vamos a la pestaña de inicio de sesion.

Veremos que esta seleccionada la opcion "Cuenta del sistema local". Debemos seleccionar la otra opcion, "Esta cuenta"

 

Si no queremos problemas, lo que hacemos es asignarle nuestra cuenta de usuario
Si queremos asignarle una cuenta que solamente va a usar Jenkins (lo cual es buena idea), debemos tomar una medida adicional:

 

Si la cuenta en cuestion la creamos despues de instalar Delphi, o bien, cuando instalamos Delphi no seleccionamos la opcion "All users" o "Todos los usuarios", nos faltaran algunos archivos que el compilador busca en el espacio de usuario y no podra compilar. Asi que abrimos el explorador de Windows y nos vamos a:

 

- En Windows XP:  C:\Documents and Settings\<Usuario>\Datos de programa
- En Windows 7 o superior: C:\Users\<Usuario>\AppData\Roaming

 

    [i]Sepan disculpar que en este caso haya puesto una ruta en español y la otra en ingles,

lamentablemente nuestro server Win 2003 viene en español, en tanto mi Windows 10 esta en ingles

 

Quien es "<Usuario>"?.

 

<Usuario> debe ser la cuenta que seleccionamos para instalarle Delphi. Dicho de otra forma, si iniciamos sesion con esa cuenta, y desde la linea de comandos ejecutamos dcc32 deberia salirnos la ayuda del compilador de Delphi.

 

Si nos indica que no reconoce el comando dcc32 entonces Jenkins no podrá compilar, al menos no si se ejecuta desde esa cuenta

 

Una ves estemos dentro de ese directorio, debemos copiar las carpetas de Delphi. Ahora esta parte tambien tiene truco ya que depende de nuestra version de Delphi, son distintas carpetas. Por ejemplo, para Delphi 2010 la carpeta es "CodeGear"; supongo que para las versiones mas antiguas debe haber una "Borland", y las mas nuevas una "Embarcadero". De todos modos, si algo que sobra no pasa nada.

 

Y donde lo copiamos? En la misma ruta pero de la cuenta que asignamos a Jenkins. Ahora si, se deberia poder ejecutar la tarea sin ningun problema

 

Ahora veremos como podemos agregar un SCM a la formula y que se ejecute el build cuando se pushea


  • 3

#2 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 16 noviembre 2015 - 10:14

Veamos como integrar un SCM en Jenkins.

En este caso voy a utilizar Git como SCM; y GitLab como host del repositorio Git

 

Lo primero que debemos hacer es volver a la parte de Administrar Plugins en Jenkins:

http://localhost:8080/pluginManager/

 

E instalaremos

GIT Plugin
GitLab Plugin .

 

Luego reiniciamos Jenkins

 

Si queremos recibir notificaciones de GitLab cuando se pushea al repositorio, tendremos que tomar una medida adicional. Sino, podemos seguir con la estrategia de cada determinado lapso de tiempo, compilar; solo que en este caso, al estar el repositorio de por medio, Jenkins va a ejecutar un pull y bajar los ultimos cambios automaticamente.

 

 

Para recibir notificaciones de GitLab:

Necesitaremos nuestro ip externo, lo ideal es contar con un DNS.
Vamos a la configuracion del sistema Jenkins: http://localhost:8080/configure
Bajamos hasta "Jenkins Location". Veremos que hay un aviso en amarillo que nos indica que en lugar de localhost:8080 pongamos un nombre "correcto"

 

Aca introducimos nuestro ip externo o DNS, respetando la sintaxis (el puerto 8080)

 

Para verificar que todo esta bien, probamos ingresar a Jenkins usando nuestro ip o dns desde el navegador. Es necesario que el puerto este habilitado tanto en el router y firewall de Windows

 

Ahora lo que hacemos es volver al proyecto que creamos antes (o creamos uno nuevo, como quieran) y seleccionamso "Configurar" en el menu de la izuiqerda

 

Volvemos a la misma pagina donde configuramos el proyecto inicialmente. En este caso vamos a modificar en la seccion "Configurar el origen del código fuente"

 

Ahora que instalamos el GIT plugin, deberia aparecer la opcion "Git", la seleccionamos

Se nos solicitaran dos cosas: (la ayuda en este caso es realmente detallada, recomiendo revisarla)

 

- URL repositorio: es la misma que usamos para clonar
- Credenciales: de ser necesarios, obviamente

 

Antes estabamos compilando cada 15 minutos.. algo bastante inutil. Ahora vamos a configurar Jenkins para que reciba una notificacion cuando se pushea al repositorio; Jenkins la va a recibir, va a ejecutar un comando pull (va a bajar los ultimos cambios) y compilar

 

Vamos a la seccion de "Disparadores de ejecuciones"

 

Tildamos la opcion: Build when a change is pushed to GitLab. GitLab CI Service URL: http://<IP/DNS/localhost>:8080/project/XXX

 

Es importante la direccion que nos informa en "GitLab CI Service URL"; esta dependera de la configuracion de Jenkins. Queire decir que en esa direccion es en donde Jenkins estará escuchando las notificaciones de GitLab. Obviamente, que en localhost nunca va a poder recibir nada, de alli la importancia del paso anterior

 

Copiamos la direccion en cuestion al portapapeles

 

En este punto podemos guardar los cambios en Jenkins y nos vamos para GitLab.

 

Una ves en GitLab, buscamos el proyecto, y nos dirijimos a "Settings"

 

https://gitlab.com/<usuarioo grupo>/<proyecto>/edit

 

Luego entramos en "Web Hooks"

 

https://gitlab.com/<usuarioo grupo>/<proyecto>/hooks

 

Y ahora es cuestion de ingresar la direccion que teniamos en el portapapeles y marcar en que momento nos interesa que nos mande una notificacion.

Podemos probar facilmente que este todo bien, haciendo click en el boton "Test Hook" Al hacerlo, aparecera el mensaje "Hook successfully executed." arriba

Si volvemos a Jenkins deberiamos ver como se ejecuta nuestra tarea, Jenkins en ese momento va a comenzar a clonar el repositorio

 

Es interesante que cuando una tarea se ejecuta nos indica quien la disparo. Hasta ahora solo teniamos "annonymous", ya que eramos nosotros mismo dandole a Build desde el browser. En este caso por ejemplo yo obtuve:

 

"Started ​by ​GitLab ​push ​by ​Agustin ​Ortu"

 

Esto nos permite obtener un mayor control sobre quien y cuando hace las cosas

 

 

 

 

Jenkins utiliza los llamados "workspace" para almacenar todo lo que necesita para trabajar con nuestro proyecto. La carpeta principal que contiene todos los workspace esta en el directorio de instalacion de Jenkins\workspace; por ejemplo, al clonar el repositorio git, deberia habernos creado una carpeta

 

\workspace\<proyecto>\

 

Y ahi mismo deberia estar el contenido del repositorio.

 

El workspace esta disponible desde el browser, podemos ver el contenido haciendo click en la opcion "Espacio de trabajo" del menu lateral de la izquierda.

 

El workspace es un concepto bastante interesante ya que es el directorio activo al momento de ejecutarse la tarea; esto nos vale para una ultima modificacion: asi que volvemos a la parte de configuracion del proyecto

 

Anteriormente, habiamos configurado el RAD Studio Plugin para que compile en una determinada ruta cierto proyecto. Vamos a configurarlo ahora para que utilice siempre la copia del workspace, ya que es la que va a estar actualizando constantemente gracias a la integracion con GitLab.

 

Simplemente, hay que quitar la ruta y dejar solo el nombre del archivo, ya que como dije antes, el directorio activo es el workspace, y dentro del workspace deberia estar nuestro proyecto; mejor dicho, es la ruta relativa de nuestro proyecto Delphi dentro del repositorio Git, evidentemente si esta dentro de otra carpeta deberiamos incluirlo en la ruta. Pero por lo genral los .groupproj o los .dproj estan en la raiz :)


  • 1

#3 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 523 mensajes
  • LocationEspaña

Escrito 17 noviembre 2015 - 12:32

Impresionante trabajo. Muchas gracias por el aporte

 

:ap:


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.804 mensajes
  • LocationMéxico

Escrito 17 noviembre 2015 - 10:28

Muy interesante, lo leeré con detenimiento porque me parece que tiene mucha tela de donde cortar.

 

Saludos


  • 1

#5 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 10:34

Muy interesante, lo leeré con detenimiento porque me parece que tiene mucha tela de donde cortar.

 

Saludos

 

 

Exactamente Eliseo, a ver si algun dia me pongo a investigar como integrar la parte de testing, es decir poder correr unit testing de forma automatica y en base a eso marcar una build como "unstable" por ejemplo

 

El problema es que lamentablemente unit testing llego bastante tarde dentro de mi vida y nunca ni siquiera hice un "hello world"

 

Por cierto olvide mencionar que Jenkins esta licenciado bajo Licencia MIT


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.804 mensajes
  • LocationMéxico

Escrito 17 noviembre 2015 - 10:42

Exactamente Eliseo, a ver si algun dia me pongo a investigar como integrar la parte de testing, es decir poder correr unit testing de forma automatica y en base a eso marcar una build como "unstable" por ejemplo

 

El problema es que lamentablemente unit testing llego bastante tarde dentro de mi vida y nunca ni siquiera hice un "hello world"

 

Por cierto olvide mencionar que Jenkins esta licenciado bajo Licencia MIT

 

Yo he visto desde la tangente al asunto de Unit Testing, y no he tenido el impulso de investigar al respecto, eso habla mal de mí pero debo ser sincero.

 

A ver si me doy un tiempo para hacer algo acerca de éste tema ya que lo has tocado. :)

 

Saludos


  • 0

#7 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.155 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 12:37

Me pregunto si se soportará CodeTyphon/Lazarus.

No recuerdo desde que versión Delphi ya cuenta con Unit Testing integrado al IDE, pero si recuerdo que se trata de DUnit. En Delphi 6 y 7 se debía utilizar por aparte y al menos yo no tuve problemaas con su uso.

Es relativamente simple de usar, se elaboran unidades de prueba y en ella se pone el código para probar cada cosa que se desee. DUnit ofrece un amplio juego de métodos para evaluar y comprobar. Si no me falla la memoria son métodos sobrecargados, llamados Test().

Luego se seleccionan las unidades de prueba y se presiona en run. El programa solito empieza a ejecutar las unidades y da el reporte.

Sepan disculpar que no pueda aportar más al tema, hace bastante que no uso DUnit, y sobre todo ahora que ni uso Delphi.

 

Saludos,


  • 2

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.804 mensajes
  • LocationMéxico

Escrito 17 noviembre 2015 - 01:18

Me pregunto si se soportará CodeTyphon/Lazarus.

No recuerdo desde que versión Delphi ya cuenta con Unit Testing integrado al IDE, pero si recuerdo que se trata de DUnit. En Delphi 6 y 7 se debía utilizar por aparte y al menos yo no tuve problemaas con su uso.

Es relativamente simple de usar, se elaboran unidades de prueba y en ella se pone el código para probar cada cosa que se desee. DUnit ofrece un amplio juego de métodos para evaluar y comprobar. Si no me falla la memoria son métodos sobrecargados, llamados Test().

Luego se seleccionan las unidades de prueba y se presiona en run. El programa solito empieza a ejecutar las unidades y da el reporte.

Sepan disculpar que no pueda aportar más al tema, hace bastante que no uso DUnit, y sobre todo ahora que ni uso Delphi.

 

Saludos,

 

 

De hecho a eso hago alusión que solo he visto la unit Test de pasadita y dandole la vuelta por la tangente :D :D :D

 

Saludos


  • 0

#9 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 02:26

Estoy en la misma situacion que Eliseo :) 

Marcelo yo creo que deberia funcionar bien con Lazarus, estoy seguro de que tiene alguna forma de compilar desde linea de comandos.

Jugando un rato con Jenkins "descubri" que se puede obviar el plugin Rad Studio, simplemente ejecutas un script .bat que ejecute el msbuild y listo. En realidad el plugin lo que debe hacer tras los bastidores es ese trabajito :)

La cuestion es la siguiente, me arme dos archivos mas dentro de mi workspace:

CLEAN.bat -- borra los .dcu, .exe, __history, y similares
BUILD.bat -- ejecuta CLEAN y luego compila

Aca les paso el contenido en cuestion:

CLEAN.bat
 


delphi
  1. @echo off
  2. echo Cleaning...
  3. del /f /q /s *.exe
  4. del /f /q /s *.bak
  5. del /f /q /s *.dcu
  6. del /f /q /s *.ddp
  7. del /f /q /s *.~*
  8. del /f /q /s *.local
  9. del /f /q /s *.identcache
  10. del /f /q /s *.tvsconfig
  11.  
  12. del /f /q /s *.bpl
  13. del /f /q /s *.cbk
  14. del /f /q /s *.dcp
  15. del /f /q /s *.dsk
  16. del /f /q /s *.o
  17. del /f /q /s *.rsm
  18. del /f /q /s *.skincfg
  19.  
  20. for /f "tokens=* delims=" %%i in ('dir /s /b /a:d __history') do (
  21. rd /s /q "%%i"
  22. )
  23. if "%1"=="" goto :eof

En realidad este script es tomado prestado del framework Spring4D http://spring4d.org/. Dicho sea de paso aprovecho para decir que es genial y que pegen un vistazo, algun dia me armaré de valor y hare un post sobre esto

Y este es mi BUILD.bat:


php
  1. call CLEAN.bat
  2. echo Start Build...
  3.  
  4. call "C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin\rsvars.bat"
  5.  
  6. msbuild /verbosity:detailed Proyecto.dproj

El truco esta en llamar al rsvars.bat correcto de acuerdo a nuestra instalacion de Delphi. Lo correcto seria usar alguna llamada API o variables de entorno para obtener la ruta y no hacerlo de forma chapucera a como lo hice yo, pero lo dejo como ejercicio para el lector :D 

La configuracion en Jenkins es simplemente, en la seccion de Ejecutar, seleccionar "Execute Windows batch command" y en los argumentos simplemente ingresamos la ruta a BUILD.bat

En mi caso como lo tengo en la raiz del workspace simplemente deje "BUILD.bat" y listo :)

Saludos


  • 2

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.155 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 03:25

Tendría que ver el tema a ver si es viable algo como lo que propones con Lazarus. El "pequeño detalle" es que Lazarus es multiplataforma y dependiendo de como se configure el proyecto, y los parámetros de compilación establecidos se construye de una u otra forma, un .exe y/o un .so, etc.

 

Saludos,


  • 0

#11 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 04:29

En realidad no deberia haber problemas

De hecho se puede invocar al lazbuild desde la linea de comando
 
http://wiki.freepascal.org/lazbuild
 

--operating-system=<operating-system> or --os=<operating-system>
  override the project operating system. e.g. win32 or linux.

--compiler=<ppcXXX>
override the default compiler. e.g. ppc386, ppcx64, ppcppc etc.

 
Y parece que se le puede decir que es lo que se quiere compilar
 
La parte que tiene truco es "que compilo?" Win32, Win64, Linux? Todos?


  • 0

#12 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.155 mensajes
  • LocationArgentina

Escrito 17 noviembre 2015 - 04:48

La cantidad de opciones que ofrece y justamente que se pueda compilar para uno o varios sistemas operativos y arquitectura me hace dudar hasta que punto sea viable hacerlo.

 

Saludos,


  • 0

#13 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 29 noviembre 2015 - 05:24

La cantidad de opciones que ofrece y justamente que se pueda compilar para uno o varios sistemas operativos y arquitectura me hace dudar hasta que punto sea viable hacerlo.

 

Saludos,

 

Técnicamente no debería existir problema Delphius, Jenkins es más un servicio que toma herramientas para realizar tareas, es decir, tal como lo menciona Agustin Ortu, yo le doy las herramientas (plugins) y según mi necesidad el las usará.

Vale resaltar que el concepto de CI, es mantener mis recursos al día y mi código actualizado, si en realidad necesito generar binarios de manera constante para ser desplegados, entonces ya hablamos de CD, para lo cual existen otras herramientas.


  • 2

#14 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 829 mensajes
  • LocationArgentina

Escrito 01 diciembre 2015 - 10:20

Vaya felipe resulta que tenes razon

Justo hoy de casualidad en DelphiFeedssalio un articulo sobre Continous Delivery (CD) justo aqui

Sera cuestion de seguir leyendo

Saludos
  • 0

#15 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.155 mensajes
  • LocationArgentina

Escrito 01 diciembre 2015 - 10:43

Técnicamente no debería existir problema Delphius, Jenkins es más un servicio que toma herramientas para realizar tareas, es decir, tal como lo menciona Agustin Ortu, yo le doy las herramientas (plugins) y según mi necesidad el las usará.

Vale resaltar que el concepto de CI, es mantener mis recursos al día y mi código actualizado, si en realidad necesito generar binarios de manera constante para ser desplegados, entonces ya hablamos de CD, para lo cual existen otras herramientas.

 

Gracias por la aclaración Felipe. Admito que no he estudiado esta herramienta puesto que no tengo el debido tiempo. Actualmente tengo proyectos en curso pero nada que justifique el uso de esta herramienta o parecida.

Aunque no la descarto en un futuro.

 

Saludos,


  • 0

#16 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 01 diciembre 2015 - 02:38

Gracias por la aclaración Felipe. Admito que no he estudiado esta herramienta puesto que no tengo el debido tiempo. Actualmente tengo proyectos en curso pero nada que justifique el uso de esta herramienta o parecida.

Aunque no la descarto en un futuro.

 

Saludos,

 

Créeme que es un pensamiento general y algo errado al decir "no lo uso porque no lo justifica". Si bien este y otros "nuevos" conceptos aplican en ambientes donde intervienen muchas partes y las cuales pueden encontrarse en diferentes lugares, no significa que no puedan ser utilizados en proyectos de una persona; es el mismo escenario si digo que no necesito versionar mi código fuente ya que unicamente yo trabajo en el.

Te darías cuenta de lo mucho que puede aportar y mejorar en los procesos de desarrollo estas herramientas, la posibilidad de delegar tareas y hacer de nuestras actividades procesos más organizados genera un buen ambiente y te sirve para crear una mejor imágen con tus clientes.

 

 

Vaya felipe resulta que tenes razon

Justo hoy de casualidad en DelphiFeedssalio un articulo sobre Continous Delivery (CD) justo aqui

Sera cuestion de seguir leyendo

Saludos

 

Una herramienta bastante interesante que he encontrado es Serena


  • 2

#17 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.155 mensajes
  • LocationArgentina

Escrito 01 diciembre 2015 - 03:22

Créeme que es un pensamiento general y algo errado al decir "no lo uso porque no lo justifica". Si bien este y otros "nuevos" conceptos aplican en ambientes donde intervienen muchas partes y las cuales pueden encontrarse en diferentes lugares, no significa que no puedan ser utilizados en proyectos de una persona; es el mismo escenario si digo que no necesito versionar mi código fuente ya que unicamente yo trabajo en el.

Te darías cuenta de lo mucho que puede aportar y mejorar en los procesos de desarrollo estas herramientas, la posibilidad de delegar tareas y hacer de nuestras actividades procesos más organizados genera un buen ambiente y te sirve para crear una mejor imágen con tus clientes.

 

 

 

Una herramienta bastante interesante que he encontrado es Serena

 

Seguro que puede ser útil incluso para un desarrollador propio, más apuntaba a que en mi caso por la forma de trabajar y organizarme no le puedo sacar provecho hasta que le ponga más orden a la casa. Para traer orden, hay que estar mentalizado para eso y hacer del proceso algo que nos importe y de valor. Yo llevo versionado de mi propio código, en eso si "evolucioné". Anoto que he cambiado, que he eliminado, que voy añadiendo, y mantengo respaldo de las versiones críticas o importantes.

 

Saludos,


  • 0

#18 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 11 julio 2016 - 04:55

Extenso, pero Interesante.... A Leer! :ap: (h) (y)

 

Saludos!


  • 0