tag - Sube el artefacto de compilación a Github como lanzamiento en Jenkins
git tags best practices (2)
Estoy buscando una forma de cargar un artefacto de compilación como Github Release en Jenkins como acción posterior a la compilación o editor, similar a Publish Over .
Esto aún no es compatible con el complemento de Github para Jenkins ( JENKINS-18598 ).
He estado buscando en el postbuild-task , pero esto no parece ser compatible con las variables de entorno (lo que supongo que sería útil para evitar el registro de mi token de API en la salida de compilación).
¿Alguien ha hecho esto, todavía? ¿Cuál sería una buena manera de resolver esto con Jenkins? Cargar a través de cURL o mediante un cliente CLI (por ejemplo, el github-release basado en github-release ).
¡Creo que estás en el buen camino!
- Agrega el complemento de la tarea de compilación posterior a Jenkins
- Use la opción ''Ejecutar script solo si todos los pasos anteriores fueron exitosos''
- Crearía los parámetros de Jenkins para el nombre de la versión, el nombre de la etiqueta, etc. y los guardaría junto con sus credenciales en un archivo como último paso en el proceso de compilación (antes de la ejecución de la tarea posterior a la compilación).
- Agregue un script corto al paso de la tarea de compilación posterior que llama a la API de Github:
- Establece las variables de entorno de tu archivo guardado y elimínalo
- CURL POST para https://developer.github.com/v3/repos/releases/#create-a-release (Puede usar el complemento Jenkings Groovy post build en lugar del complemento post build task y acceder a las variables de entorno sin guardarlas en un archivo, pero agregaría tanta complejidad que no vale la pena usar ese complemento.)
- CURL POST para cargar el artefacto: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
Lo resolví usando la github-release . Funciona como un encanto y muy fácil.
- Añadir unos parámetros relevantes a la compilación.
- Agrega un script de shell a tus pasos de compilación
- Introduce este código:
echo "Compressing artifacts into one file"
zip -r artifacts.zip artifacts_folder
echo "Exporting token and enterprise api to enable github-release tool"
export GITHUB_TOKEN=$$$$$$$$$$$$
export GITHUB_API=https://git.{your domain}.com/api/v3 # needed only for enterprise
echo "Deleting release from github before creating new one"
github-release delete --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME}
echo "Creating a new release in github"
github-release release --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${VERSION_NAME}"
echo "Uploading the artifacts into github"
github-release upload --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${PROJECT_NAME}-${VERSION_NAME}.zip" --file artifacts.zip