176 lines
6.6 KiB
Groovy
176 lines
6.6 KiB
Groovy
@Library('jenkins-shared-library') _
|
|
|
|
pipeline {
|
|
agent {
|
|
docker {
|
|
image 'ogbrowser-build:latest'
|
|
args '-u root:root'
|
|
label 'jenkins-slave'
|
|
}
|
|
}
|
|
environment {
|
|
DEBIAN_FRONTEND = 'noninteractive'
|
|
DEFAULT_DEV_NAME = 'Opengnsys Team'
|
|
DEFAULT_DEV_EMAIL = 'opengnsys@qindel.com'
|
|
}
|
|
parameters {
|
|
string(name: 'DEV_NAME', defaultValue: '', description: 'Nombre del desarrollador')
|
|
string(name: 'DEV_EMAIL', defaultValue: '', description: 'Email del desarrollador')
|
|
}
|
|
stages {
|
|
stage('Prepare environment') {
|
|
steps {
|
|
sh '''
|
|
apt-get update
|
|
apt-get install -y openssh-client
|
|
mkdir -p debian
|
|
echo "Workspace preparado: ${WORKSPACE}"
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Install Dependencies') {
|
|
steps {
|
|
sshagent (credentials: ['aptly-key']) {
|
|
sh '''
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install -y build-essential cmake g++ qt6-base-dev qt6-webengine-dev linguist-qt6 libgl1-mesa-dev qt6-tools-dev qt6-l10n-tools qt6-tools-dev-tools libqt6core5compat6-dev lxqt-build-tools qt6-webengine-dev-tools libqt6webenginecore6-bin ninja-build
|
|
|
|
# Verificar conexión con aptly
|
|
aptly=172.17.8.68
|
|
ssh aptly@${aptly} -o StrictHostKeyChecking=no "uptime"
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Generate Changelog') {
|
|
when {
|
|
expression { return env.TAG_NAME != null }
|
|
}
|
|
steps {
|
|
script {
|
|
def devName = params.DEV_NAME ? params.DEV_NAME : env.DEFAULT_DEV_NAME
|
|
def devEmail = params.DEV_EMAIL ? params.DEV_EMAIL : env.DEFAULT_DEV_EMAIL
|
|
|
|
// Generar changelog en el workspace root (donde está el directorio debian)
|
|
generateDebianChangelog(env.WORKSPACE, devName, devEmail)
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Generate Changelog (Nightly)') {
|
|
when { branch 'main' }
|
|
steps {
|
|
script {
|
|
def devName = params.DEV_NAME ? params.DEV_NAME : env.DEFAULT_DEV_NAME
|
|
def devEmail = params.DEV_EMAIL ? params.DEV_EMAIL : env.DEFAULT_DEV_EMAIL
|
|
|
|
// Generar changelog nightly en el workspace root
|
|
generateDebianChangelog(env.WORKSPACE, devName, devEmail, 'nightly')
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Verify Changelog') {
|
|
steps {
|
|
sh '''
|
|
echo "=== Verificando changelog generado ==="
|
|
echo "Workspace: ${WORKSPACE}"
|
|
ls -la debian/ || echo "❌ No existe directorio debian"
|
|
if [ -f debian/changelog ]; then
|
|
echo "✅ Changelog encontrado:"
|
|
head -5 debian/changelog
|
|
else
|
|
echo "❌ No existe archivo changelog"
|
|
fi
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Build') {
|
|
steps {
|
|
sh '''
|
|
echo "=== Preparando build ==="
|
|
mkdir -p build
|
|
cd build
|
|
|
|
echo "=== Verificando estructura antes de CMake ==="
|
|
echo "Directorio actual: $(pwd)"
|
|
echo "Buscando changelog en: ../debian/changelog"
|
|
ls -la ../debian/changelog || echo "❌ Changelog no encontrado"
|
|
|
|
echo "=== Configurando CMake ==="
|
|
cmake .. -G Ninja
|
|
|
|
echo "=== Compilando ==="
|
|
ninja
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Create package') {
|
|
steps {
|
|
sh '''
|
|
cd build
|
|
|
|
echo "=== Verificando configuración de versión ==="
|
|
cmake -L . | grep -i "cpack.*version" || echo "No hay variables de versión configuradas"
|
|
|
|
echo "=== Creando paquete Debian ==="
|
|
cpack -G DEB --verbose
|
|
|
|
echo "=== Paquetes generados ==="
|
|
ls -la *.deb
|
|
|
|
echo "=== Información del paquete ==="
|
|
PACKAGE_FILE=$(ls *.deb | head -1)
|
|
dpkg-deb --info "$PACKAGE_FILE" | head -20
|
|
|
|
echo "=== Verificando contenido del paquete ==="
|
|
dpkg-deb --control "$PACKAGE_FILE" extracted_control
|
|
if [ -f extracted_control/changelog.Debian.gz ]; then
|
|
echo "✅ Changelog incluido en el paquete"
|
|
else
|
|
echo "❌ Changelog NO incluido en el paquete"
|
|
fi
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage("Upload package to Aptly") {
|
|
steps {
|
|
sshagent (credentials : ['aptly-key']) {
|
|
withCredentials([string(credentialsId: 'aptly-gpg-passphrase', variable: 'GPG_PASSPHRASE')]) {
|
|
sh '''
|
|
aptly=172.17.8.68
|
|
|
|
# Detectar automáticamente el nombre del paquete generado
|
|
PACKAGE_FILE=$(ls build/*.deb | head -1)
|
|
PACKAGE_NAME=$(basename "$PACKAGE_FILE")
|
|
echo "📦 Subiendo paquete: $PACKAGE_NAME"
|
|
|
|
# Verificar que el archivo existe
|
|
if [ ! -f "$PACKAGE_FILE" ]; then
|
|
echo "❌ Error: No se encontró el paquete generado"
|
|
exit 1
|
|
fi
|
|
|
|
# Subir el paquete
|
|
scp -o StrictHostKeyChecking=no "$PACKAGE_FILE" aptly@${aptly}:/tmp/
|
|
ssh aptly@${aptly} -o StrictHostKeyChecking=no "aptly repo add opengnsys /tmp/$PACKAGE_NAME"
|
|
|
|
echo "✅ Paquete subido correctamente: $PACKAGE_NAME"
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
} |