Aller au contenu

Gitlab ISIMA / LIMOS

Url de la forge dédiée à la pédagogie

https://gitlab.isima.fr

Url de la forge dédiée à la recherche

https://gitlab.limos.fr

Prise en main

Pour bien démarrer avec Gitlab, vous pouvez lire le post du CRI ISIMA/LIMOS

Qui peut se connecter au Gitlab?

Tous les utilisateurs de l'Active Directory (compte windows / impression) peuvent se connecter sur https://gitlab.isima.fr.

Associer des utilisateurs externes à un projet

Il est possible d'affecter des utilisateurs externes à un projet gitlab (péda ou rcherche) existant. Procédure :

  • Création d'un compte local dans notre infra : à faire soi-même ou en rédigeant un ticket en donnant nom, prénom, mail, et besoin (VPN, Gitlab recherche, ...) de l'utilisateur
  • Une fois le compte créé et l'utilisateur notifié des identifiants de son compte, il doit se connecter une première fois sur Gitlab puis vous en avertir
  • Son user étant créé dans Gitlab, vous pourrez alors l'intégrer comme membre d'un projet. Onglet Project Information/members et cliquez sur le bouton Invite members à droite, le rechercher par son nom ou username et précisez correctement son rôle.

Gitlab et l'intégration continue

Gitlab permet de faire de l'intégration continue et notamment de déployer automatiquement sur une machine dès qu'une modification est faite sur le repo Gitlab

Pour cela , éditer à la racine du projet un fichier gitlab-ci.yml qui peut ressembler à cela

image: ubuntu:xenial                  # On specifie l'OS de la machine

before_script:                        # A executer avant le script
  - apt-get update                    # update puis install de l'outil rsync et openssh et config openssh
  - apt-get --yes --force-yes install rsync
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  # cette derniere ligne permet d'ajouter la cle SSH privee se trouvant dans vos variables d'environnement

# On cree ci-dessous une etape (stage) nommee deploy qui va synchroniser le repo avec votre VM  
# Tous le contenu sera supprimé et remis sauf les fichiers gitlab-ci et README
deploy_prod:
  stage: deploy                        
  script:
    - echo "deploy my_site_web"
    - rsync -av --exclude='.gitlab-ci.yml' --exclude='README.md' --delete . $PROD_USERNAME@$PROD_HOST:$PROD_ISP_PATH/

Ce fichier sera éxécuté à chaque commit de n'importe quel fichier du repo. Un runner Gitlab permettra de créer une image reconstruite de la machine en utilisant la technologie Docker

Il est intéressant d'utiliser des variables d'environnement qui ont vocation à rester cachées, elles commencent par $ dans le fichier gitlab-ci

On édite ces variables dans "Paramètres/Integration et livraison continue"

Pour l'exemple ci-dessus, on trouverait cela dans les variable d'environnement

var_environ

Enfin, vous pouvez voir que votre CI se déroule bien dans "Integration et livraison continue/Pipelines"

Patch gitlab-ci

Sur le Gitlab du Limos , la CI peut ne pas fonctionner car la vérification SSL ne passe pas.

Il faut patcher votre fichier gitlab-ci.yml en rajoutant une variable GIT_SSL_NO_VERIFY à True

image: ubuntu:xenial

variables:
  GIT_SSL_NO_VERIFY: "1"

before_script:
  - apt-get update
  - ...

Annexe

## Autres forges institutionnelles

La forge de l'UCA fermera à l'été 2023 et tous les projets qui y sont disparaitront. Si vous en avez, vous devez les migrer.

Url de la forge de Renater : SourceSup

https://sourcesup.renater.fr/