Strumenti Utente

Strumenti Sito


documentazione_3di_riservata:manuali_sviluppo:obs:home

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
documentazione_3di_riservata:manuali_sviluppo:obs:home [2016/01/28 19:16] aalberghinidocumentazione_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://openbuildservice.org/|{{ :documentazione_3di_riservata:manuali_sviluppo:obs:obs-logo.png }}]] 
- 
-L'Open Build Service (OBS)[(obs_site>)] è un sistema realizzato da Suse per centralizzare la gestione della creazione di pacchetti per la loro distro e altre. 
- 
-Le caratteristiche principali di questo sistema sono le seguenti: 
-  - gestione dei pacchetti raggruppati in progetti, staccati l'uno dall'altro 
-  - 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'esecuzione di build che prevedano lo scaricamento di qualsiasi tipo di informazione da internet, in quanto gli ambienti all'interno dei quali vengono effettuate le build sono isolati dalla rete per garantire la coerenza delle build.[(obs_isolated)] 
-</WRAP> 
- 
-Ogni sistema OBS presenta tre servizi agli utenti: 
-  - l'interfaccia di gestione web (la webui), normalmente su HTTPS 
-  - 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/Redhat di eXtraWay Enterprise Edition. 
- 
-===== Ambienti installati ===== 
- 
-Attualmente sono installati 2 ambienti OBS in 3DI: 
-  * [[http://obs-test.bo.priv | obs-test.bo.priv]], che contiene un'istanza OBS v2.4 sulla quale sono stati fatti i primi test di compilazione di extraway enterprise per Centos7; 
-  * [[http://obs.bo.priv | obs.bo.priv]], che contiene un'istanza OBS v2.6, sulla quale sono stati copiati i pacchetti realizzati su obs-test e sulla quale si è proseguito con la creazione di nuovi pacchetti. 
- 
-Entrambi i sistemi sono installati all'interno di due macchine virtuali senza grosse potenzialità computazionali, per cui si caldeggia, in vista di compilazioni consistenti, di istanziare un certo numero di OBS worker su altre macchine client più potenti e non sottoposte ad altri carichi per parallelizzare le build. 
- 
-===== Operazioni fondamentali ===== 
- 
-==== Creazione di un nuovo progetto ==== 
- 
-=== Da webui === 
- 
-  - Dopo aver effettuato l'accesso, selezionare ''All Projects'' {{ :documentazione_3di_riservata:manuali_sviluppo:obs:obs_01.png?300 |}} 
-  - Selezionare ''Create new project'' {{ :documentazione_3di_riservata:manuali_sviluppo:obs:obs_02.png?300 |}} 
-  - Inserire gli estremi del nuovo progetto, ovvero un nome, un titolo ed una descrizione (opzionale) e cliccare su ''Create Project''{{ :documentazione_3di_riservata:manuali_sviluppo:obs:obs_03.png?300 |}} 
- 
-=== Tramite OSC === 
- 
-  - Immettere il seguente comando <code bash>osc -A ALIAS meta prj -e [project]</code> dove ALIAS indica l'alias configurato in ''~/.oscrc'' da utilizzare per puntare all'host corretto 
-  - 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'interno del tarball è già quella attesa dagli script .spec utilizzati per la creazione dei pacchetti RPM. 
- 
-**REQUISITI per l'utilizzo** 
- 
-È 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'ambiente, eg. <code bash>CVSUSER=pinco-pallino-3di ./makexweepackage.sh</code> 
-  * modificandone la definizione nello script 
- 
-Ovviamente l'utente specificato dovrà avere permesso di accesso al percorso /opt/cvs/xw sul CVS, ovvero dovrà far parte del gruppo **xwdevel** sul server CVS. 
- 
-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>./makexweepackage.sh -h</code> 
- 
-Scaricamento di entrambi i progetti ad una particolare data YYYYMMDD: 
- 
-<code bash>./makexweepackage.sh -d YYYYMMDD</code> 
- 
-Scaricamento di entrambi i progetti al tag XYZ: 
- 
-<code bash>./makexweepackage.sh -t XYZ</code> 
- 
-Scaricamento del modulo core come HEAD e del modulo modules al tag XYZ: 
- 
-<code bash>./makexweepackage.sh -xh -mt XYZ</code> 
- 
-Scaricamento del modulo core come HEAD e del modulo modules alla data YYYYMMDD: 
- 
-<code bash>./makexweepackage.sh -xh -md YYYYMMDD</code> 
- 
-Scaricamento del modulo core al tag XYZ e del modulo modules alla HEAD: 
- 
-<code bash>./makexweepackage.sh -xt XYZ -mh</code> 
- 
-Scaricamento del modulo core alla data YYYYMMDD e del modulo modules alla HEAD: 
- 
-<code bash>./makexweepackage.sh -xd YYYYMMDD -mh</code> 
- 
-Scaricamento del modulo core al tag XYZ e del modulo modules al tag ZYX: 
- 
-<code bash>./makexweepackage.sh -xt XYZ -mt ZYX</code> 
- 
-Scaricamento del modulo core al tag XYZ e del modulo modules alla data YYYYMMDD: 
- 
-<code bash>./makexweepackage.sh -xt XYZ -md YYYYMMDD</code> 
- 
-Scaricamento del modulo core alla data YYYYMMDD e del modulo modules al tag XYZ: 
- 
-<code bash>./makexweepackage.sh -xd YYYYMMDD -mt XYZ</code> 
- 
-Scaricamento del modulo core alla data YYYYMMDD e del modulo modules alla data YYYYMMDD2: 
- 
-<code bash>./makexweepackage.sh -xd YYYYMMDD -mt YYYYMMDD2</code> 
- 
-=== Codice dello script === 
- 
- 
-<code bash makexweepackage.sh> 
-#!/bin/bash -x 
-# Author: Alan Alberghini 2015 
-# Version: 1.0 
- 
- 
-PRGNAM=xwee 
-DATE="$(date +%Y%m%d)" 
-VERSION=${VERSION:-$DATE} 
-OUTDIR=${OUTDIR:-/tmp} 
-CWD="$(pwd)" 
- 
-set -e 
- 
-##### CVS INFORMATION ################## 
- 
-CVSUSER=${CVSUSER:-aalberghini-3di} 
- 
-XWEE_CVSROOT=:ext:"${CVSUSER}"@cvs.3di.it:/opt/cvs/xw 
-XWEE_MODS_CVSROOT=:ext:"${CVSUSER}"@cvs.3di.it:/opt/cvs/xw 
- 
-XWEE_CVSNAME=eXtraWay.EE.core 
-XWEE_MODS_CVSNAME=eXtraWay.EE.modules 
- 
-XWEE_TAG=${XWEE_TAG:-xwee_20151008} 
-XWEE_MODS_TAG=${XWEE_TAG:-xwee_20151008} 
- 
- 
-###### 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:        $CVSROOT 
-VERSION:        $3 
-VERSION_SPEC:   $4 
-EOF 
- 
-        case $3 in 
-        HEAD) 
-                CVSROOT="${CVSROOT}" cvs co "${MODULE}"  
-                ;; 
-        TAG) 
-                CVSROOT="${CVSROOT}" cvs co -r "${4}" "${MODULE}"  
-                ;; 
-        DATE) 
-                CVSROOT="${CVSROOT}" cvs co -D "${4}" "${MODULE}"  
-                ;; 
-        *) 
-                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:md:" OPTION 
-do 
-        case "$OPTION" in 
-        h) 
-                XWEE_VERSION=HEAD 
-                XWEE_MODULES_VERSION=HEAD 
-                ;; 
-        t) 
-                XWEE_VERSION=TAG 
-                XWEE_MODULES_VERSION=TAG 
-                XWEE_VERSION_SPEC="$OPTARG" 
-                XWEE_MODULES_VERSION_SPEC="$OPTARG" 
-                ;; 
-        d) 
-                XWEE_VERSION=DATE 
-                XWEE_MODULES_VERSION=DATE 
-                XWEE_VERSION_SPEC="$OPTARG" 
-                XWEE_MODULES_VERSION_SPEC="$OPTARG" 
-                ;; 
-        v) 
-                VERSION="$OPTARG" 
-                ;; 
-        xh) 
-                XWEE_VERSION=HEAD 
-                ;; 
-        xt) 
-                XWEE_VERSION=TAG 
-                XWEE_VERSION_SPEC="$OPTARG" 
-                ;; 
-        xd) 
-                XWEE_VERSION=DATE 
-                XWEE_VERSION_SPEC="$OPTARG" 
-                ;; 
-        mh) 
-                XWEE_MODULES_VERSION=HEAD 
-                ;; 
-        mt) 
-                XWEE_MODULES_VERSION=TAG 
-                XWEE_MODULES_VERSION_SPEC="$OPTARG" 
-                ;; 
-        md) 
-                XWEE_MODULES_VERSION=DATE 
-                XWEE_MODULES_VERSION_SPEC="$OPTARG" 
-                ;; 
-        *) 
-                echo "Are you trying to bug me?" 
-                exit 1 
-                ;; 
-        esac 
-done 
- 
-if [ -z "$XWEE_VERSION" -o -z "$XWEE_MODULES_VERSION" ] 
-then 
-        echo "You're missing a version specification:" 
-        echo "XWEE_VERSION=$XWEE_VERSION" 
-        echo "XWEE_MODULES_VERSION=$XWEE_MODULES_VERSION" 
-        exit 1 
-fi 
- 
-export CVS_RSH=ssh 
- 
-TMPDIR=$(mktemp -d) 
- 
-cd "$TMPDIR" 
- 
-# Checkout xwee.core 
-project_checkout "$XWEE_CVSROOT" "$XWEE_CVSNAME" "$XWEE_VERSION" "$XWEE_VERSION_SPEC" 
-cd "${XWEE_CVSNAME}"/src 
-# Checkout xwee.modules inside xwee.core/src 
-project_checkout "$XWEE_MODS_CVSROOT" "$XWEE_MODS_CVSNAME" "$XWEE_MODULES_VERSION" "$XWEE_MODULES_VERSION_SPEC" 
-# 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 . "${XWEE_MODS_CVSNAME}/"* 
-rm -r "${XWEE_MODS_CVSNAME}" 
- 
-# Add an info file for the sources 
-cat  > checkout.info << EOF 
-Checkout date: $DATE 
- 
-$XWEE_CVSNAME version: $XWEE_VERSION version_spec: $XWEE_VERSION_SPEC 
- 
-$XWEE_MODS_CVSNAME version: $XWEE_MODULES_VERSION version_spec: $XWEE_MODULES_VERSION_SPEC 
-EOF 
- 
-cd .. 
-mv src "${PRGNAM}-${VERSION}" 
-tar vcjf "${OUTDIR}/${PRGNAM}-${VERSION}.tar.bz2" "${PRGNAM}-${VERSION}" 
-cd "$CWD" 
-rm -rf "$TMPDIR" 
-</code> 
- 
- 
-===== Gestione pacchetti ===== 
- 
-==== Scaricamento pacchetto tramite OSC ==== 
- 
-==== Deploy tramite OSC ==== 
- 
-==== Deploy tramite CURL ==== 
- 
- 
- 
-===== Riferimenti esterni ===== 
- 
-[(obs_site>[[http://openbuildservice.org/ | Sito ufficiale del progetto]])] 
- 
-[(obs_tutorial>[[https://en.opensuse.org/openSUSE:Build_Service_Tutorial  | Tutorial iniziale]])] 
- 
-[(obs_webapiport>Nelle versioni precedenti la 2.6 di OBS, la porta per la web API era la 444)] 
- 
-[(obs_isolated>[[http://stackoverflow.com/a/33789070]])] 
- 
- 
-[[https://wiki.merproject.org/wiki/OBS_Setup#Install_the_Worker_Packages | Setup di un OBS Worker ]] 
- 
-[[https://en.opensuse.org/openSUSE:Build_Service_private_instance_software_delivery | Modalità di delivery dei pacchetti/repository ]] 
- 
-[[https://en.opensuse.org/openSUSE:Build_Service_Developer_Documentation | Documentazione per lo sviluppo ]] 
- 
-[[https://github.com/openSUSE/open-build-service | Home page del progetto su Github]] 
- 
-[[https://en.opensuse.org/openSUSE:OSC | Documentazione su OSC ]] 
- 
-[[http://openbuildservice.org/help/manuals/obs-best-practices/cha.obs.best-practices.oscexamples.html | Tutorial su OSC ]] 
- 
-[[https://wiki.tizen.org/wiki/OBS_Worker_Docker_image | Immagine docker per un OBS Worker]] 
- 
- 
  
/data/attic/documentazione_3di_riservata/manuali_sviluppo/obs/home.1454004989.txt.gz · Ultima modifica: 2017/09/08 10:59 (modifica esterna)