/** * Générer des paquets Debian, RPM, Alpine (ipk) via nfpm * Voir See https://nfpm.goreleaser.com/ * * Options: * - installDir - Répertoire d'installation du binaire nfpm, par défaut /usr/local/bin * - version - Version de nfpm à installer, par défaut 2.15.1 * - forceDownload - Forcer l'installation de nfpm, par défaut false * - config - Fichier de configuration nfpm à utiliser, par défaut nfpm.yaml * - target - Répertoire cible pour nfpm, par défaut ./dist * - packager - Limiter l'exécution de nfpm à un packager spécifique, par défaut "deb" (i.e. pas de limitation) */ void call(Map options = [:]) { String installDir = options.get('installDir', '/usr/local/bin') String version = options.get('version', '2.20.0') Boolean forceDownload = options.get('forceDownload', false) String downloadUrl = options.get('downloadUrl', "https://github.com/goreleaser/nfpm/releases/download/v${version}/nfpm_${version}_Linux_x86_64.tar.gz") String config = options.get('config', 'nfpm.yaml') String target = options.get('target', env.WORKSPACE + '/dist') String packager = options.get('packager', 'deb') String nfpmBin = sh(returnStdout: true, script: 'which nfpm || exit 0').trim() if (nfpmBin == '' || forceDownload) { sh(""" mkdir -p '${installDir}' curl -L '${downloadUrl}' > /tmp/nfpm.tar.gz tar -C /usr/local/bin -xzf /tmp/nfpm.tar.gz """) nfpmBin = "${installDir}/nfpm" } sh(""" mkdir -p '${target}' ${nfpmBin} package --config '${config}' ${packager ? '--packager ' + packager : ''} --target '${target}' """) }