documentazione_3di_riservata:manuali_sysadmin:obs_packages
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
documentazione_3di_riservata:manuali_sysadmin:obs_packages [2015/12/31 16:20] – [Script makexweepackage] aalberghini | documentazione_3di_riservata:manuali_sysadmin:obs_packages [Data sconosciuta] (versione attuale) – eliminata - modifica esterna (Data sconosciuta) 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
- | ====== Open Build Service: creazione pacchetti ====== | ||
- | |||
- | ===== Introduzione ===== | ||
- | |||
- | [[http:// | ||
- | |||
- | L'Open Build Service (OBS)[(obs_site> | ||
- | |||
- | Le caratteristiche principali di questo sistema sono le seguenti: | ||
- | - gestione dei pacchetti raggruppati in progetti, staccati l'uno dall' | ||
- | - compilazione dei sorgenti in ambienti isolati e sempre congruenti | ||
- | - creazione automatica repository pacchetti | ||
- | - versioning dei file di specifica e dei sorgenti utilizzati, in maniera simile a CVS/SVN | ||
- | - API web per poter automatizzare certi aspetti delle build tramite chiamate HTTP | ||
- | |||
- | <WRAP round important> | ||
- | Quello che questo sistema non è in grado di effettuare (almeno per il momento) è l' | ||
- | </ | ||
- | |||
- | Ogni sistema OBS presenta tre servizi agli utenti: | ||
- | - l' | ||
- | - i repository dei pacchetti realizzati, normalmente su porta 82 | ||
- | - la web API, esposta normalmente su porta HTTPS [(obs_webapiport)] | ||
- | |||
- | Di queste componenti verrà effettuato un excursus nelle prossime sezioni. | ||
- | |||
- | Attualmente il sistema OBS è in uso per produrre i pacchetti Centos/ | ||
- | |||
- | ===== Ambienti installati ===== | ||
- | |||
- | Attualmente sono installati 2 ambienti OBS in 3DI: | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | Entrambi i sistemi sono installati all' | ||
- | |||
- | ===== Operazioni fondamentali ===== | ||
- | |||
- | ==== Creazione di un nuovo progetto ==== | ||
- | |||
- | ==== Creazione di un nuovo pacchetto ==== | ||
- | |||
- | ==== Checkout di un intero progetto ==== | ||
- | |||
- | ==== Checkout di un pacchetto ==== | ||
- | |||
- | ==== Deploy di un pacchetto ==== | ||
- | |||
- | ==== Deploy di un pacchetto - CURL ==== | ||
- | |||
- | ===== Procedura di rilascio per eXtraWay Enterprise ===== | ||
- | |||
- | Ad ogni nuova release di eXtraWay Enterprise, i passi da seguire sono i seguenti: | ||
- | * creare un nuovo tarball di sorgenti mediante lo script makexweepackage.sh | ||
- | * caricare il tarball creato su \\storage\SRC_REPO\3di\xwee\xwee (per mantenere uno storico) | ||
- | * aggiornare il file .spec relativo ad xwee, modificando la versione in modo da puntare al nuovo tarball | ||
- | * aggiornare la sezione changelog in coda al file .spec con la data corretta ed il dettaglio delle modifiche al pacchetto | ||
- | * deploy dei nuovi sorgenti (sia .spec sia sorgenti veri e propri di xwee) sul corretto progetto OBS | ||
- | |||
- | ==== Script makexweepackage ==== | ||
- | |||
- | Questo script è stato realizzato per creare un tarball di sorgenti omnicomprensivo della distribuzione di eXtraWay Enterprise, poiché il progetto è stato spezzato in due parti (core e modules) a livello di sorgenti. | ||
- | |||
- | La struttura che viene approntata all' | ||
- | |||
- | **REQUISITI per l' | ||
- | |||
- | È necessario specificare il proprio utente CVS per poter effettuare i vari checkout mediante la variabile CVSUSER. Tale variabile può essere specificata in due modi: | ||
- | * mediante variabile d' | ||
- | * modificandone la definizione nello script | ||
- | |||
- | Ovviamente l' | ||
- | |||
- | Lo script richiede diversi parametri per funzionare, i quali permettono sostanzialmente di specificare con precisione quale versione scaricare di entrambi i progetti. | ||
- | |||
- | === Esempi di utilizzo dello script === | ||
- | |||
- | Scaricamento di entrambi i progetti in versione HEAD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento di entrambi i progetti ad una particolare data YYYYMMDD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento di entrambi i progetti al tag XYZ: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core come HEAD e del modulo modules al tag XYZ: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core come HEAD e del modulo modules alla data YYYYMMDD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core al tag XYZ e del modulo modules alla HEAD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core alla data YYYYMMDD e del modulo modules alla HEAD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core al tag XYZ e del modulo modules al tag ZYX: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core al tag XYZ e del modulo modules alla data YYYYMMDD: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core alla data YYYYMMDD e del modulo modules al tag XYZ: | ||
- | |||
- | <code bash> | ||
- | |||
- | Scaricamento del modulo core alla data YYYYMMDD e del modulo modules alla data YYYYMMDD2: | ||
- | |||
- | <code bash> | ||
- | |||
- | === Codice dello script === | ||
- | |||
- | |||
- | <code bash makexweepackage.sh> | ||
- | #!/bin/bash -x | ||
- | # Author: Alan Alberghini 2015 | ||
- | # Version: 1.0 | ||
- | |||
- | |||
- | PRGNAM=xwee | ||
- | DATE=" | ||
- | VERSION=${VERSION: | ||
- | OUTDIR=${OUTDIR: | ||
- | CWD=" | ||
- | |||
- | set -e | ||
- | |||
- | ##### CVS INFORMATION ################## | ||
- | |||
- | CVSUSER=${CVSUSER: | ||
- | |||
- | XWEE_CVSROOT=: | ||
- | XWEE_MODS_CVSROOT=: | ||
- | |||
- | XWEE_CVSNAME=eXtraWay.EE.core | ||
- | XWEE_MODS_CVSNAME=eXtraWay.EE.modules | ||
- | |||
- | XWEE_TAG=${XWEE_TAG: | ||
- | XWEE_MODS_TAG=${XWEE_TAG: | ||
- | |||
- | |||
- | ###### END OF CVS INFORMATION ########### | ||
- | |||
- | # Checkout project from CVS | ||
- | # Arguments: | ||
- | # $1: CVSROOT | ||
- | # $2: MODULE | ||
- | # $3: HEAD | TAG | DATE | ||
- | # $4: the specific tag or date, depending on $2 | ||
- | |||
- | function project_checkout() { | ||
- | | ||
- | | ||
- | CVSROOT=$1 | ||
- | MODULE=$2 | ||
- | | ||
- | cat << EOF | ||
- | Checking out project $MODULE with this information: | ||
- | CVSROOT: | ||
- | VERSION: | ||
- | VERSION_SPEC: | ||
- | EOF | ||
- | |||
- | case $3 in | ||
- | HEAD) | ||
- | CVSROOT=" | ||
- | ;; | ||
- | TAG) | ||
- | CVSROOT=" | ||
- | ;; | ||
- | DATE) | ||
- | CVSROOT=" | ||
- | ;; | ||
- | *) | ||
- | echo "Are you trying to bug me?" | ||
- | exit 1 | ||
- | ;; | ||
- | esac | ||
- | } | ||
- | |||
- | |||
- | function print_usage () { | ||
- | cat << EOF | ||
- | Usage: | ||
- | $(basename $0) OPTIONS | ||
- | Where options can be: | ||
- | |||
- | -h Downloads head revision for both projects | ||
- | -t TAG Downloads tag TAG for both projects | ||
- | -d DATE Downloads version due on date DATE for both projects | ||
- | -xh | -xt TAG | -xd DATE | ||
- | Downloads head, tag or date revision for the xwee project | ||
- | -mh | -mt TAG | -md DATE | ||
- | Downloads head, tag or date revisione for the modules project | ||
- | -v Set a version tag for the output archive instead of the default date (YYYYMMDD) | ||
- | EOF | ||
- | } | ||
- | |||
- | |||
- | if [ $# -eq 0 ] | ||
- | then | ||
- | print_usage | ||
- | exit 0 | ||
- | fi | ||
- | |||
- | XWEE_VERSION="" | ||
- | XWEE_MODULES_VERSION="" | ||
- | XWEE_VERSION_SPEC="" | ||
- | XWEE_MODULES_VERSION_SPEC="" | ||
- | |||
- | # Simple parameters parsing | ||
- | while getopts "h t:d: v: xh xt:xd: mh mt: | ||
- | do | ||
- | case " | ||
- | h) | ||
- | XWEE_VERSION=HEAD | ||
- | XWEE_MODULES_VERSION=HEAD | ||
- | ;; | ||
- | t) | ||
- | XWEE_VERSION=TAG | ||
- | XWEE_MODULES_VERSION=TAG | ||
- | XWEE_VERSION_SPEC=" | ||
- | XWEE_MODULES_VERSION_SPEC=" | ||
- | ;; | ||
- | d) | ||
- | XWEE_VERSION=DATE | ||
- | XWEE_MODULES_VERSION=DATE | ||
- | XWEE_VERSION_SPEC=" | ||
- | XWEE_MODULES_VERSION_SPEC=" | ||
- | ;; | ||
- | v) | ||
- | VERSION=" | ||
- | ;; | ||
- | xh) | ||
- | XWEE_VERSION=HEAD | ||
- | ;; | ||
- | xt) | ||
- | XWEE_VERSION=TAG | ||
- | XWEE_VERSION_SPEC=" | ||
- | ;; | ||
- | xd) | ||
- | XWEE_VERSION=DATE | ||
- | XWEE_VERSION_SPEC=" | ||
- | ;; | ||
- | mh) | ||
- | XWEE_MODULES_VERSION=HEAD | ||
- | ;; | ||
- | mt) | ||
- | XWEE_MODULES_VERSION=TAG | ||
- | XWEE_MODULES_VERSION_SPEC=" | ||
- | ;; | ||
- | md) | ||
- | XWEE_MODULES_VERSION=DATE | ||
- | XWEE_MODULES_VERSION_SPEC=" | ||
- | ;; | ||
- | *) | ||
- | echo "Are you trying to bug me?" | ||
- | exit 1 | ||
- | ;; | ||
- | esac | ||
- | done | ||
- | |||
- | if [ -z " | ||
- | then | ||
- | echo " | ||
- | echo " | ||
- | echo " | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | export CVS_RSH=ssh | ||
- | |||
- | TMPDIR=$(mktemp -d) | ||
- | |||
- | cd " | ||
- | |||
- | # Checkout xwee.core | ||
- | project_checkout " | ||
- | cd " | ||
- | # Checkout xwee.modules inside xwee.core/ | ||
- | project_checkout " | ||
- | # Remove CVS metadata folders | ||
- | find . -type d -name CVS -exec rm -rf {} \; || true | ||
- | # Remove test targets | ||
- | #find . -type d -name test\* -exec rm -rf {} \; || true | ||
- | # Move xwee.modules folder contents inside src/ | ||
- | mv -t . " | ||
- | rm -r " | ||
- | |||
- | # Add an info file for the sources | ||
- | cat > checkout.info << EOF | ||
- | Checkout date: $DATE | ||
- | |||
- | $XWEE_CVSNAME version: $XWEE_VERSION version_spec: | ||
- | |||
- | $XWEE_MODS_CVSNAME version: $XWEE_MODULES_VERSION version_spec: | ||
- | EOF | ||
- | |||
- | cd .. | ||
- | mv src " | ||
- | tar vcjf " | ||
- | cd " | ||
- | rm -rf " | ||
- | </ | ||
- | |||
- | |||
- | ===== Gestione pacchetti ===== | ||
- | |||
- | ==== Scaricamento pacchetto tramite OSC ==== | ||
- | |||
- | ==== Deploy tramite OSC ==== | ||
- | |||
- | ==== Deploy tramite CURL ==== | ||
- | |||
- | |||
- | |||
- | ===== Riferimenti esterni ===== | ||
- | |||
- | [(obs_site> | ||
- | |||
- | [(obs_tutorial> | ||
- | |||
- | [(obs_webapiport> | ||
- | |||
- | [(obs_isolated> | ||
- | |||
- | |||
- | [[https:// | ||
- | |||
- | [[https:// | ||
- | |||
- | [[https:// | ||
- | |||
- | [[https:// | ||
- | |||
- | [[https:// | ||
- | |||
- | [[http:// | ||
- | |||
- | [[https:// | ||
- | |||
- | |||
/data/attic/documentazione_3di_riservata/manuali_sysadmin/obs_packages.1451575213.txt.gz · Ultima modifica: 2017/09/08 10:59 (modifica esterna)