svn - Acceda a Build Changelog en Jenkins
testflight (6)
Dado que el formato de registro de Jenkins cambió, actualicé el contenido XML de la publicación original. Además, dado que el TestFlight original murió, y el complemento ahora está obsoleto, estoy introduciendo el contenido en un archivo HTML para usarlo con HockeyKit. Es realmente un archivo de texto CON saltos de línea. Hacer quiebres de línea de inserción de sed es ... desafiante, y la cuerda parece muy confusa (al menos para mí) a primera vista.
#for distribution in projects
Changelog=$(curl "${BUILD_URL}api/xml?wrapper=changes&xpath=//changeSet//item//msg" | sed -e "s/<//msg>//g; s/<msg>///`echo -e ''/r''`/g; s/<//*changes>//g" )
# Write result to properties file
echo -e "$Changelog" > "${BuildDestinationPath}/"${BUILD_NUMBER}.html
Nota Editar: BuildDestinationPath y Changelog son mis variables locales. Las variables en mayúsculas son variables de entorno de Jenkins y deben existir en cualquier instalación.
He estado tratando de encontrar una forma de incluir la lista de cambios generados por Jenkins (desde el tirón SVN) en nuestras notas de Testflight. Estoy usando el Plugin de Testflight, que tiene un campo para notas, pero no parece haber ningún paramater / token que jenkins cree para incrustar esa información.
¿Alguien ha tenido algo de suerte para lograr algo como esto?
De hecho, puede acceder a esa información antes de que finalice la fase de compilación leyendo / analizando el archivo ../builds/$BUILD_NUMBER/changelog.xml dentro de la carpeta de compilación. Este archivo se crea con el desencadenamiento de commit SVN / GIT y no con el final de la fase build o post_build. Eso significa que puede analizarlo al comienzo de la fase de compilación del mismo trabajo con un script e insertar los datos en variables env.
Esto es si no quieres usar el curl y XML.
El plugin Testflight tiene una opción para esto. Aquí está el compromiso:
https://github.com/jenkinsci/testflight-plugin/commit/e8edfef012d4bdefb95ee24818891a27ac920a36
No lo vi en la versión más reciente de plugin de prueba de vuelo, así que construí el plugin de git y tiene esta opción.
Estoy usando este que se encuentra aquí: http://jenkins.361315.n4.nabble.com/Get-SVN-changes-td3511042.html
${CHANGES, showPaths=true}
Muy simple y funciona para SVN.
Hice un ejemplo de python que codifica xml para CHANGELOGS
note.xml debe ser
<changes>
<msg>First commit.</msg>
<msg>Second commit.</msg>
</changes>
el código python real está debajo
from xml.etree.ElementTree import parse
tree = parse("note.xml")
root = tree.getroot()
sentence = ''CHANGELOG =/"''
cnt = 1
for element in root.findall(''msg''):
tempstring = element.text
tempstring =str(cnt)+''. ''+''//n''.join(tempstring.splitlines())
sentence =sentence +tempstring +''//n''
cnt = cnt +1
sentence = sentence + ''/"''
print sentence
Parece que el complemento TestFlight amplía las variables ubicadas en el campo "Crear notas", por lo que la pregunta es: ¿cómo podemos obtener los cambios para la compilación actual en una variable de entorno?
Por lo que sé, el complemento de Subversion no proporciona esta información a través de una variable de entorno. Sin embargo, todos los plugins de Jenkins SCM integran la información de registro de cambios, como puede ver a través del enlace "Cambios" en la interfaz de usuario web para cada compilación.
Esta información también está disponible a través de la API de Jenkins, incluso mientras se desarrolla una compilación.
Por ejemplo, si agrega un paso de compilación "Ejecutar shell" donde ejecuta este comando:
curl -s "http://jenkins/job/my-job/$BUILD_NUMBER/api/xml?wrapper=changes&xpath=//changeSet//comment"
Obtendrás un documento XML similar a esto:
<changes>
<comment>First commit.</comment>
<comment>Second commit.</comment>
</changes>
A continuación, puede formatear esta información como desee y colocarla en una variable de entorno que luego se puede consultar en la sección "Crear notas" de TestFlight.
Sin embargo, establecer una variable de entorno en un paso de compilación no es persistente por defecto; para hacerlo, se requiere el uso del complemento EnvInject .
En este caso, podría escribir su texto de registro de cambios en un archivo temporal con contenidos como:
CHANGELOG="New in this build:/n- First commit./n- Second commit."
Luego, al usar un paso de compilación con la opción de ruta del archivo de propiedades del entorno para cargar este archivo, la variable $CHANGELOG
existiría en su entorno y persistiría hasta el final de la compilación, permitiéndole usarla en el campo "Crear notas".
Nota: No he usado el plugin TestFlight por mi cuenta (aunque eché un vistazo rápido al código), y solo probé la API de cambios con un repositorio de Git. Del mismo modo, no probé cómo las nuevas líneas deberían codificarse con el complemento EnvInject, por lo que podría causar problemas.