.load [-o] [-e] [-v] [-j] [<chemin_relatif>/]<nom_fichier>
.load -r|-p <nom_registre>
.load -s `<nom de commande>`
La commande .load permet de charger un projet depuis un fichier XML et d'ajouter les étapes du
projet chargé au projet en cours, après l'étape d'exécution de la
commande .load, ce qui permet de créer et de charger dynamiquement des étapes
en cours d'exécution. A l'aide des options, vous pouvez définir la commande .load de façon à ce qu'elle extraie ses données
dans un registre ou dans le résultat d'une commande.
Pour écrire un fichier XML pour une commande .load, commencez avec un fichier d'exportation
d'un projet existant qui vous donnera la structure basique appropriée.
Vous pouvez aussi créer un projet dans le système, puis l'exporter
pour l'utiliser dans une commande .load. Cette rubrique contient des échantillons de code XML.
Les étapes chargées avec une commande .load peuvent contenir des références à des projets encapsulés ou
chaînés. Par défaut, le système cherche les définitions des projets encapsulés dans le fichier XML, et en charge les étapes ; l'option -e explique comment le système obtient les définitions des projets encapsulés à partir de la base de données. Pour les projets chaînés réussis ou échoués, le système cherche toujours la définition
du projet dans la base de données.
Remarque : Concernant les étapes JPO exécutées à partir d'une commande .load, le projet
ou la bibliothèque Else Inline identifiés doit déjà exister dans le
système ; autrement, l'encapsulage ne s'exécute pas.
Projets simultanés dans des fichiers XML
Le système exportant
des projets incorporés accompagnés de leurs projets appelant, il se peut qu'un fichier XML
contienne plusieurs projets. La commande .load exécute le
projet désigné comme principal dans le fichier. L'attribut
primary="1" est sur l'élément <project> de ce projet.
Options de commandes et paramètres
La forme la plus simple
de cette commande est
.load <nom_fichier>. Vous pouvez inclure un nom de chemin
optionnel (relatif au répertoire de travail) devant le nom de fichier.
Par exemple, la commande
.load ../../project.xml
charge le
projet de fichier .xml à partir du répertoire de serveur (le répertoire qui contient le
projet et les répertoires de travail), en supposant que la propriété du chemin de l'étape est "/"
(valeur par défaut).
Remarque : Lorsqu'une étape normale démarre
un projet encapsulé, le système fait appel à la base de données pour extraire la
définition en cours de ce projet ; lorsqu'une étape importée
par une commande .load démarre un projet encapsulé, le système cherche
les définitions du projet encapsulé dans le fichier XML. Pour savoir comment éviter un tel cas de figure, consultez la description de l'option -e ci-dessous.
Remarque : L'étape
XML générée à partir des versions Build Forge antérieures à 7.1 n'est pas prise en charge
et risque d'échouer car ces éléments sont référencés par un nom plutôt
que par un ID.
Cette
commande est dotée des options suivantes :
- -r ou -p
- Ces options incitent le système à charger les étapes d'un registre. Utilisez la ligne de commande avec ces options.
.load -r|-p <nom_registre>
L'option
-r charge des étapes à partir d'un registre ordinaire, alors que l'option -p charge
des étapes à partir d'un registre de projet. Vous pouvez constituer des données dans un registre au cours d'étapes
antérieures de votre projet, puis charger les étapes à partir du
registre à l'aide de cette commande.
- -s
- Cette option incite le système à exécuter une commande et à utiliser la sortie de cette commande comme données à charger. Utilisez la ligne de commande
.load -s `<nom de commande>`
- -e
- Lorsque l'option -e est définie, le système récupère les projets en ligne auprès de la base de données et non auprès du fichier XML chargé. Il traite la valeur de chainID comme
référence à un ID de projet dans la base de données. Cela permet à votre fichier XML
de référencer la dernière version d'un projet encapsulé, plutôt que celui contenu dans
le fichier XML, ou de référencer un projet qui n'est pas inclus dans le fichier
XML.
- -o
- Utilisez l'option -o pour désactiver les projets incorporés dans le fichier XML.
Lorsque
cette option est utilisée, le système ignore tout projet encapsulé dans le projet
principal. Une étape qui contient une référence à un projet encapsulé en exécute
la commande mais ignore ensuite sa présence.
- -j
- Utilisez l'option -j si les étapes du dernier jeu d'étapes du fichier XML et les étapes qui suivent la commande .load sont conçues avec des unités d'exécution.
L'option -j transforme l'étape conçue avec des unités d'exécution en étape jointe. Sinon, les étapes conçues avec des unités d'exécution font partie du bloc d'étapes conçu avec des unités d'exécution suivant la commande .load.
- -v
- Envoie les contenus du fichier XML chargé dans le terminal d'affichage (stdout).
Echantillon XML
L'exemple suivant montre un
fichier XML à utiliser avec la commande .load. Le fichier XML a été créé en exportant un
projet appelé HelloWorldPlusInline.
Notez les détails de l'exemple de fichier XML
suivant :
- Le fichier XML contient deux éléments <project>.
- Le premier projet du fichier XML est le projet principal; il a les attributs name="HelloWorldPlusInline" et primary="1" .
- Le second projet du fichier XML s'appelle Sleepytime et a l'attribut primary="0", qui
indique qu'il n'est pas le projet principal.
- La première étape de HelloWorldPlusInline est une étape appelée EchoHelloWorld
qui contient une commande d'écho et un attribut chainID.
L'attribut chainID
a une valeur de 2, qui indique que le système devrait incorporer le projet avec
l'ID 2, qui désigne le projet Sleepytime.
Remarque : Ne tenez pas compte de l'attribut d'étape inline;
il s'agit d'un attribut obsolète qui n'est plus utilisé. Toutes les étapes ont cet attribut avec
une valeur de N. Pour savoir si une étape contient un projet encapsulé, cherchez
l'attribut chainID . La valeur de chainID fait référence à
l'ID d'un projet. Par défaut,
le système recherche le projet encapsulé dans le fichier XML, mais
si vous utilisez l'option -e de votre commande .load, le système traite
la valeur comme ID de projet dans la base de données. Cela vous permet
de créer vos propres fichiers .load sans avoir à y inclure de projets encapsulés.
Remarque : L'utilisation de .load avec des fichiers XML générés par Build
Forge versions 7.0.x et des versions antérieures n'est pas prise en charge et ne fonctionnera pas
correctement car l'ancienne syntaxe référence les objets par nom plutôt que par
identificateur unique universel.
- Chaque projet a un attribut id. Cette valeur d'ID est la
même que celle de l'ID du projet dans la base de données. Vous pouvez consulter une liste
d'ID de projet en exécutant la commande suivante à partir de votre répertoire
d'installation :
bfexport -l
- L'attribut commandStore contient une copie du contenu de l'élément
<command> avec certains caractères d'échappement XML. Par exemple,
dans <command>, vous pouvez avoir ", ', &, <, >,
ou une nouvelle ligne. Les caractères sont représentés dans commandStore
respectivement par ", ', &, <, >,
et .
<?xml version="1.0" encoding="UTF-8"?>
<buildforge schema="7.115014" comment="">
<project access="6" active="Y" name="HelloWorldPlusInline" primary="1"
selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0"
buildclass="Production" sticky="N" envId="0" tag="BUILD_$B" id="19" exclusive="0">
<tagvar autoincrement="Y" name="B" id="1">2</tagvar>
<step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N"
timeout="300" id="1" passwait="N" inline="N" threadable="N" chainId="2"
access="6" active="Y" passnotify="0" description="EchoHelloWorld" onfail=" "
failnotify="0" envId="0" commandStore="echo Hello World">
<command>echo Hello World</command>
</step>
<step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N"
timeout="300" id="2" passwait="N" inline="N" threadable="N" access="6"
active="Y" passnotify="0" description="export proj to build and server folders"
onfail=" " failnotify="0" envId="0"
commandStore=".export $BF_PROJECTNAME_PHYS.xml copy /Y $BF_PROJECTNAME_PHYS.xml ..\..">
<command>.export $BF_PROJECTNAME_PHYS.xml
copy /Y $BF_PROJECTNAME_PHYS.xml ..\..</command>
</step>
</project>
<project access="6" active="Y" name="Sleepytime" primary="0"
selectorId="Choose_local" maxthread="0" increment="Y" tagsync="0"
buildclass="Production" sticky="N" envId="0" tag="SLEEP_$B" id="2" exclusive="0">
<tagvar autoincrement="Y" name="B" id="1">21</tagvar>
<step absolute="N" failwait="N" selectorId="" dir="/" broadcast="N"
timeout="300" id="1" passwait="N" inline="N" threadable="N" access="6"
active="Y" passnotify="0" description="Sleep, perchance to dream" onfail=" "
failnotify="0" envId="0" commandStore=".sleep 0">
<command>.sleep 0</command>
</step>
</project>
<class maxdays="0" access="1" entranceprojectId="1" name="Production" keepfiles="B"
deletechangedata="N" purgeprojectId="2" exitProjectId="5" candidates="AnyBuild "
maxbuilds="0"></class>
<selector operator="" required="" access="6" value="" name="Choose_local"
selectorId="" property=""></selector>
</buildforge>