Stella

Déployer un site statique avec GitLabCI

Dans cet article, nous allons voir comment automatiser la mise à jour de son site avec GitLabCI.

Un site statique permet de présenter un même contenu fixe à tous les visiteurs. Il est généralement utilisé pour présenter un produit ou une marque et est plutôt simple à mettre en ligne. En effet, il suffit de mettre les fichiers sur un serveur et de les rendre accessibles via un serveur web, comme Nginx par exemple.

Une fois créé et mis en ligne, il arrive un moment où l'on va vouloir modifier ce site. On va alors effectuer les changements sur les fichiers concernés, puis il faut penser à aller les mettre à jour sur le serveur.

Et cette mise à jour peut se révéler fastidieuse. Ce n'est pas particulièrement intéressant et on risque d'oublier des choses. C'est pourquoi, utiliser un outil, comme GitLabCI, pour faire cette étape à notre place se révèle utile.

Ingrédients

  • un projet sur GitLab qui contient les fichiers sources
  • un accès au serveur cible

Préparation

Étape 1

Sur le serveur, générer une clé ssh en utilisant la commande ssh-keygen.

Étape 2

Sur GitLab, dans les paramètres pour l’intégration continue, rajouter une variable qui contient le contenu de la clé privée générée à l’étape précédente.

Étape 3

Dans le projet, créez un fichier .gitlab-ci.yml. Ce fichier va permettre d’indiquer les actions à effectuer pour déployer le site.

deploy:
  image: ubuntu
  before_script:
    ##
    ## Installation du ssh-agent, nécessaire pour Docker
    ##
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'

    ##
    ## Lancement du ssh-agent
    ##
    - eval $(ssh-agent -s)

    ##
    ## Ajout de la clé ssh stockée à l'étape 2
    ##
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -

    ##
    ## Création du dossier ssh et mise des permissions
    ##
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh

    ##
    ## Scan des clés du serveur cible
    ##
    - ssh-keyscan -p <port> <server_url> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts

  script:
    ## Connection au serveur et mise à jour du dossier du projet
    - ssh <user>@<server_url> -p <port> "cd <path_to_project_directory> && git pull && exit"

Étape 4

Mettre gitlab.com dans la liste des hôtes connus sur le serveur cible avec la commande ssh-keyscan -t rsa gitlab.com >>> .ssh/known_hosts.

Mettre la clé publique créée à l’étape 2 dans la liste des clés autorisées dans .ssh/authorized_keys.

Et voilà, le site sera désormais mis à jour à chaque nouvelle modification !