SALSA.FR(1) | SALSA.FR(1) |
salsa - outil pour gérer les projets salsa, les dépôts et les membres des groupes
# salsa <command> <parameters> <options> salsa add_user developer foobar --group-id 2665 salsa delete_user foobar --group js-team salsa search_groups perl-team/modules salsa search_projects qa/qa salsa search_users yadd salsa update_user maintainer foobar --group js-team salsa whoami salsa checkout node-mongodb --group js-team salsa fork salsa fork --group js-team user/node-foo salsa last_ci_status js-team/nodejs salsa pipelines js-team/nodejs salsa mr debian/foo debian/master salsa push_repo . --group js-team --kgb --irc devscripts --tagpending salsa update_projects node-mongodb --group js-team --disable-kgb --desc \ --desc-pattern "Package %p" salsa update_safe --all --desc --desc-pattern "Debian package %p" \ --group js-team
salsa a été conçu pour créer et configurer les dépôts de <https://salsa.debian.org> et gérer les utilisateurs et groupes.
Un jeton Salsa est nécessaire, excepté pour les commandes "search*", et doit être inséré dans la ligne de commande (voir ci-dessus), ou dans le fichier de configuration (~/.devscripts) :
SALSA_TOKEN=abcdefghi
ou
SALSA_TOKEN=`cat ~/.token`
ou
SALSA_TOKEN_FILE=~/.dpt.conf
Si on choisit de lier un autre fichier en utilisant SALSA_TOKEN_FILE, il doit contenir un ligne avec au choix (aucune différence) :
<anything>SALSA_PRIVATE_TOKEN=xxxx <anything>SALSA_TOKEN=xxxx
Ceci permet par exemple d'utiliser le fichier de configuration de dpt(1) (~/.dpt.conf) qui contient :
DPT_SALSA_PRIVATE_TOKEN=abcdefghi
salsa --group js-group add_user guest foouser salsa --group-id 1234 add_user guest foouser salsa --group-id 1234 add_user maintainer 1245
Le premier argument est le niveau d'accès GitLab : guest, reporter, developer, maintainer, owner.
salsa --group js-team delete_user foouser salsa --group-id=1234 delete_user foouser
salsa join js-team salsa join --group js-team salsa join --group-id 1234
salsa --group js-team list_users salsa --group-id 1234 list_users
salsa search_groups perl-team salsa search_groups perl-team/modules salsa search_groups 2666
salsa search_users yadd
salsa --group-id 1234 update_user guest foouser salsa --group js-team update_user maintainer 1245
Le premier argument est le niveau d'accès GitLab : guest, reporter, developer, maintainer, owner.
salsa whoami
Une seule option parmi "--group", "--group-id", "--user" et "--user-id" est nécessaire pour gérer les répertoires. Si les 2 sont indiquées, salsa avertit et utilise seulement "--user"/"--user-id". Si aucune n'est indiquée, salsa utilise l'ID de l'utilisateur courant (propriétaire du jeton).
salsa --user yadd --tagpending --kgb --irc=devscripts check_projects test salsa --group js-team check_projects --all salsa --group js-team --rename-head check_projects test1 test2 test3
salsa --user yadd checkout devscripts salsa --group js-team checkout node-mongodb salsa checkout js-team/node-mongodb
Il est possible de dupliquer plus d'un dépôt ou tous les dépôts d'un groupe ou d'un utilisateur :
salsa --user yadd checkout devscripts autodep8 salsa checkout yadd/devscripts js-team/npm salsa --group js-team checkout --all # All js-team active repositories salsa checkout --all-archived # All your repositories, including archived
salsa --user yadd create_project test salsa --group js-team --kgb --irc-channel=devscripts create_project test
$ salsa fork js-team/node-mongodb --verbose ... salsa.pl info: node-mongodb ready in node-mongodb/ $ cd node-mongodb $ git remote --verbose show origin git@salsa.debian.org:me/node-mongodb (fetch) origin git@salsa.debian.org:me/node-mongodb (push) upstream git@salsa.debian.org:js-team/node-mongodb (fetch) upstream git@salsa.debian.org:js-team/node-mongodb (push)
Pour un groupe :
salsa fork --group js-team user/node-foo
salsa forks qa/qa debian/devscripts
Le projet peut être indiqué en utilisant le chemin complet ou --group/--group-id ou encore --user/--user-id ; sinon il est recherché dans l'espace de l'utilisateur.
salsa push
Il pousse les références suivantes vers le dépôt amont configuré pour la branche debian-branch ou, à défaut, vers le dépôt "origin" :
salsa --group js-team list_projects salsa --user yadd list_projects foo*
salsa --group js-team last_ci_status --all --no-fail salsa --user yadd last_ci_status foo salsa last_ci_status js-team/nodejs
Cette commande retourne le nombre de statuts "failed" trouvés. Les entrées "success" sont affichées en utilisant la sortie standard STDOUT et les autres sont affichées (avec les détails) en utilisant STDERR? Ainsi on peut facilement ne voir que les échecs en utilisant :
salsa --group js-team last_ci_status --all --no-fail >/dev/null
Les options <--no-fail> et --all sont utilisables ici.
Supposons qu'un dépôt ait été créé avec salsa fork, qu'une modification en un seul commit ait été fait et que l'on souhaite la proposer au projet originel (branche "master"). Il suffit de lancer ceci dans le répertoire source :
salsa merge_request
Autre exemple :
salsa merge_request --mr-dst-project debian/foo --mr-dst-branch debian/master
Ou simplement :
salsa merge_request debian/foo debian/master
Noter qu'à moins que le projet de destination ait été explicitement indiqué dans la ligne de commande, salsa merge_request le cherche dans l'ordre suivant :
Pour forcer salsa à utiliser le projet source comme destination, on peut utiliser "same" :
salsa merge_request --mr-dst-project same # or salsa merge_request same
Une nouvelle "merge request" sera créée en utilisant le titre et la description du dernier commit.
See --mr-* options for more.
salsa merge_requests qa/qa debian/devscripts
Le projet peut être indiqué en utilisant le chemin complet ou --group/--group-id ou encore --user/--user-id ; sinon il est recherché dans l'espace de l'utilisateur.
# project branch merge push salsa --group js-team protect_branch node-mongodb master m d
"merge" et "push" peuvent être au choix :
salsa --group js-team protect_branch node-mongodb master no
salsa --group js-team protected_branches node-mongodb
push_repo executes the following steps:
Exemples :
salsa --user yadd push_repo ./test salsa --group js-team --kgb --irc-channel=devscripts push_repo .
salsa search_projects devscripts salsa search_projects debian/devscripts salsa search_projects 18475
salsa --user yadd --tagpending --kgb --irc=devscripts update_projects test salsa --group js-team update_projects --all salsa --group js-team --rename-head update_projects test1 test2 test3 salsa update_projects js-team/node-mongodb --kgb --irc debian-js
Par défaut lorsque --all est utilisé, salsa échoue à la première erreur. Pour pouvoir continuer, indiquer --no-fail. Dans ce cas, salsa affichera un avertissement pour chaque projet en échec mais continuera avec le projet suivant. Pour voir alors les erreurs complètes, utiliser --verbose.
salsa --user yadd --tagpending --kgb --irc=devscripts update_safe test salsa --group js-team update_safe --all salsa --group js-team --rename-head update_safe test1 test2 test3 salsa update_safe js-team/node-mongodb --kgb --irc debian-js
salsa --chdir ~/debian checkout debian/libapache2-mod-fcgid
Valeur ".devscripts" : SALSA_CACHE_FILE
salsa --conf-file test.conf <command>... salsa --conf-file test.conf --conf-file test2.conf <command>...
salsa --conf-file +test.conf <command>... salsa --conf-file +test.conf --conf-file +test2.conf <command>...
Si l'un des --conf-file ne contient pas de "+", les fichiers de configuration par défaut sont ignorés.
Pour utiliser un sous-groupe, il faut en saisir le chemin complet :
salsa --group perl-team/modules/packages check_projects lemonldap-ng
Valeur ".devscripts" : SALSA_GROUP
Attention en utilisant SALSA_GROUP dans votre fichier ".devscripts". Toutes les commandes salsa seront exécutées dans l'espace du groupe. Par exemple si vous voulez proposer un léger changement dans un projet en utilisant salsa fork + salsa merge_request, ce "fork" sera fait dans l'espace du groupe sauf si vous indiquez un --user/--user-id. Préférez utiliser un alias dans votre fichier ".bashrc". Exemple :
alias jsteam_admin="salsa --group js-team"
ou
alias jsteam_admin="salsa --conf-file ~/.js.conf
ou pour utiliser à la fois .devscripts et .js.conf :
alias jsteam_admin="salsa --conf-file +~/.js.conf
on peut alors indiquer SALSA_GROUP dans "~/.js.conf"
Pour activer l'autocomplétion bash pour l'alias, ajouter ceci dans le fichier ".bashrc" :
_completion_loader salsa complete -F _salsa_completion jsteam_admin
Valeur ".devscripts" : SALSA_GROUP_ID
Attention en utilisant SALSA_GROUP_ID dans votre fichier ".devscripts". Toutes les commandes salsa seront exécutées dans l'espace du groupe. Par exemple si vous voulez proposer un léger changement dans un projet en utilisant salsa fork + salsa merge_request, ce "fork" sera créé dans l'espace du groupe sauf si vous indiquez un --user/--user-id. Préférez utiliser un alias dans votre fichier ".bashrc". Exemple :
alias jsteam_admin="salsa --group-id 2666"
ou
alias jsteam_admin="salsa --conf-file ~/.js.conf
on peut alors indiquer SALSA_GROUP_ID dans "~/.js.conf".
Valeur ".devscripts" : SALSA_INFO (yes/no)
Valeur ".devscripts" : SALSA_REPO_PATH
Valeur ".devscripts" : SALSA_USER_ID
Valeur ".devscripts" : SALSA_YES (yes/no)
Valeur ".devscripts" : SALSA_ARCHIVED (yes/no)
salsa update_projects --tagpending --all --skip qa --skip devscripts
Pour indiquer plusieurs valeurs, utiliser des espaces. Exemple :
SALSA_SKIP=qa devscripts
Utiliser --no-skip ignorera tous les projets qui devaient être ignorés et les inclura donc.
Valeur ".devscripts" : SALSA_SKIP
salsa update_projects --tagpending --all --skip-file ~/.skip
Valeur ".devscripts" : SALSA_SKIP_FILE
salsa update_safe myrepo --build-timeout 3600
Valeur ".devscripts" : SALSA_BUILD_TIMEOUT
Valeur ".devscripts" : SALSA_AVATAR_PATH
salsa update_safe --ci-config-path recipes/debian.yml@salsa-ci-team/pipeline debian/devscripts
Valeur ".devscripts" : SALSA_CI_CONFIG_PATH
Valeur ".devscripts" : SALSA_DESC (yes/no)
Valeur ".devscripts" : SALSA_DESC_PATTERN
Valeur ".devscripts" : SALSA_EMAIL (yes/ignore/no, défaut : ignore)
$ salsa update_safe myrepo \ --email-recipient foo@foobar.org \ --email-recipient bar@foobar.org
Si la chaîne destinataire contient la macro "%p", elle sera remplacée par le nom du projet.
Valeur ".devscripts" : SALSA_EMAIL_RECIPIENTS (utiliser des espaces pour séparer les destinataires multiples)
Valeurs ".devscripts" : SALSA_ENABLE_ANALYTICS (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_AUTO_DEVOPS (yes/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_CONTAINER (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_ENVIRONMENTS (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_FEATURE_FLAGS (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_FORKS (yes/private/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_INFRASTRUCTURE (yes/ignore/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_ISSUES (yes/ignore/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_JOBS (yes/private/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_LFS (yes/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_MR (yes/ignore/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_MONITOR (yes/ignore/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_PACKAGES (yes/no, défaut: yes)
Valeurs ".devscripts" : SALSA_ENABLE_PAGES (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_RELEASES (yes/private/no, défaut : yes)
Valeur ".devscripts" : SALSA_REMOVE_SOURCE_BRANCH (yes/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_REPO (yes/ignore/no, défaut: yes)
Valeur ".devscripts" : SALSA_REQUEST_ACCESS (yes/no)
Valeurs ".devscripts" : SALSA_ENABLE_REQUIREMENTS (yes/private/no, défaut : yes)
Valeur ".devscripts" : SALSA_ENABLE_SECURITY_COMPLIANCE (yes/no)
Valeur ".devscripts" : SALSA_ENABLE_SERVICE_DESK (yes/no)
Valeurs ".devscripts" : SALSA_ENABLE_SNIPPETS (yes/private/no, défaut : yes)
Valeurs ".devscripts" : SALSA_ENABLE_WIKI (yes/private/no, défaut : yes)
Important : le canal ne doit pas inclure le premier "#". Si salsa trouve une chaîne commençant par "#", il considerera que le canal démarre par 2 "#" !
Valeur ".devscripts" : SALSA_IRC_CHANNEL
Les valeurs multiples doivent être séparées par des espaces.
Comme le fichier de configuration est lu en utilisant sh, être prudent lorsque "#" est utilisé : il faut alors encadré le canal par des guillemets, sinon sh le considerera comme commentaire et ignorera cette valeur.
Valeur ".devscripts" : SALSA_IRKER (yes/ignore/no, défaut : ignore)
Valeur ".devscripts" : SALSA_IRKER_HOST
Valeur ".devscripts" : SALSA_IRKER_Port
Valeur ".devscripts" : SALSA_KGB (yes/ignore/no, défaut : ignore)
$ salsa update_safe debian/devscripts --kgb --irc-channel devscripts \ --kgb-options 'merge_requests_events,issues_events,enable_ssl_verification'
Liste des options disponibles : confidential_comments_events, confidential_issues_events, confidential_note_events, enable_ssl_verification, issues_events, job_events, merge_requests_events, note_events, pipeline_events, tag_push_events, wiki_page_events
Valeur ".devscripts" : SALSA_KGB_OPTIONS
Valeur ".devscripts" : SALSA_NO_FAIL (yes/no, défaut : no)
Valeur ".devscripts" : SALSA_RENAME_HEAD (yes/no)
Valeur ".devscripts" : SALSA_SOURCE_BRANCH
Valeur ".devscripts" : SALSA_DEST_BRANCH
Valeur ".devscripts" : SALSA_TAGPENDING (yes/ignore/no, défaut : ignore)
0 1 * * *.
Si --mr-dst-project est mis à same, salsa utilisera le projet source comme destination.
Valeur ".devscripts" : SALSA_MR_ALLOW_SQUASH (yes/no)
Valeur ".devscripts" : SALSA_MR_REMOVE_SOURCE_BRANCH (yes/no)
Valeur ".devscripts" : SALSA_API_URL
Valeur ".devscripts" : SALSA_GIT_SERVER_URL
Valeur ".devscripts" : SALSA_IRKER_SERVER_URL
Valeur ".devscripts" : SALSA_KGB_SERVER_URL
Valeur ".devscripts" : SALSA_TAGPENDING_SERVER_URL
Exemple de fichier de configuration
Exemple pour utiliser salsa avec <https://gitlab.ow2.org> (groupe "lemonldap-ng"):
SALSA_TOKEN=`cat ~/.ow2-gitlab-token` SALSA_API_URL=https://gitlab.ow2.org/api/v4 SALSA_GIT_SERVER_URL=git@gitlab.ow2.org: SALSA_GROUP_ID=34
Ensuite pour l'utiliser, ajouter quelque chose comme suit dans votre fichier ".bashrc" :
alias llng_admin='salsa --conffile ~/.salsa-ow2.conf'
dpt-salsa
Xavier Guimard <yadd@debian.org>
Droits d'auteur (C) 2018, Xavier Guimard <yadd@debian.org>
Il contient du code copié depuis dpt-salsa (pkg-perl-tools), droits d'auteur (C) 2018, gregor herrmann <gregoa@debian.org>.
Ce programme est un logiciel libre ; il est permis de le distribuer et/ou de le modifier selon les termes de la GNU General Public License, telle que publiée par la Free Software Foundation, version 2 ou ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, voir <http://www.gnu.org/licenses/>.
Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>, 2006
Thomas Huriaux <thomas.huriaux@gmail.com>, 2006
David Prévot <david@tilapin.org>, 2010-2013
Xavier Guimard <yadd@debian.org>, 2018-2021
2023-12-12 | Utilitaires Debian |