documentazione_3di_riservata:manuali_sviluppo:obs:home
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_sviluppo:obs:home [2016/02/09 15:20] – [Script makexweepackage] rtirabassi | documentazione_3di_riservata:manuali_sviluppo:obs:home [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 ==== | ||
| - | |||
| - | === Da webui === | ||
| - | |||
| - | - Dopo aver effettuato l' | ||
| - | - Selezionare '' | ||
| - | - Inserire gli estremi del nuovo progetto, ovvero un nome, un titolo ed una descrizione (opzionale) e cliccare su '' | ||
| - | |||
| - | === Tramite OSC === | ||
| - | |||
| - | - Immettere il seguente comando <code bash>osc -A ALIAS meta prj -e [project]</ | ||
| - | - Verrà aperto un editor di un file XML che contiene i metadati del nuovo progetto (o di un progetto già esistente, nel caso il nome indicato esista già). | ||
| - | - Inserire i dati del nuovo progetto e salvare. | ||
| - | |||
| - | ==== 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, Roberto Tirabassi 2016 | ||
| - | # Version: 1.1 | ||
| - | |||
| - | |||
| - | 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 ===== | ||
| - | |||
| - | ==== Info generali ==== | ||
| - | [(obs_site> | ||
| - | |||
| - | [(obs_tutorial> | ||
| - | |||
| - | [(obs_webapiport> | ||
| - | |||
| - | [(obs_isolated> | ||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | ==== OSC ==== | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | [[http:// | ||
| - | |||
| - | ==== Workers ==== | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
/data/attic/documentazione_3di_riservata/manuali_sviluppo/obs/home.1455027653.txt.gz · Ultima modifica: (modifica esterna)