Ceci est une ancienne révision du document !
Table des matières
travis.yml
Hello world
Cas basique commenté
# Language de programmation. On ne peut en sélectionner qu'un seul à la fois. language: cpp # Les éventuels services. Ici Docker. # Parfois, il faut utiliser l'installation via apt, parfois par services, au cas par cas. # Voir https://docs.travis-ci.com/user/database-setup/ pour quelques exemples. services: - docker # Version de la distribution ubuntu. # Pour la liste des versions disponibles : https://docs.travis-ci.com/user/reference/linux/ # Généralement, il n'y a que les version LTS et la dernière est souvent manquante. dist: bionic # Toute première étape : l'installation automatique des paquets. addons: apt: sources: # Ici, je force l'utilisation de la dernière version du système d'exploitation. # Ne pas faire un apt-get dist-upgrade. Ca prend beaucoup de bande passante, de temps et risque de générer un système pas très stable. # Il est préférable d'indiquer un par un la liste des packets à mettre à jour. - sourceline: 'deb http://archive.ubuntu.com/ubuntu/ focal main universe' packages: - cppcheck # Généralement, on met dans before_install tout ce qu'il faut installer (images docker et packets). before_install: - docker pull clangbuiltlinux/ubuntu:latest - docker run --rm clangbuiltlinux/ubuntu:latest clang++-11 --version - cppcheck --version - clang-format --version # Ici, c'est tous les scripts à exécuter. # Ils seront tous exécuté jusqu'au dernier. # Si l'un renvoie un code d'erreur, l'ensemble sera considéré comme failure. # Ici, tout est mis en vrac. Mais il est aussi possible de mettre les commandes dans un script bash. script: - mkdir buildcppgcc; cd buildcppgcc - CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 CXXFLAGS="-Wall -Werror -Wextra -Wpedantic -fanalyzer -O2" cmake ../cpp - make - cppcheck --inconclusive --enable=all --check-config --project=compile_commands.json - iwyu_tool -p . > iwyu_tool.log; if [ $(cat iwyu_tool.log |grep -e "should add these lines" -e "should remove these lines" | wc -l) -ne "0" ]; then cat iwyu_tool.log ; exit 1; fi - cd ..
Ordre d'exécution des commandes
OPTIONAL Install apt addons OPTIONAL Install cache components before_install install before_script script OPTIONAL before_cache (if and only if caching is effective) after_success or after_failure OPTIONAL before_deploy (if and only if deployment is active) OPTIONAL deploy OPTIONAL after_deploy (if and only if deployment is active) after_script
Lignes de commande
Installation
Il faut l'installer et aussi s'identifier.
gem install travis travis login --com
Stockage sécurisé
Chiffrer un fichier automatiquement
Encrypting Files Archive le 04/04/2020
travis encrypt-file file_to_encrypt.key --add --com
Cela va créer un mot de passe automatiquement, l'ajouter aux variables d'environnement de travis, chiffrer le fichier et ajouter les commandes openssl
pour déchiffrer le fichier.
Sous Windows, cette technique souffre d'un bug. File decryption fails (wrong final block length) on Windows Archive du 03/09/2015 le 04/04/2020
Il faut alors utiliser la méthode manuelle avec OpenSSL
.
Chiffrer un fichier manuellement
- Définition du mot de passe
On commence par ajouter le mot de passe en chiffré dans .travis.yml
. La commande doit être exécutée depuis le dossier contenant le fichier.
travis encrypt --pro PASSWORD_OPENSSL="123456789"
et accepter les modifications.
travis encrypt --add
reformat le fichier, supprimer les commentaires.
Using travis encrypt --add strips all comments from .travis.yml / comment best practices Archive du 20/02/2018 le 28/06/2020
On peut ajouter la variable d'environnement à tous les jobs :
env: global: - secure: "..."
ou à un seul job :
jobs: include: - language: cpp env: - secure: "..."
- Chiffrement d'un fichier
Les options par défaut ne sont plus sécurisées (openssl
répond *** WARNING : deprecated key derivation used.
), d'où les options complémentaires -md sha512 -pbkdf2 -iter 100000
.
openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$PASSWORD_OPENSSL" -in travis/github-travis-doc.key -out travis/github-travis-doc.key.enc
Et pour déchiffrer depuis .travis.yml
, il faut inverser -in
et -out
et ajouter un -d
.
before_install: - openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$PASSWORD_OPENSSL" -out travis/github-travis-doc.key -in travis/github-travis-doc.key.enc -d
Modules
- Asciidoc
Voir la page Asciidoc dédiée.
Messages d'erreurs
Shell completion not installed. Would you like to install it now?
Peut apparaître si l'OS est minimaliste, ce qui est le cas des images Ubuntu de Travis.
Il suffit de désactiver le mode interactif :
travis lint $f -x --no-interactive